@tedi-design-system/angular 3.0.0-rc.1
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 +44 -0
- package/community/components/cards/accordion/accordion/accordion.component.d.ts +22 -0
- package/community/components/cards/accordion/accordion/accordion.component.d.ts.map +1 -0
- package/community/components/cards/accordion/accordion-icon/accordion-icon.component.d.ts +7 -0
- package/community/components/cards/accordion/accordion-icon/accordion-icon.component.d.ts.map +1 -0
- package/community/components/cards/accordion/accordion-item/accordion-item.component.d.ts +20 -0
- package/community/components/cards/accordion/accordion-item/accordion-item.component.d.ts.map +1 -0
- package/community/components/cards/accordion/accordion-item-content/accordion-item-content.component.d.ts +12 -0
- package/community/components/cards/accordion/accordion-item-content/accordion-item-content.component.d.ts.map +1 -0
- package/community/components/cards/accordion/accordion-item-header/accordion-item-header.component.d.ts +42 -0
- package/community/components/cards/accordion/accordion-item-header/accordion-item-header.component.d.ts.map +1 -0
- package/community/components/cards/accordion/index.d.ts +6 -0
- package/community/components/cards/accordion/index.d.ts.map +1 -0
- package/community/components/cards/card/card-colors.directive.d.ts +13 -0
- package/community/components/cards/card/card-colors.directive.d.ts.map +1 -0
- package/community/components/cards/card/card-content/card-content.component.d.ts +25 -0
- package/community/components/cards/card/card-content/card-content.component.d.ts.map +1 -0
- package/community/components/cards/card/card-header/card-header.component.d.ts +14 -0
- package/community/components/cards/card/card-header/card-header.component.d.ts.map +1 -0
- package/community/components/cards/card/card-padding.directive.d.ts +21 -0
- package/community/components/cards/card/card-padding.directive.d.ts.map +1 -0
- package/community/components/cards/card/card-row/card-row.component.d.ts +11 -0
- package/community/components/cards/card/card-row/card-row.component.d.ts.map +1 -0
- package/community/components/cards/card/card.component.d.ts +30 -0
- package/community/components/cards/card/card.component.d.ts.map +1 -0
- package/community/components/cards/card/index.d.ts +7 -0
- package/community/components/cards/card/index.d.ts.map +1 -0
- package/community/components/cards/index.d.ts +3 -0
- package/community/components/cards/index.d.ts.map +1 -0
- package/community/components/form/checkbox/checkbox/checkbox.component.d.ts +38 -0
- package/community/components/form/checkbox/checkbox/checkbox.component.d.ts.map +1 -0
- package/community/components/form/checkbox/checkbox-card-group/checkbox-card-group.component.d.ts +22 -0
- package/community/components/form/checkbox/checkbox-card-group/checkbox-card-group.component.d.ts.map +1 -0
- package/community/components/form/checkbox/checkbox-group/checkbox-group.component.d.ts +23 -0
- package/community/components/form/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -0
- package/community/components/form/checkbox/index.d.ts +4 -0
- package/community/components/form/checkbox/index.d.ts.map +1 -0
- package/community/components/form/choicegroup/choicegroup.directive.d.ts +11 -0
- package/community/components/form/choicegroup/choicegroup.directive.d.ts.map +1 -0
- package/community/components/form/file-dropzone/constants.d.ts +13 -0
- package/community/components/form/file-dropzone/constants.d.ts.map +1 -0
- package/community/components/form/file-dropzone/file-dropzone.component.d.ts +133 -0
- package/community/components/form/file-dropzone/file-dropzone.component.d.ts.map +1 -0
- package/community/components/form/file-dropzone/file.service.d.ts +25 -0
- package/community/components/form/file-dropzone/file.service.d.ts.map +1 -0
- package/community/components/form/file-dropzone/index.d.ts +2 -0
- package/community/components/form/file-dropzone/index.d.ts.map +1 -0
- package/community/components/form/file-dropzone/types.d.ts +23 -0
- package/community/components/form/file-dropzone/types.d.ts.map +1 -0
- package/community/components/form/file-dropzone/utils.d.ts +7 -0
- package/community/components/form/file-dropzone/utils.d.ts.map +1 -0
- package/community/components/form/form-field/form-field.component.d.ts +6 -0
- package/community/components/form/form-field/form-field.component.d.ts.map +1 -0
- package/community/components/form/index.d.ts +11 -0
- package/community/components/form/index.d.ts.map +1 -0
- package/community/components/form/input/input.component.d.ts +19 -0
- package/community/components/form/input/input.component.d.ts.map +1 -0
- package/community/components/form/input-group/input-group.component.d.ts +38 -0
- package/community/components/form/input-group/input-group.component.d.ts.map +1 -0
- package/community/components/form/radio/index.d.ts +4 -0
- package/community/components/form/radio/index.d.ts.map +1 -0
- package/community/components/form/radio/radio/radio.component.d.ts +27 -0
- package/community/components/form/radio/radio/radio.component.d.ts.map +1 -0
- package/community/components/form/radio/radio-card-group/radio-card-group.component.d.ts +9 -0
- package/community/components/form/radio/radio-card-group/radio-card-group.component.d.ts.map +1 -0
- package/community/components/form/radio/radio-group/radio-group.component.d.ts +37 -0
- package/community/components/form/radio/radio-group/radio-group.component.d.ts.map +1 -0
- package/community/components/form/search/search.component.d.ts +115 -0
- package/community/components/form/search/search.component.d.ts.map +1 -0
- package/community/components/form/select/index.d.ts +4 -0
- package/community/components/form/select/index.d.ts.map +1 -0
- package/community/components/form/select/multiselect.component.d.ts +108 -0
- package/community/components/form/select/multiselect.component.d.ts.map +1 -0
- package/community/components/form/select/select-option.component.d.ts +26 -0
- package/community/components/form/select/select-option.component.d.ts.map +1 -0
- package/community/components/form/select/select.component.d.ts +77 -0
- package/community/components/form/select/select.component.d.ts.map +1 -0
- package/community/components/form/textarea/textarea.component.d.ts +17 -0
- package/community/components/form/textarea/textarea.component.d.ts.map +1 -0
- package/community/components/navigation/breadcrumbs/breadcrumbs.component.d.ts +48 -0
- package/community/components/navigation/breadcrumbs/breadcrumbs.component.d.ts.map +1 -0
- package/community/components/navigation/index.d.ts +4 -0
- package/community/components/navigation/index.d.ts.map +1 -0
- package/community/components/navigation/pagination/pagination-page/pagination-page.component.d.ts +10 -0
- package/community/components/navigation/pagination/pagination-page/pagination-page.component.d.ts.map +1 -0
- package/community/components/navigation/pagination/pagination.component.d.ts +20 -0
- package/community/components/navigation/pagination/pagination.component.d.ts.map +1 -0
- package/community/components/navigation/pagination/pagination.utils.d.ts +2 -0
- package/community/components/navigation/pagination/pagination.utils.d.ts.map +1 -0
- package/community/components/navigation/tabs/index.d.ts +4 -0
- package/community/components/navigation/tabs/index.d.ts.map +1 -0
- package/community/components/navigation/tabs/tab/tab.component.d.ts +21 -0
- package/community/components/navigation/tabs/tab/tab.component.d.ts.map +1 -0
- package/community/components/navigation/tabs/tab-content/tab-content.component.d.ts +9 -0
- package/community/components/navigation/tabs/tab-content/tab-content.component.d.ts.map +1 -0
- package/community/components/navigation/tabs/tabs.component.d.ts +19 -0
- package/community/components/navigation/tabs/tabs.component.d.ts.map +1 -0
- package/community/components/overlay/dropdown/dropdown-trigger/dropdown-trigger.directive.d.ts +20 -0
- package/community/components/overlay/dropdown/dropdown-trigger/dropdown-trigger.directive.d.ts.map +1 -0
- package/community/components/overlay/dropdown/dropdown.component.d.ts +20 -0
- package/community/components/overlay/dropdown/dropdown.component.d.ts.map +1 -0
- package/community/components/overlay/dropdown-item/dropdown-item.component.d.ts +35 -0
- package/community/components/overlay/dropdown-item/dropdown-item.component.d.ts.map +1 -0
- package/community/components/overlay/index.d.ts +5 -0
- package/community/components/overlay/index.d.ts.map +1 -0
- package/community/components/overlay/modal/footer/modal-footer.component.d.ts +23 -0
- package/community/components/overlay/modal/footer/modal-footer.component.d.ts.map +1 -0
- package/community/components/overlay/modal/header/modal-header.component.d.ts +15 -0
- package/community/components/overlay/modal/header/modal-header.component.d.ts.map +1 -0
- package/community/components/overlay/modal/index.d.ts +4 -0
- package/community/components/overlay/modal/index.d.ts.map +1 -0
- package/community/components/overlay/modal/modal.component.d.ts +23 -0
- package/community/components/overlay/modal/modal.component.d.ts.map +1 -0
- package/community/components/table/index.d.ts +2 -0
- package/community/components/table/index.d.ts.map +1 -0
- package/community/components/table/table-styles/table-styles.component.d.ts +11 -0
- package/community/components/table/table-styles/table-styles.component.d.ts.map +1 -0
- package/community/components/tags/index.d.ts +3 -0
- package/community/components/tags/index.d.ts.map +1 -0
- package/community/components/tags/status-badge/status-badge.component.d.ts +54 -0
- package/community/components/tags/status-badge/status-badge.component.d.ts.map +1 -0
- package/community/components/tags/tag/tag.component.d.ts +32 -0
- package/community/components/tags/tag/tag.component.d.ts.map +1 -0
- package/community/index.d.ts +7 -0
- package/community/index.d.ts.map +1 -0
- package/community/tedi-design-system-angular-community.d.ts.map +1 -0
- package/fesm2022/tedi-design-system-angular-community.mjs +2906 -0
- package/fesm2022/tedi-design-system-angular-community.mjs.map +1 -0
- package/fesm2022/tedi-design-system-angular-tedi.mjs +3135 -0
- package/fesm2022/tedi-design-system-angular-tedi.mjs.map +1 -0
- package/fesm2022/tedi-design-system-angular.mjs +6 -0
- package/fesm2022/tedi-design-system-angular.mjs.map +1 -0
- package/fonts/README.md +34 -0
- package/fonts/material-symbols-outlined.woff2 +0 -0
- package/fonts/material-symbols-rounded.woff2 +0 -0
- package/fonts/material-symbols-sharp.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-300-italic.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-300.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-400-italic.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-400.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-700-italic.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-700.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-ext-300-italic.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-ext-300.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-ext-400-italic.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-ext-400.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-ext-700-italic.woff2 +0 -0
- package/fonts/roboto-v30-cyrillic-ext-700.woff2 +0 -0
- package/fonts/roboto-v30-latin-300-italic.woff2 +0 -0
- package/fonts/roboto-v30-latin-300.woff2 +0 -0
- package/fonts/roboto-v30-latin-400-italic.woff2 +0 -0
- package/fonts/roboto-v30-latin-400.woff2 +0 -0
- package/fonts/roboto-v30-latin-700-italic.woff2 +0 -0
- package/fonts/roboto-v30-latin-700.woff2 +0 -0
- package/fonts/roboto-v30-latin-ext-300-italic.woff2 +0 -0
- package/fonts/roboto-v30-latin-ext-300.woff2 +0 -0
- package/fonts/roboto-v30-latin-ext-400-italic.woff2 +0 -0
- package/fonts/roboto-v30-latin-ext-400.woff2 +0 -0
- package/fonts/roboto-v30-latin-ext-700-italic.woff2 +0 -0
- package/fonts/roboto-v30-latin-ext-700.woff2 +0 -0
- package/index.css +1 -0
- package/index.d.ts +6 -0
- package/package.json +76 -0
- package/public-api.d.ts +3 -0
- package/public-api.d.ts.map +1 -0
- package/tedi/components/base/icon/icon.component.d.ts +47 -0
- package/tedi/components/base/icon/icon.component.d.ts.map +1 -0
- package/tedi/components/base/index.d.ts +3 -0
- package/tedi/components/base/index.d.ts.map +1 -0
- package/tedi/components/base/text/text.component.d.ts +20 -0
- package/tedi/components/base/text/text.component.d.ts.map +1 -0
- package/tedi/components/buttons/button/button.component.d.ts +25 -0
- package/tedi/components/buttons/button/button.component.d.ts.map +1 -0
- package/tedi/components/buttons/closing-button/closing-button.component.d.ts +24 -0
- package/tedi/components/buttons/closing-button/closing-button.component.d.ts.map +1 -0
- package/tedi/components/buttons/collapse/collapse.component.d.ts +37 -0
- package/tedi/components/buttons/collapse/collapse.component.d.ts.map +1 -0
- package/tedi/components/buttons/index.d.ts +5 -0
- package/tedi/components/buttons/index.d.ts.map +1 -0
- package/tedi/components/buttons/info-button/info-button.component.d.ts +6 -0
- package/tedi/components/buttons/info-button/info-button.component.d.ts.map +1 -0
- package/tedi/components/content/index.d.ts +3 -0
- package/tedi/components/content/index.d.ts.map +1 -0
- package/tedi/components/content/list/list.component.d.ts +18 -0
- package/tedi/components/content/list/list.component.d.ts.map +1 -0
- package/tedi/components/content/text-group/index.d.ts +4 -0
- package/tedi/components/content/text-group/index.d.ts.map +1 -0
- package/tedi/components/content/text-group/text-group-label.component.d.ts +6 -0
- package/tedi/components/content/text-group/text-group-label.component.d.ts.map +1 -0
- package/tedi/components/content/text-group/text-group-value.component.d.ts +6 -0
- package/tedi/components/content/text-group/text-group-value.component.d.ts.map +1 -0
- package/tedi/components/content/text-group/text-group.component.d.ts +30 -0
- package/tedi/components/content/text-group/text-group.component.d.ts.map +1 -0
- package/tedi/components/form/feedback-text/feedback-text.component.d.ts +25 -0
- package/tedi/components/form/feedback-text/feedback-text.component.d.ts.map +1 -0
- package/tedi/components/form/index.d.ts +5 -0
- package/tedi/components/form/index.d.ts.map +1 -0
- package/tedi/components/form/label/label.component.d.ts +18 -0
- package/tedi/components/form/label/label.component.d.ts.map +1 -0
- package/tedi/components/form/number-field/number-field.component.d.ts +86 -0
- package/tedi/components/form/number-field/number-field.component.d.ts.map +1 -0
- package/tedi/components/form/toggle/toggle.component.d.ts +61 -0
- package/tedi/components/form/toggle/toggle.component.d.ts.map +1 -0
- package/tedi/components/helpers/grid/col/col.component.d.ts +37 -0
- package/tedi/components/helpers/grid/col/col.component.d.ts.map +1 -0
- package/tedi/components/helpers/grid/index.d.ts +3 -0
- package/tedi/components/helpers/grid/index.d.ts.map +1 -0
- package/tedi/components/helpers/grid/row/row.component.d.ts +60 -0
- package/tedi/components/helpers/grid/row/row.component.d.ts.map +1 -0
- package/tedi/components/helpers/index.d.ts +4 -0
- package/tedi/components/helpers/index.d.ts.map +1 -0
- package/tedi/components/helpers/separator/separator.component.d.ts +57 -0
- package/tedi/components/helpers/separator/separator.component.d.ts.map +1 -0
- package/tedi/components/helpers/timeline/index.d.ts +5 -0
- package/tedi/components/helpers/timeline/index.d.ts.map +1 -0
- package/tedi/components/helpers/timeline/timeline-description/timeline-description.component.d.ts +6 -0
- package/tedi/components/helpers/timeline/timeline-description/timeline-description.component.d.ts.map +1 -0
- package/tedi/components/helpers/timeline/timeline-item/timeline-item.component.d.ts +19 -0
- package/tedi/components/helpers/timeline/timeline-item/timeline-item.component.d.ts.map +1 -0
- package/tedi/components/helpers/timeline/timeline-title/timeline-title.component.d.ts +6 -0
- package/tedi/components/helpers/timeline/timeline-title/timeline-title.component.d.ts.map +1 -0
- package/tedi/components/helpers/timeline/timeline.component.d.ts +12 -0
- package/tedi/components/helpers/timeline/timeline.component.d.ts.map +1 -0
- package/tedi/components/index.d.ts +11 -0
- package/tedi/components/index.d.ts.map +1 -0
- package/tedi/components/layout/footer/footer-body/footer-body.component.d.ts +9 -0
- package/tedi/components/layout/footer/footer-body/footer-body.component.d.ts.map +1 -0
- package/tedi/components/layout/footer/footer-bottom/footer-bottom.component.d.ts +19 -0
- package/tedi/components/layout/footer/footer-bottom/footer-bottom.component.d.ts.map +1 -0
- package/tedi/components/layout/footer/footer-section/footer-section.component.d.ts +26 -0
- package/tedi/components/layout/footer/footer-section/footer-section.component.d.ts.map +1 -0
- package/tedi/components/layout/footer/footer-side/footer-side.component.d.ts +21 -0
- package/tedi/components/layout/footer/footer-side/footer-side.component.d.ts.map +1 -0
- package/tedi/components/layout/footer/footer.component.d.ts +9 -0
- package/tedi/components/layout/footer/footer.component.d.ts.map +1 -0
- package/tedi/components/layout/footer/index.d.ts +6 -0
- package/tedi/components/layout/footer/index.d.ts.map +1 -0
- package/tedi/components/layout/header/header-actions/header-actions.component.d.ts +6 -0
- package/tedi/components/layout/header/header-actions/header-actions.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header-content/header-content.component.d.ts +6 -0
- package/tedi/components/layout/header/header-content/header-content.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header-language/header-language.component.d.ts +25 -0
- package/tedi/components/layout/header/header-language/header-language.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header-login/header-login.component.d.ts +14 -0
- package/tedi/components/layout/header/header-login/header-login.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header-logout/header-logout.component.d.ts +10 -0
- package/tedi/components/layout/header/header-logout/header-logout.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header-profile/header-profile.component.d.ts +20 -0
- package/tedi/components/layout/header/header-profile/header-profile.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header-role/header-role.component.d.ts +40 -0
- package/tedi/components/layout/header/header-role/header-role.component.d.ts.map +1 -0
- package/tedi/components/layout/header/header.component.d.ts +6 -0
- package/tedi/components/layout/header/header.component.d.ts.map +1 -0
- package/tedi/components/layout/header/index.d.ts +9 -0
- package/tedi/components/layout/header/index.d.ts.map +1 -0
- package/tedi/components/layout/index.d.ts +4 -0
- package/tedi/components/layout/index.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/index.d.ts +9 -0
- package/tedi/components/layout/sidenav/index.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.d.ts +15 -0
- package/tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.d.ts +6 -0
- package/tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.d.ts +20 -0
- package/tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.d.ts +6 -0
- package/tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.d.ts +37 -0
- package/tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-overlay/sidenav-overlay.component.d.ts +10 -0
- package/tedi/components/layout/sidenav/sidenav-overlay/sidenav-overlay.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.d.ts +13 -0
- package/tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.d.ts.map +1 -0
- package/tedi/components/layout/sidenav/sidenav.component.d.ts +30 -0
- package/tedi/components/layout/sidenav/sidenav.component.d.ts.map +1 -0
- package/tedi/components/loader/index.d.ts +2 -0
- package/tedi/components/loader/index.d.ts.map +1 -0
- package/tedi/components/loader/spinner/spinner.component.d.ts +24 -0
- package/tedi/components/loader/spinner/spinner.component.d.ts.map +1 -0
- package/tedi/components/navigation/index.d.ts +2 -0
- package/tedi/components/navigation/index.d.ts.map +1 -0
- package/tedi/components/navigation/link/link.component.d.ts +42 -0
- package/tedi/components/navigation/link/link.component.d.ts.map +1 -0
- package/tedi/components/notifications/alert/alert.component.d.ts +64 -0
- package/tedi/components/notifications/alert/alert.component.d.ts.map +1 -0
- package/tedi/components/notifications/index.d.ts +2 -0
- package/tedi/components/notifications/index.d.ts.map +1 -0
- package/tedi/components/overlay/index.d.ts +3 -0
- package/tedi/components/overlay/index.d.ts.map +1 -0
- package/tedi/components/overlay/popover/index.d.ts +4 -0
- package/tedi/components/overlay/popover/index.d.ts.map +1 -0
- package/tedi/components/overlay/popover/popover-content/popover-content.component.d.ts +25 -0
- package/tedi/components/overlay/popover/popover-content/popover-content.component.d.ts.map +1 -0
- package/tedi/components/overlay/popover/popover-trigger/popover-trigger.component.d.ts +10 -0
- package/tedi/components/overlay/popover/popover-trigger/popover-trigger.component.d.ts.map +1 -0
- package/tedi/components/overlay/popover/popover.component.d.ts +44 -0
- package/tedi/components/overlay/popover/popover.component.d.ts.map +1 -0
- package/tedi/components/overlay/tooltip/index.d.ts +4 -0
- package/tedi/components/overlay/tooltip/index.d.ts.map +1 -0
- package/tedi/components/overlay/tooltip/tooltip-content.component.d.ts +21 -0
- package/tedi/components/overlay/tooltip/tooltip-content.component.d.ts.map +1 -0
- package/tedi/components/overlay/tooltip/tooltip-trigger.component.d.ts +11 -0
- package/tedi/components/overlay/tooltip/tooltip-trigger.component.d.ts.map +1 -0
- package/tedi/components/overlay/tooltip/tooltip.component.d.ts +48 -0
- package/tedi/components/overlay/tooltip/tooltip.component.d.ts.map +1 -0
- package/tedi/directives/hide-at/hide-at.directive.d.ts +11 -0
- package/tedi/directives/hide-at/hide-at.directive.d.ts.map +1 -0
- package/tedi/directives/index.d.ts +4 -0
- package/tedi/directives/index.d.ts.map +1 -0
- package/tedi/directives/show-at/show-at.directive.d.ts +11 -0
- package/tedi/directives/show-at/show-at.directive.d.ts.map +1 -0
- package/tedi/directives/vertical-spacing/index.d.ts +3 -0
- package/tedi/directives/vertical-spacing/index.d.ts.map +1 -0
- package/tedi/directives/vertical-spacing/vertical-spacing-item.directive.d.ts +13 -0
- package/tedi/directives/vertical-spacing/vertical-spacing-item.directive.d.ts.map +1 -0
- package/tedi/directives/vertical-spacing/vertical-spacing.directive.d.ts +13 -0
- package/tedi/directives/vertical-spacing/vertical-spacing.directive.d.ts.map +1 -0
- package/tedi/helpers/generate-uuid.d.ts +8 -0
- package/tedi/helpers/generate-uuid.d.ts.map +1 -0
- package/tedi/helpers/index.d.ts +2 -0
- package/tedi/helpers/index.d.ts.map +1 -0
- package/tedi/index.d.ts +6 -0
- package/tedi/index.d.ts.map +1 -0
- package/tedi/services/breakpoint/breakpoint.service.d.ts +28 -0
- package/tedi/services/breakpoint/breakpoint.service.d.ts.map +1 -0
- package/tedi/services/index.d.ts +4 -0
- package/tedi/services/index.d.ts.map +1 -0
- package/tedi/services/sidenav/sidenav.service.d.ts +20 -0
- package/tedi/services/sidenav/sidenav.service.d.ts.map +1 -0
- package/tedi/services/translation/translation.pipe.d.ts +10 -0
- package/tedi/services/translation/translation.pipe.d.ts.map +1 -0
- package/tedi/services/translation/translation.service.d.ts +16 -0
- package/tedi/services/translation/translation.service.d.ts.map +1 -0
- package/tedi/services/translation/translations.d.ts +538 -0
- package/tedi/services/translation/translations.d.ts.map +1 -0
- package/tedi/tedi-design-system-angular-tedi.d.ts.map +1 -0
- package/tedi/types/index.d.ts +2 -0
- package/tedi/types/index.d.ts.map +1 -0
- package/tedi/types/inputs.type.d.ts +5 -0
- package/tedi/types/inputs.type.d.ts.map +1 -0
- package/tedi-design-system-angular.d.ts.map +1 -0
|
@@ -0,0 +1,2906 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, computed, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component, signal, contentChildren, effect, booleanAttribute, inject, model, forwardRef, viewChild, output, TemplateRef, Injector, contentChild, ElementRef, HostListener, Injectable } from '@angular/core';
|
|
3
|
+
import { IconComponent, ButtonComponent, generateUUID, FeedbackTextComponent, LabelComponent, BreakpointService, ClosingButtonComponent, TextComponent, TediTranslationPipe, SpinnerComponent, TediTranslationService, TooltipComponent, TooltipTriggerComponent, TooltipContentComponent, InfoButtonComponent, VerticalSpacingDirective, LinkComponent } from '@tedi-design-system/angular/tedi';
|
|
4
|
+
import * as i1$1 from '@angular/forms';
|
|
5
|
+
import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import * as i2 from '@angular/cdk/overlay';
|
|
7
|
+
import { CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
|
|
8
|
+
import * as i3 from '@angular/cdk/listbox';
|
|
9
|
+
import { CdkListbox, CdkListboxModule } from '@angular/cdk/listbox';
|
|
10
|
+
import { FocusKeyManager, A11yModule } from '@angular/cdk/a11y';
|
|
11
|
+
import { DialogRef, DIALOG_DATA, DialogModule } from '@angular/cdk/dialog';
|
|
12
|
+
import { CdkScrollable } from '@angular/cdk/scrolling';
|
|
13
|
+
import * as i1 from '@angular/common';
|
|
14
|
+
import { NgStyle, CommonModule } from '@angular/common';
|
|
15
|
+
import * as i2$1 from '@angular/cdk/menu';
|
|
16
|
+
import { CdkMenu, CdkMenuModule } from '@angular/cdk/menu';
|
|
17
|
+
import * as i1$2 from '@angular/router';
|
|
18
|
+
import { RouterLink, RouterLinkActive } from '@angular/router';
|
|
19
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
20
|
+
import { startWith } from 'rxjs';
|
|
21
|
+
|
|
22
|
+
class CardColorsDirective {
|
|
23
|
+
/**
|
|
24
|
+
* Modifies background of the block it's attached to.
|
|
25
|
+
*/
|
|
26
|
+
background = input();
|
|
27
|
+
border = input();
|
|
28
|
+
modifierClasses = computed(() => {
|
|
29
|
+
const modifiers = [];
|
|
30
|
+
if (this.background()) {
|
|
31
|
+
modifiers.push(`tedi-card--background--${this.background()}`);
|
|
32
|
+
}
|
|
33
|
+
if (this.border()) {
|
|
34
|
+
modifiers.push(`tedi-card--border--${this.border()}`);
|
|
35
|
+
}
|
|
36
|
+
return modifiers.join(" ");
|
|
37
|
+
});
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardColorsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
39
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: CardColorsDirective, isStandalone: true, inputs: { background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "modifierClasses()" } }, ngImport: i0 });
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardColorsDirective, decorators: [{
|
|
42
|
+
type: Directive,
|
|
43
|
+
args: [{
|
|
44
|
+
standalone: true,
|
|
45
|
+
host: {
|
|
46
|
+
"[class]": "modifierClasses()",
|
|
47
|
+
},
|
|
48
|
+
}]
|
|
49
|
+
}] });
|
|
50
|
+
|
|
51
|
+
const getPaddingClasses = (padding) => {
|
|
52
|
+
if (typeof padding === "string") {
|
|
53
|
+
return `tedi-card--padding-${padding}`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return Object.entries(padding)
|
|
57
|
+
.map(([direction, padding]) => {
|
|
58
|
+
return `tedi-card--padding-${direction}-${padding}`;
|
|
59
|
+
})
|
|
60
|
+
.join(" ");
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
class CardPaddingDirective {
|
|
64
|
+
/**
|
|
65
|
+
* Modifies padding of the block it's attached to. Can be override whole block or horizontal, vertical or each side separately.
|
|
66
|
+
*/
|
|
67
|
+
padding = input();
|
|
68
|
+
modifierClasses = computed(() => {
|
|
69
|
+
if (this.padding()) {
|
|
70
|
+
return getPaddingClasses(this.padding());
|
|
71
|
+
}
|
|
72
|
+
return "";
|
|
73
|
+
});
|
|
74
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardPaddingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
75
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: CardPaddingDirective, isStandalone: true, inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "modifierClasses()" } }, ngImport: i0 });
|
|
76
|
+
}
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardPaddingDirective, decorators: [{
|
|
78
|
+
type: Directive,
|
|
79
|
+
args: [{
|
|
80
|
+
standalone: true,
|
|
81
|
+
host: {
|
|
82
|
+
"[class]": "modifierClasses()",
|
|
83
|
+
},
|
|
84
|
+
}]
|
|
85
|
+
}] });
|
|
86
|
+
|
|
87
|
+
class CardComponent {
|
|
88
|
+
/**
|
|
89
|
+
* Whether card should not have border.
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
borderless = input();
|
|
93
|
+
/**
|
|
94
|
+
* Sets padding for header and content block.
|
|
95
|
+
* @default md
|
|
96
|
+
*/
|
|
97
|
+
spacing = input("md");
|
|
98
|
+
/**
|
|
99
|
+
* Creates colored accent left border.
|
|
100
|
+
*/
|
|
101
|
+
accentBorder = input();
|
|
102
|
+
/**
|
|
103
|
+
* Whether card should have selected border.
|
|
104
|
+
* @default false
|
|
105
|
+
*/
|
|
106
|
+
selected = input();
|
|
107
|
+
modifierClasses = computed(() => {
|
|
108
|
+
const modifiers = [`tedi-card--spacing-${this.spacing()}`];
|
|
109
|
+
if (this.accentBorder()) {
|
|
110
|
+
modifiers.push(`tedi-card--accent-border`, `tedi-card--accent-border--${this.accentBorder()}`);
|
|
111
|
+
}
|
|
112
|
+
return modifiers.join(" ");
|
|
113
|
+
});
|
|
114
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardComponent, isStandalone: true, selector: "tedi-card", inputs: { borderless: { classPropertyName: "borderless", publicName: "borderless", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, accentBorder: { classPropertyName: "accentBorder", publicName: "accentBorder", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card": "true", "class.tedi-card--borderless": "borderless()", "class.tedi-card--selected": "selected()", "class": "modifierClasses()" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background", "border", "border"] }, { directive: CardPaddingDirective, inputs: ["padding", "padding"] }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card{--_card-border: var(--card-border-primary);--_card-selected-border: var(--card-border-selected);--_card-bg: var(--card-background-primary);--_card-timeline-color: var(--general-border-accent);border-radius:var(--_card-radius);display:flex;flex-direction:column;position:relative}.tedi-card{--_card-radius: var(--card-radius-rounded-mobile)}@media (min-width: 576px){.tedi-card{--_card-radius: var(--card-radius-rounded-tablet)}}@media (min-width: 992px){.tedi-card{--_card-radius: var(--card-radius-rounded-desktop)}}.tedi-card--background--accent{--_card-bg: var(--card-background-accent)}.tedi-card--border--accent{--_card-border: var(--card-background-accent)}.tedi-card--background--brand-primary{--_card-bg: var(--card-background-brand-primary)}.tedi-card--border--brand-primary{--_card-border: var(--card-background-brand-primary)}.tedi-card--background--brand-secondary{--_card-bg: var(--card-background-brand-secondary)}.tedi-card--border--brand-secondary{--_card-border: var(--card-background-brand-secondary)}.tedi-card--background--brand-tertiary{--_card-bg: var(--card-background-brand-tertiary)}.tedi-card--border--brand-tertiary{--_card-border: var(--card-background-brand-tertiary)}.tedi-card--background--brand-quaternary{--_card-bg: var(--card-background-brand-quaternary)}.tedi-card--border--brand-quaternary{--_card-border: var(--card-background-brand-quaternary)}.tedi-card--background--primary{--_card-bg: var(--card-background-primary)}.tedi-card--border--primary{--_card-border: var(--card-background-primary)}.tedi-card--background--secondary{--_card-bg: var(--card-background-secondary)}.tedi-card--border--secondary{--_card-border: var(--card-background-secondary)}.tedi-card--background--tertiary{--_card-bg: var(--card-background-tertiary)}.tedi-card--border--tertiary{--_card-border: var(--card-background-tertiary)}.tedi-card--background--info-primary{--_card-bg: var(--general-status-info-background-light)}.tedi-card--border--info-primary{--_card-border: var(--general-status-info-background-light)}.tedi-card--background--info-secondary{--_card-bg: var(--general-status-info-background-dark)}.tedi-card--border--info-secondary{--_card-border: var(--general-status-info-background-dark)}.tedi-card--background--neutral-primary{--_card-bg: var(--general-status-neutral-background-light)}.tedi-card--border--neutral-primary{--_card-border: var(--general-status-neutral-background-light)}.tedi-card--background--neutral-secondary{--_card-bg: var(--general-status-neutral-background-dark)}.tedi-card--border--neutral-secondary{--_card-border: var(--general-status-neutral-background-dark)}.tedi-card--background--success-primary{--_card-bg: var(--card-background-success)}.tedi-card--border--success-primary{--_card-border: var(--card-background-success)}.tedi-card--background--success-secondary{--_card-bg: var(--general-status-success-background-secondary)}.tedi-card--border--success-secondary{--_card-border: var(--general-status-success-background-secondary)}.tedi-card--background--danger-primary{--_card-bg: var(--general-status-danger-background-primary)}.tedi-card--border--danger-primary{--_card-border: var(--general-status-danger-background-primary)}.tedi-card--background--danger-secondary{--_card-bg: var(--general-status-danger-background-secondary)}.tedi-card--border--danger-secondary{--_card-border: var(--general-status-danger-background-secondary)}.tedi-card--background--warning-primary{--_card-bg: var(--general-status-warning-background-light)}.tedi-card--border--warning-primary{--_card-border: var(--general-status-warning-background-light)}.tedi-card--background--warning-secondary{--_card-bg: var(--general-status-warning-background-dark)}.tedi-card--border--warning-secondary{--_card-border: var(--general-status-warning-background-dark)}.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--spacing-none{--_card-padding: 0}.tedi-card{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal)}.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-desktop)}}.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-desktop)}}.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-desktop)}}.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-desktop)}}.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-desktop)}}.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-desktop)}}.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-desktop)}}.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-desktop)}}.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-desktop)}}.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-desktop)}}.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-desktop)}}.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-desktop)}}.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-desktop)}}.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-desktop)}}.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-desktop)}}.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-desktop)}}.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-desktop)}}.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-desktop)}}.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-desktop)}}.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-desktop)}}.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-desktop)}}.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-desktop)}}.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-desktop)}}.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-desktop)}}.tedi-card--padding-none{--_card-padding: 0}.tedi-card--padding-vertical-none{--_card-padding-vertical: 0}.tedi-card--padding-horizontal-none{--_card-padding-horizontal: 0}.tedi-card--padding-top-none{--_card-padding-top: 0}.tedi-card--padding-bottom-none{--_card-padding-bottom: 0}.tedi-card--padding-left-none{--_card-padding-left: 0}.tedi-card--padding-right-none{--_card-padding-right: 0}.tedi-card--accent-border:before{content:\"\";display:block;position:absolute;left:0;top:0;bottom:0;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius);border-left:4px solid var(--_card-border-accent)}.tedi-card--accent-border--info{--_card-border-accent: var(--general-status-info-background-dark)}.tedi-card--accent-border--success{--_card-border-accent: var(--general-status-success-background-secondary)}.tedi-card--accent-border--warning{--_card-border-accent: var(--general-status-warning-background-dark)}.tedi-card--accent-border--danger{--_card-border-accent: var(--general-status-danger-background-secondary)}.tedi-card>.tedi-card-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:not(:first-child){border-top:transparent}.tedi-card>.tedi-card-content:not(.tedi-card-content--has-separator,:last-child){border-bottom:transparent}.tedi-card>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:last-child{border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row>.tedi-card-content:not(:first-child){border-left:transparent}.tedi-card>.tedi-card-row>.tedi-card-content:not(:last-child,.tedi-card-content--has-separator){border-right:transparent}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:last-child{border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:first-child{border-bottom-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:last-child{border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:not(:first-child)>.tedi-card-content{border-top:transparent}.tedi-card>.tedi-card-row:not(:last-child,.tedi-card-row--has-separator)>.tedi-card-content{border-bottom:transparent}.tedi-card--selected{outline:1px solid var(--_card-selected-border);outline-offset:-1px}.tedi-card--borderless{--_card-border: transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
116
|
+
}
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardComponent, decorators: [{
|
|
118
|
+
type: Component,
|
|
119
|
+
args: [{ selector: "tedi-card", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
120
|
+
"[class.tedi-card]": "true",
|
|
121
|
+
"[class.tedi-card--borderless]": "borderless()",
|
|
122
|
+
"[class.tedi-card--selected]": "selected()",
|
|
123
|
+
"[class]": "modifierClasses()",
|
|
124
|
+
}, hostDirectives: [
|
|
125
|
+
{
|
|
126
|
+
directive: CardColorsDirective,
|
|
127
|
+
inputs: ["background", "border"],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
directive: CardPaddingDirective,
|
|
131
|
+
inputs: ["padding"],
|
|
132
|
+
},
|
|
133
|
+
], template: "<ng-content></ng-content>\n", styles: [".tedi-card{--_card-border: var(--card-border-primary);--_card-selected-border: var(--card-border-selected);--_card-bg: var(--card-background-primary);--_card-timeline-color: var(--general-border-accent);border-radius:var(--_card-radius);display:flex;flex-direction:column;position:relative}.tedi-card{--_card-radius: var(--card-radius-rounded-mobile)}@media (min-width: 576px){.tedi-card{--_card-radius: var(--card-radius-rounded-tablet)}}@media (min-width: 992px){.tedi-card{--_card-radius: var(--card-radius-rounded-desktop)}}.tedi-card--background--accent{--_card-bg: var(--card-background-accent)}.tedi-card--border--accent{--_card-border: var(--card-background-accent)}.tedi-card--background--brand-primary{--_card-bg: var(--card-background-brand-primary)}.tedi-card--border--brand-primary{--_card-border: var(--card-background-brand-primary)}.tedi-card--background--brand-secondary{--_card-bg: var(--card-background-brand-secondary)}.tedi-card--border--brand-secondary{--_card-border: var(--card-background-brand-secondary)}.tedi-card--background--brand-tertiary{--_card-bg: var(--card-background-brand-tertiary)}.tedi-card--border--brand-tertiary{--_card-border: var(--card-background-brand-tertiary)}.tedi-card--background--brand-quaternary{--_card-bg: var(--card-background-brand-quaternary)}.tedi-card--border--brand-quaternary{--_card-border: var(--card-background-brand-quaternary)}.tedi-card--background--primary{--_card-bg: var(--card-background-primary)}.tedi-card--border--primary{--_card-border: var(--card-background-primary)}.tedi-card--background--secondary{--_card-bg: var(--card-background-secondary)}.tedi-card--border--secondary{--_card-border: var(--card-background-secondary)}.tedi-card--background--tertiary{--_card-bg: var(--card-background-tertiary)}.tedi-card--border--tertiary{--_card-border: var(--card-background-tertiary)}.tedi-card--background--info-primary{--_card-bg: var(--general-status-info-background-light)}.tedi-card--border--info-primary{--_card-border: var(--general-status-info-background-light)}.tedi-card--background--info-secondary{--_card-bg: var(--general-status-info-background-dark)}.tedi-card--border--info-secondary{--_card-border: var(--general-status-info-background-dark)}.tedi-card--background--neutral-primary{--_card-bg: var(--general-status-neutral-background-light)}.tedi-card--border--neutral-primary{--_card-border: var(--general-status-neutral-background-light)}.tedi-card--background--neutral-secondary{--_card-bg: var(--general-status-neutral-background-dark)}.tedi-card--border--neutral-secondary{--_card-border: var(--general-status-neutral-background-dark)}.tedi-card--background--success-primary{--_card-bg: var(--card-background-success)}.tedi-card--border--success-primary{--_card-border: var(--card-background-success)}.tedi-card--background--success-secondary{--_card-bg: var(--general-status-success-background-secondary)}.tedi-card--border--success-secondary{--_card-border: var(--general-status-success-background-secondary)}.tedi-card--background--danger-primary{--_card-bg: var(--general-status-danger-background-primary)}.tedi-card--border--danger-primary{--_card-border: var(--general-status-danger-background-primary)}.tedi-card--background--danger-secondary{--_card-bg: var(--general-status-danger-background-secondary)}.tedi-card--border--danger-secondary{--_card-border: var(--general-status-danger-background-secondary)}.tedi-card--background--warning-primary{--_card-bg: var(--general-status-warning-background-light)}.tedi-card--border--warning-primary{--_card-border: var(--general-status-warning-background-light)}.tedi-card--background--warning-secondary{--_card-bg: var(--general-status-warning-background-dark)}.tedi-card--border--warning-secondary{--_card-border: var(--general-status-warning-background-dark)}.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--spacing-none{--_card-padding: 0}.tedi-card{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal)}.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-desktop)}}.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-desktop)}}.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-desktop)}}.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-desktop)}}.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-desktop)}}.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-desktop)}}.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-desktop)}}.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-desktop)}}.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-desktop)}}.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-desktop)}}.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-desktop)}}.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-desktop)}}.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-desktop)}}.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-desktop)}}.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-desktop)}}.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-desktop)}}.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-desktop)}}.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-desktop)}}.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-desktop)}}.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-desktop)}}.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-desktop)}}.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-desktop)}}.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-desktop)}}.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-desktop)}}.tedi-card--padding-none{--_card-padding: 0}.tedi-card--padding-vertical-none{--_card-padding-vertical: 0}.tedi-card--padding-horizontal-none{--_card-padding-horizontal: 0}.tedi-card--padding-top-none{--_card-padding-top: 0}.tedi-card--padding-bottom-none{--_card-padding-bottom: 0}.tedi-card--padding-left-none{--_card-padding-left: 0}.tedi-card--padding-right-none{--_card-padding-right: 0}.tedi-card--accent-border:before{content:\"\";display:block;position:absolute;left:0;top:0;bottom:0;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius);border-left:4px solid var(--_card-border-accent)}.tedi-card--accent-border--info{--_card-border-accent: var(--general-status-info-background-dark)}.tedi-card--accent-border--success{--_card-border-accent: var(--general-status-success-background-secondary)}.tedi-card--accent-border--warning{--_card-border-accent: var(--general-status-warning-background-dark)}.tedi-card--accent-border--danger{--_card-border-accent: var(--general-status-danger-background-secondary)}.tedi-card>.tedi-card-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:not(:first-child){border-top:transparent}.tedi-card>.tedi-card-content:not(.tedi-card-content--has-separator,:last-child){border-bottom:transparent}.tedi-card>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:last-child{border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row>.tedi-card-content:not(:first-child){border-left:transparent}.tedi-card>.tedi-card-row>.tedi-card-content:not(:last-child,.tedi-card-content--has-separator){border-right:transparent}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:last-child{border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:first-child{border-bottom-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:last-child{border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:not(:first-child)>.tedi-card-content{border-top:transparent}.tedi-card>.tedi-card-row:not(:last-child,.tedi-card-row--has-separator)>.tedi-card-content{border-bottom:transparent}.tedi-card--selected{outline:1px solid var(--_card-selected-border);outline-offset:-1px}.tedi-card--borderless{--_card-border: transparent}\n"] }]
|
|
134
|
+
}] });
|
|
135
|
+
|
|
136
|
+
class AccordionItemComponent {
|
|
137
|
+
/**
|
|
138
|
+
* Accordion item id
|
|
139
|
+
*/
|
|
140
|
+
id = input.required();
|
|
141
|
+
/**
|
|
142
|
+
* Whether accordion item is selected
|
|
143
|
+
*/
|
|
144
|
+
selected = input(false);
|
|
145
|
+
opened = signal(false);
|
|
146
|
+
headerId = computed(() => {
|
|
147
|
+
return `tedi-accordion-header-${this.id()}`;
|
|
148
|
+
});
|
|
149
|
+
contentId = computed(() => {
|
|
150
|
+
return `tedi-accordion-content-${this.id()}`;
|
|
151
|
+
});
|
|
152
|
+
open() {
|
|
153
|
+
this.opened.set(true);
|
|
154
|
+
}
|
|
155
|
+
close() {
|
|
156
|
+
this.opened.set(false);
|
|
157
|
+
}
|
|
158
|
+
toggle() {
|
|
159
|
+
this.opened.update((wasOpened) => !wasOpened);
|
|
160
|
+
}
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: AccordionItemComponent, isStandalone: true, selector: "tedi-accordion-item", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-accordion-item": "true" } }, ngImport: i0, template: "<tedi-card\n [selected]=\"selected()\"\n class=\"tedi-accordion-item__card\"\n [class.tedi-accordion-item__card--expanded]=\"opened()\"\n>\n <ng-content></ng-content>\n</tedi-card>\n", styles: [".tedi-accordion-item{--_accordion-columns: minmax(auto, 200px) auto;--_accordion-header-spacing: 8px}.tedi-accordion-item>.tedi-accordion-item__card{display:grid;grid-template-rows:max-content 0fr;transition:grid-template-rows .3s}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-content>.tedi-card-content{border-top:transparent;border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card--expanded{grid-template-rows:max-content 1fr}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-bottom-right-radius:0;border-bottom-left-radius:0}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-content{animation:accordion-content-overflow-transition;animation-delay:.3s;animation-fill-mode:forwards}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon){grid-template-areas:\"accordion-icon-content accordion-header\" \"accordion-icon-fill accordion-content\";grid-template-columns:var(--_accordion-columns)}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-header-host>.tedi-accordion-item-header{grid-area:accordion-header;border-top-left-radius:0;border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content>.tedi-card-content{border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content{grid-area:accordion-content}@keyframes accordion-content-overflow-transition{to{overflow:visible}}\n"], dependencies: [{ kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
163
|
+
}
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemComponent, decorators: [{
|
|
165
|
+
type: Component,
|
|
166
|
+
args: [{ selector: "tedi-accordion-item", standalone: true, imports: [CardComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
167
|
+
"[class.tedi-accordion-item]": "true",
|
|
168
|
+
}, template: "<tedi-card\n [selected]=\"selected()\"\n class=\"tedi-accordion-item__card\"\n [class.tedi-accordion-item__card--expanded]=\"opened()\"\n>\n <ng-content></ng-content>\n</tedi-card>\n", styles: [".tedi-accordion-item{--_accordion-columns: minmax(auto, 200px) auto;--_accordion-header-spacing: 8px}.tedi-accordion-item>.tedi-accordion-item__card{display:grid;grid-template-rows:max-content 0fr;transition:grid-template-rows .3s}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-content>.tedi-card-content{border-top:transparent;border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card--expanded{grid-template-rows:max-content 1fr}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-bottom-right-radius:0;border-bottom-left-radius:0}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-content{animation:accordion-content-overflow-transition;animation-delay:.3s;animation-fill-mode:forwards}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon){grid-template-areas:\"accordion-icon-content accordion-header\" \"accordion-icon-fill accordion-content\";grid-template-columns:var(--_accordion-columns)}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-header-host>.tedi-accordion-item-header{grid-area:accordion-header;border-top-left-radius:0;border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content>.tedi-card-content{border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content{grid-area:accordion-content}@keyframes accordion-content-overflow-transition{to{overflow:visible}}\n"] }]
|
|
169
|
+
}] });
|
|
170
|
+
|
|
171
|
+
class AccordionComponent {
|
|
172
|
+
/**
|
|
173
|
+
* id-s of items that should be opened by default.
|
|
174
|
+
*/
|
|
175
|
+
defaultOpenItems = input();
|
|
176
|
+
/**
|
|
177
|
+
* Whether only one accordion item can be opened at once.
|
|
178
|
+
* @default false
|
|
179
|
+
*/
|
|
180
|
+
singleOpen = input(false);
|
|
181
|
+
accordionItems = contentChildren(AccordionItemComponent, {
|
|
182
|
+
descendants: true,
|
|
183
|
+
});
|
|
184
|
+
prevOpens = [];
|
|
185
|
+
constructor() {
|
|
186
|
+
effect(() => {
|
|
187
|
+
const single = this.singleOpen();
|
|
188
|
+
const items = this.accordionItems();
|
|
189
|
+
const opens = items.map((it) => it.opened());
|
|
190
|
+
let newlyOpenedIndex = -1;
|
|
191
|
+
if (single && items.length > 0) {
|
|
192
|
+
for (let i = 0; i < opens.length; i++) {
|
|
193
|
+
const prev = i < this.prevOpens.length ? this.prevOpens[i] : false;
|
|
194
|
+
if (!prev && opens[i]) {
|
|
195
|
+
newlyOpenedIndex = i;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (newlyOpenedIndex >= 0) {
|
|
199
|
+
for (let i = 0; i < items.length; i++) {
|
|
200
|
+
if (i !== newlyOpenedIndex && items[i].opened()) {
|
|
201
|
+
items[i].close();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
this.prevOpens = opens;
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
openDefaultOpenItems() {
|
|
210
|
+
const defaultOpenItems = this.defaultOpenItems();
|
|
211
|
+
this.accordionItems().forEach((item) => {
|
|
212
|
+
if (defaultOpenItems?.includes(item.id())) {
|
|
213
|
+
item.open();
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
ngOnInit() {
|
|
218
|
+
this.openDefaultOpenItems();
|
|
219
|
+
}
|
|
220
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
221
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: AccordionComponent, isStandalone: true, selector: "tedi-accordion", inputs: { defaultOpenItems: { classPropertyName: "defaultOpenItems", publicName: "defaultOpenItems", isSignal: true, isRequired: false, transformFunction: null }, singleOpen: { classPropertyName: "singleOpen", publicName: "singleOpen", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "accordionItems", predicate: AccordionItemComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
222
|
+
}
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionComponent, decorators: [{
|
|
224
|
+
type: Component,
|
|
225
|
+
args: [{ selector: "tedi-accordion", standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:contents}\n"] }]
|
|
226
|
+
}], ctorParameters: () => [] });
|
|
227
|
+
|
|
228
|
+
class AccordionIconComponent {
|
|
229
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
230
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AccordionIconComponent, isStandalone: true, selector: "tedi-accordion-icon", host: { properties: { "class.tedi-accordion-icon": "true" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background"] }], ngImport: i0, template: "<div class=\"tedi-accordion-icon__content\"><ng-content></ng-content></div>\n<div class=\"tedi-accordion-icon__fill\"></div>\n", styles: [".tedi-accordion-icon{display:contents;--_card-bg: var(--card-background-secondary)}.tedi-accordion-icon__content{display:block;padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);grid-area:accordion-icon-content;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-bottom:transparent;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-icon__fill{display:block;grid-area:accordion-icon-fill;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-top:transparent;border-bottom-left-radius:var(--_card-radius);margin-top:-4px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
231
|
+
}
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionIconComponent, decorators: [{
|
|
233
|
+
type: Component,
|
|
234
|
+
args: [{ standalone: true, selector: "tedi-accordion-icon", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
235
|
+
"[class.tedi-accordion-icon]": "true",
|
|
236
|
+
}, hostDirectives: [
|
|
237
|
+
{
|
|
238
|
+
directive: CardColorsDirective,
|
|
239
|
+
inputs: ["background"],
|
|
240
|
+
},
|
|
241
|
+
], template: "<div class=\"tedi-accordion-icon__content\"><ng-content></ng-content></div>\n<div class=\"tedi-accordion-icon__fill\"></div>\n", styles: [".tedi-accordion-icon{display:contents;--_card-bg: var(--card-background-secondary)}.tedi-accordion-icon__content{display:block;padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);grid-area:accordion-icon-content;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-bottom:transparent;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-icon__fill{display:block;grid-area:accordion-icon-fill;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-top:transparent;border-bottom-left-radius:var(--_card-radius);margin-top:-4px}\n"] }]
|
|
242
|
+
}] });
|
|
243
|
+
|
|
244
|
+
class CardContentComponent {
|
|
245
|
+
/**
|
|
246
|
+
* Whether content block should have separator.
|
|
247
|
+
* Inside card the separator is created under the content, inside card row the separator is created to the right of content.
|
|
248
|
+
* @default false
|
|
249
|
+
*/
|
|
250
|
+
hasSeparator = input(false, { transform: booleanAttribute });
|
|
251
|
+
/**
|
|
252
|
+
* Whether content block should take minimal space inside of row.
|
|
253
|
+
* Sets flex-grow to 0.
|
|
254
|
+
* @default false
|
|
255
|
+
*/
|
|
256
|
+
autoWidth = input(false, { transform: booleanAttribute });
|
|
257
|
+
/**
|
|
258
|
+
* Creates a timeline line next to the content block.
|
|
259
|
+
* @default false
|
|
260
|
+
*/
|
|
261
|
+
timeline = input(false, { transform: booleanAttribute });
|
|
262
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
263
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardContentComponent, isStandalone: true, selector: "tedi-card-content", inputs: { hasSeparator: { classPropertyName: "hasSeparator", publicName: "hasSeparator", isSignal: true, isRequired: false, transformFunction: null }, autoWidth: { classPropertyName: "autoWidth", publicName: "autoWidth", isSignal: true, isRequired: false, transformFunction: null }, timeline: { classPropertyName: "timeline", publicName: "timeline", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card-content": "true", "class.tedi-card-content--has-separator": "hasSeparator() || timeline()", "class.tedi-card-content--auto-width": "autoWidth()", "class.tedi-card-content--timeline": "timeline()" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background", "border", "border"] }, { directive: CardPaddingDirective, inputs: ["padding", "padding"] }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card-content{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal);display:block;background-color:var(--_card-bg);border:1px solid var(--_card-border);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);flex:1 1 0}.tedi-card-content--auto-width{flex-grow:0}.tedi-card-content--timeline{position:relative;border-right:1px solid var(--_card-timeline-color)}.tedi-card-content--timeline:after{content:\"\";display:block;background-color:var(--_card-timeline-color);position:absolute;top:22px;right:-.5px;transform:translate(50%);width:9px;height:9px;border-radius:50%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
264
|
+
}
|
|
265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardContentComponent, decorators: [{
|
|
266
|
+
type: Component,
|
|
267
|
+
args: [{ selector: "tedi-card-content", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
268
|
+
"[class.tedi-card-content]": "true",
|
|
269
|
+
"[class.tedi-card-content--has-separator]": "hasSeparator() || timeline()",
|
|
270
|
+
"[class.tedi-card-content--auto-width]": "autoWidth()",
|
|
271
|
+
"[class.tedi-card-content--timeline]": "timeline()",
|
|
272
|
+
}, hostDirectives: [
|
|
273
|
+
{
|
|
274
|
+
directive: CardColorsDirective,
|
|
275
|
+
inputs: ["background", "border"],
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
directive: CardPaddingDirective,
|
|
279
|
+
inputs: ["padding"],
|
|
280
|
+
},
|
|
281
|
+
], template: "<ng-content></ng-content>\n", styles: [".tedi-card-content{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal);display:block;background-color:var(--_card-bg);border:1px solid var(--_card-border);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);flex:1 1 0}.tedi-card-content--auto-width{flex-grow:0}.tedi-card-content--timeline{position:relative;border-right:1px solid var(--_card-timeline-color)}.tedi-card-content--timeline:after{content:\"\";display:block;background-color:var(--_card-timeline-color);position:absolute;top:22px;right:-.5px;transform:translate(50%);width:9px;height:9px;border-radius:50%}\n"] }]
|
|
282
|
+
}] });
|
|
283
|
+
|
|
284
|
+
class AccordionItemContentComponent {
|
|
285
|
+
background = input();
|
|
286
|
+
accordionItem = inject(AccordionItemComponent);
|
|
287
|
+
headerId = this.accordionItem.headerId;
|
|
288
|
+
contentId = this.accordionItem.contentId;
|
|
289
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
290
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: AccordionItemContentComponent, isStandalone: true, selector: "tedi-accordion-item-content", inputs: { background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-accordion-item-content": "true" } }, ngImport: i0, template: "<tedi-card-content\n [background]=\"background()\"\n [id]=\"contentId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId()\"\n>\n <ng-content></ng-content>\n</tedi-card-content>\n", styles: [".tedi-accordion-item-content{display:block;overflow:hidden}\n"], dependencies: [{ kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
291
|
+
}
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemContentComponent, decorators: [{
|
|
293
|
+
type: Component,
|
|
294
|
+
args: [{ selector: "tedi-accordion-item-content", standalone: true, imports: [CardContentComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
295
|
+
"[class.tedi-accordion-item-content]": "true",
|
|
296
|
+
}, template: "<tedi-card-content\n [background]=\"background()\"\n [id]=\"contentId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId()\"\n>\n <ng-content></ng-content>\n</tedi-card-content>\n", styles: [".tedi-accordion-item-content{display:block;overflow:hidden}\n"] }]
|
|
297
|
+
}] });
|
|
298
|
+
|
|
299
|
+
class CardHeaderComponent {
|
|
300
|
+
/**
|
|
301
|
+
* Variant of the card header.
|
|
302
|
+
*/
|
|
303
|
+
variant = input();
|
|
304
|
+
modifierClasses = computed(() => {
|
|
305
|
+
return `tedi-card-header--${this.variant()}`;
|
|
306
|
+
});
|
|
307
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
308
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardHeaderComponent, isStandalone: true, selector: "tedi-card-header, [tedi-card-header]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card-header": "true", "class": "modifierClasses()" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background"] }, { directive: CardPaddingDirective, inputs: ["padding", "padding"] }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card-header{border:1px solid var(--_card-border);background:var(--_card-bg);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left)}.tedi-card-header--primary{--_card-bg: var(--card-background-primary);--_card-border: var(--card-border-primary)}.tedi-card-header--secondary{--_card-bg: var(--card-background-secondary);--_card-border: var(--card-border-primary)}.tedi-card-header--tertiary{--_card-bg: var(--card-background-tertiary);--_card-border: var(--card-border-primary)}.tedi-card-header--brand{--_card-bg: linear-gradient(140deg, #005295 -17.66%, #1769ab 71.2%);--_card-border: transparent}.tedi-card-header--brand-dark{--_card-bg: var(--card-background-brand-secondary);--_card-border: transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
309
|
+
}
|
|
310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardHeaderComponent, decorators: [{
|
|
311
|
+
type: Component,
|
|
312
|
+
args: [{ selector: "tedi-card-header, [tedi-card-header]", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
313
|
+
"[class.tedi-card-header]": "true",
|
|
314
|
+
"[class]": "modifierClasses()",
|
|
315
|
+
}, hostDirectives: [
|
|
316
|
+
{
|
|
317
|
+
directive: CardColorsDirective,
|
|
318
|
+
inputs: ["background"],
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
directive: CardPaddingDirective,
|
|
322
|
+
inputs: ["padding"],
|
|
323
|
+
},
|
|
324
|
+
], template: "<ng-content></ng-content>\n", styles: [".tedi-card-header{border:1px solid var(--_card-border);background:var(--_card-bg);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left)}.tedi-card-header--primary{--_card-bg: var(--card-background-primary);--_card-border: var(--card-border-primary)}.tedi-card-header--secondary{--_card-bg: var(--card-background-secondary);--_card-border: var(--card-border-primary)}.tedi-card-header--tertiary{--_card-bg: var(--card-background-tertiary);--_card-border: var(--card-border-primary)}.tedi-card-header--brand{--_card-bg: linear-gradient(140deg, #005295 -17.66%, #1769ab 71.2%);--_card-border: transparent}.tedi-card-header--brand-dark{--_card-bg: var(--card-background-brand-secondary);--_card-border: transparent}\n"] }]
|
|
325
|
+
}] });
|
|
326
|
+
|
|
327
|
+
const WHITE_ICON_VARIANTS = ["brand", "brand-dark"];
|
|
328
|
+
class AccordionItemHeaderComponent {
|
|
329
|
+
/**
|
|
330
|
+
* Whether accordion header should have indicator arrow
|
|
331
|
+
* @default false
|
|
332
|
+
*/
|
|
333
|
+
indicator = input(false);
|
|
334
|
+
/**
|
|
335
|
+
* Open button text. Visible if both openText and closeText are provided.
|
|
336
|
+
*/
|
|
337
|
+
openText = input();
|
|
338
|
+
/**
|
|
339
|
+
* Close button text. Visible if both openText and closeText are provided.
|
|
340
|
+
*/
|
|
341
|
+
closeText = input();
|
|
342
|
+
/**
|
|
343
|
+
* Accordion header variant
|
|
344
|
+
*/
|
|
345
|
+
variant = input();
|
|
346
|
+
/**
|
|
347
|
+
* Accordion header background
|
|
348
|
+
*/
|
|
349
|
+
background = input();
|
|
350
|
+
/**
|
|
351
|
+
* Color of the indicator arrow
|
|
352
|
+
*/
|
|
353
|
+
indicatorColor = input();
|
|
354
|
+
accordionItem = inject(AccordionItemComponent);
|
|
355
|
+
opened = this.accordionItem.opened;
|
|
356
|
+
headerId = this.accordionItem.headerId;
|
|
357
|
+
contentId = this.accordionItem.contentId;
|
|
358
|
+
toggleButtonText = computed(() => {
|
|
359
|
+
if (this.openText() && this.closeText()) {
|
|
360
|
+
return this.opened() ? this.closeText() : this.openText();
|
|
361
|
+
}
|
|
362
|
+
return;
|
|
363
|
+
});
|
|
364
|
+
indicatorIconColor = computed(() => {
|
|
365
|
+
if (this.indicatorColor()) {
|
|
366
|
+
return this.indicatorColor();
|
|
367
|
+
}
|
|
368
|
+
return WHITE_ICON_VARIANTS.includes(this.variant())
|
|
369
|
+
? "white"
|
|
370
|
+
: "brand";
|
|
371
|
+
});
|
|
372
|
+
toggle() {
|
|
373
|
+
this.accordionItem.toggle();
|
|
374
|
+
}
|
|
375
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
376
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: AccordionItemHeaderComponent, isStandalone: true, selector: "tedi-accordion-item-header", inputs: { indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null }, openText: { classPropertyName: "openText", publicName: "openText", isSignal: true, isRequired: false, transformFunction: null }, closeText: { classPropertyName: "closeText", publicName: "closeText", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, indicatorColor: { classPropertyName: "indicatorColor", publicName: "indicatorColor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-accordion-item-header-host": "true" } }, ngImport: i0, template: "<button\n [id]=\"headerId()\"\n tedi-card-header\n [variant]=\"variant()\"\n [background]=\"background()\"\n class=\"tedi-accordion-item-header\"\n [class.tedi-accordion-item-header--opened]=\"opened()\"\n [attr.aria-expanded]=\"opened()\"\n [attr.aria-controls]=\"contentId()\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n @if (indicator()) {\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"18\"\n [color]=\"indicatorIconColor()\"\n />\n }\n @if (toggleButtonText()) {\n <span\n tedi-button\n variant=\"neutral\"\n class=\"tedi-accordion-item-header__toggle\"\n >\n {{ toggleButtonText() }}\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"16\"\n color=\"brand\"\n />\n </span>\n }\n <ng-content select=\"[tedi-accordion-header-end]\"></ng-content>\n</button>\n", styles: [".tedi-accordion-item-header-host{display:contents}.tedi-accordion-item-header{cursor:pointer;font-size:inherit;display:flex;gap:var(--_accordion-header-spacing);align-items:center;justify-content:space-between}.tedi-accordion-item-header [tedi-accordion-header-end]{margin-left:auto}.tedi-accordion-item-header__indicator{transition:transform .3s}.tedi-accordion-item-header .tedi-accordion-item-header__toggle{--_btn-padding-y: 0}.tedi-accordion-item-header--opened>.tedi-accordion-item-header__indicator,.tedi-accordion-item-header--opened>.tedi-accordion-item-header__toggle>.tedi-accordion-item-header__indicator{transform:rotateX(180deg)}\n"], dependencies: [{ kind: "component", type: CardHeaderComponent, selector: "tedi-card-header, [tedi-card-header]", inputs: ["variant"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
377
|
+
}
|
|
378
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemHeaderComponent, decorators: [{
|
|
379
|
+
type: Component,
|
|
380
|
+
args: [{ selector: "tedi-accordion-item-header", standalone: true, imports: [CardHeaderComponent, IconComponent, ButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
381
|
+
"[class.tedi-accordion-item-header-host]": "true",
|
|
382
|
+
}, template: "<button\n [id]=\"headerId()\"\n tedi-card-header\n [variant]=\"variant()\"\n [background]=\"background()\"\n class=\"tedi-accordion-item-header\"\n [class.tedi-accordion-item-header--opened]=\"opened()\"\n [attr.aria-expanded]=\"opened()\"\n [attr.aria-controls]=\"contentId()\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n @if (indicator()) {\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"18\"\n [color]=\"indicatorIconColor()\"\n />\n }\n @if (toggleButtonText()) {\n <span\n tedi-button\n variant=\"neutral\"\n class=\"tedi-accordion-item-header__toggle\"\n >\n {{ toggleButtonText() }}\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"16\"\n color=\"brand\"\n />\n </span>\n }\n <ng-content select=\"[tedi-accordion-header-end]\"></ng-content>\n</button>\n", styles: [".tedi-accordion-item-header-host{display:contents}.tedi-accordion-item-header{cursor:pointer;font-size:inherit;display:flex;gap:var(--_accordion-header-spacing);align-items:center;justify-content:space-between}.tedi-accordion-item-header [tedi-accordion-header-end]{margin-left:auto}.tedi-accordion-item-header__indicator{transition:transform .3s}.tedi-accordion-item-header .tedi-accordion-item-header__toggle{--_btn-padding-y: 0}.tedi-accordion-item-header--opened>.tedi-accordion-item-header__indicator,.tedi-accordion-item-header--opened>.tedi-accordion-item-header__toggle>.tedi-accordion-item-header__indicator{transform:rotateX(180deg)}\n"] }]
|
|
383
|
+
}] });
|
|
384
|
+
|
|
385
|
+
class CardRowComponent {
|
|
386
|
+
/**
|
|
387
|
+
* Whether row should have separator under it.
|
|
388
|
+
* @default false
|
|
389
|
+
*/
|
|
390
|
+
hasSeparator = input(false, { transform: booleanAttribute });
|
|
391
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
392
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardRowComponent, isStandalone: true, selector: "tedi-card-row", inputs: { hasSeparator: { classPropertyName: "hasSeparator", publicName: "hasSeparator", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card-row": "true", "class.tedi-card-row--has-separator": "hasSeparator()" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card-row{display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
393
|
+
}
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardRowComponent, decorators: [{
|
|
395
|
+
type: Component,
|
|
396
|
+
args: [{ selector: "tedi-card-row", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
397
|
+
"[class.tedi-card-row]": "true",
|
|
398
|
+
"[class.tedi-card-row--has-separator]": "hasSeparator()",
|
|
399
|
+
}, template: "<ng-content></ng-content>\n", styles: [".tedi-card-row{display:flex}\n"] }]
|
|
400
|
+
}] });
|
|
401
|
+
|
|
402
|
+
class ChoiceGroupDirective {
|
|
403
|
+
/*
|
|
404
|
+
* Variant of the cards in group.
|
|
405
|
+
*/
|
|
406
|
+
variant = input("primary");
|
|
407
|
+
/*
|
|
408
|
+
* Whether choicegroup card has indicator
|
|
409
|
+
*/
|
|
410
|
+
hasIndicator = input(true);
|
|
411
|
+
/*
|
|
412
|
+
* Spacing between radios. unit: px.
|
|
413
|
+
* @default 4
|
|
414
|
+
*/
|
|
415
|
+
spacing = input(4);
|
|
416
|
+
modifierClasses = computed(() => {
|
|
417
|
+
return `tedi-choicegroup--${this.variant()}`;
|
|
418
|
+
});
|
|
419
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
420
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: ChoiceGroupDirective, isStandalone: true, inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, hasIndicator: { classPropertyName: "hasIndicator", publicName: "hasIndicator", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-choicegroup": "true", "class.tedi-choicegroup--stacked": "spacing() === 0", "class.tedi-choicegroup--plain": "!hasIndicator()", "class": "modifierClasses()" } }, ngImport: i0 });
|
|
421
|
+
}
|
|
422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceGroupDirective, decorators: [{
|
|
423
|
+
type: Directive,
|
|
424
|
+
args: [{
|
|
425
|
+
standalone: true,
|
|
426
|
+
host: {
|
|
427
|
+
"[class.tedi-choicegroup]": "true",
|
|
428
|
+
"[class.tedi-choicegroup--stacked]": "spacing() === 0",
|
|
429
|
+
"[class.tedi-choicegroup--plain]": "!hasIndicator()",
|
|
430
|
+
"[class]": "modifierClasses()",
|
|
431
|
+
},
|
|
432
|
+
}]
|
|
433
|
+
}] });
|
|
434
|
+
|
|
435
|
+
class CheckboxGroupComponent {
|
|
436
|
+
/**
|
|
437
|
+
* Checkbox group label.
|
|
438
|
+
*/
|
|
439
|
+
label = input();
|
|
440
|
+
/*
|
|
441
|
+
* Whether checkbox group is disabled
|
|
442
|
+
*/
|
|
443
|
+
disabled = input();
|
|
444
|
+
/*
|
|
445
|
+
* Whether checkbox group has error.
|
|
446
|
+
*/
|
|
447
|
+
hasError = input();
|
|
448
|
+
/*
|
|
449
|
+
* Size of the checkboxes in group.
|
|
450
|
+
*/
|
|
451
|
+
size = input();
|
|
452
|
+
/*
|
|
453
|
+
* Direction in which checkboxes flow.
|
|
454
|
+
*/
|
|
455
|
+
direction = input("column");
|
|
456
|
+
/*
|
|
457
|
+
* Spacing between checkboxes. unit: px.
|
|
458
|
+
* @default 4
|
|
459
|
+
*/
|
|
460
|
+
spacing = input(4);
|
|
461
|
+
/**
|
|
462
|
+
* FeedbackText component inputs.
|
|
463
|
+
*/
|
|
464
|
+
feedbackText = input();
|
|
465
|
+
labelId = computed(() => {
|
|
466
|
+
if (this.label()) {
|
|
467
|
+
return generateUUID();
|
|
468
|
+
}
|
|
469
|
+
return;
|
|
470
|
+
});
|
|
471
|
+
groupDisabled = computed(() => this.disabled());
|
|
472
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
473
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxGroupComponent, isStandalone: true, selector: "tedi-checkbox-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-checkbox-group": "true", "attr.role": "'group'", "attr.aria-labelledby": "labelId()" } }, ngImport: i0, template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
474
|
+
}
|
|
475
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxGroupComponent, decorators: [{
|
|
476
|
+
type: Component,
|
|
477
|
+
args: [{ standalone: true, selector: "tedi-checkbox-group", imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
478
|
+
"[class.tedi-checkbox-group]": "true",
|
|
479
|
+
"[attr.role]": "'group'",
|
|
480
|
+
"[attr.aria-labelledby]": "labelId()",
|
|
481
|
+
}, template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"] }]
|
|
482
|
+
}] });
|
|
483
|
+
|
|
484
|
+
class CheckboxCardGroupComponent extends CheckboxGroupComponent {
|
|
485
|
+
/*
|
|
486
|
+
* Direction in which checkboxes flow.
|
|
487
|
+
*/
|
|
488
|
+
direction = input("row");
|
|
489
|
+
/*
|
|
490
|
+
* Value of card group. Do not use with controlled card group.
|
|
491
|
+
*/
|
|
492
|
+
value = model([]);
|
|
493
|
+
checkboxes = contentChildren(forwardRef(() => CheckboxComponent), {
|
|
494
|
+
descendants: true,
|
|
495
|
+
});
|
|
496
|
+
_controlDisabled = signal(false);
|
|
497
|
+
_onChange = () => { };
|
|
498
|
+
_onTouched = () => { };
|
|
499
|
+
groupDisabled = computed(() => {
|
|
500
|
+
return this.disabled() || this._controlDisabled();
|
|
501
|
+
});
|
|
502
|
+
writeValue(value) {
|
|
503
|
+
this.value.set(value);
|
|
504
|
+
this.updateCheckboxesState();
|
|
505
|
+
}
|
|
506
|
+
registerOnChange(fn) {
|
|
507
|
+
this._onChange = fn;
|
|
508
|
+
}
|
|
509
|
+
registerOnTouched(fn) {
|
|
510
|
+
this._onTouched = fn;
|
|
511
|
+
}
|
|
512
|
+
setDisabledState(isDisabled) {
|
|
513
|
+
this._controlDisabled.set(isDisabled);
|
|
514
|
+
}
|
|
515
|
+
updateCheckboxesState() {
|
|
516
|
+
const value = this.value();
|
|
517
|
+
this.checkboxes().forEach((checkbox) => {
|
|
518
|
+
const checked = value?.includes(checkbox.value());
|
|
519
|
+
checkbox.checked.set(checked);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
onCheckboxChange(checked, value) {
|
|
523
|
+
this.value.update((checkedItems) => {
|
|
524
|
+
if (checked) {
|
|
525
|
+
return [...checkedItems, value];
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
return checkedItems.filter((item) => item !== value);
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
this._onChange(this.value());
|
|
532
|
+
}
|
|
533
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxCardGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
534
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxCardGroupComponent, isStandalone: true, selector: "tedi-checkbox-card-group", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, providers: [
|
|
535
|
+
{
|
|
536
|
+
provide: NG_VALUE_ACCESSOR,
|
|
537
|
+
useExisting: forwardRef(() => CheckboxCardGroupComponent),
|
|
538
|
+
multi: true,
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
provide: CheckboxGroupComponent,
|
|
542
|
+
useExisting: CheckboxCardGroupComponent,
|
|
543
|
+
},
|
|
544
|
+
], queries: [{ propertyName: "checkboxes", predicate: i0.forwardRef(() => CheckboxComponent), descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: ChoiceGroupDirective, inputs: ["variant", "variant", "hasIndicator", "hasIndicator", "spacing", "spacing"] }], ngImport: i0, template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n", ".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
545
|
+
}
|
|
546
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxCardGroupComponent, decorators: [{
|
|
547
|
+
type: Component,
|
|
548
|
+
args: [{ standalone: true, selector: "tedi-checkbox-card-group", imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
549
|
+
{
|
|
550
|
+
provide: NG_VALUE_ACCESSOR,
|
|
551
|
+
useExisting: forwardRef(() => CheckboxCardGroupComponent),
|
|
552
|
+
multi: true,
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
provide: CheckboxGroupComponent,
|
|
556
|
+
useExisting: CheckboxCardGroupComponent,
|
|
557
|
+
},
|
|
558
|
+
], hostDirectives: [
|
|
559
|
+
{
|
|
560
|
+
directive: ChoiceGroupDirective,
|
|
561
|
+
inputs: ["variant", "hasIndicator", "spacing"],
|
|
562
|
+
},
|
|
563
|
+
], template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n", ".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"] }]
|
|
564
|
+
}] });
|
|
565
|
+
|
|
566
|
+
class CheckboxComponent {
|
|
567
|
+
/*
|
|
568
|
+
* unique id.
|
|
569
|
+
*/
|
|
570
|
+
inputId = input.required();
|
|
571
|
+
/*
|
|
572
|
+
* Whether checkbox is checked. Do not used with controlled checkboxes.
|
|
573
|
+
*/
|
|
574
|
+
checked = model(null);
|
|
575
|
+
/*
|
|
576
|
+
* Whether checkbox is indeterminate.
|
|
577
|
+
*/
|
|
578
|
+
indeterminate = input();
|
|
579
|
+
/*
|
|
580
|
+
* Checkbox value. For use in checkbox card group
|
|
581
|
+
*/
|
|
582
|
+
value = input();
|
|
583
|
+
/*
|
|
584
|
+
* Whether checkbox is disabled.
|
|
585
|
+
*/
|
|
586
|
+
disabled = model();
|
|
587
|
+
/*
|
|
588
|
+
* Size of the checkbox. Overwrites group size.
|
|
589
|
+
*/
|
|
590
|
+
size = input();
|
|
591
|
+
/*
|
|
592
|
+
* Whether checkbox has error.
|
|
593
|
+
*/
|
|
594
|
+
hasError = input();
|
|
595
|
+
/**
|
|
596
|
+
* FeedbackText component inputs.
|
|
597
|
+
*/
|
|
598
|
+
feedbackText = input();
|
|
599
|
+
_inputEl = viewChild.required("input");
|
|
600
|
+
checkboxGroup = inject(CheckboxGroupComponent, { optional: true });
|
|
601
|
+
checkboxCardGroup = inject(CheckboxCardGroupComponent, {
|
|
602
|
+
optional: true,
|
|
603
|
+
});
|
|
604
|
+
_onChange = () => { };
|
|
605
|
+
_onTouched = () => { };
|
|
606
|
+
feedbackTextId = computed(() => {
|
|
607
|
+
if (this.feedbackText()) {
|
|
608
|
+
return generateUUID();
|
|
609
|
+
}
|
|
610
|
+
return;
|
|
611
|
+
});
|
|
612
|
+
indicatorIcon = computed(() => {
|
|
613
|
+
if (this.indeterminate()) {
|
|
614
|
+
return "remove";
|
|
615
|
+
}
|
|
616
|
+
if (this.checked()) {
|
|
617
|
+
return "check";
|
|
618
|
+
}
|
|
619
|
+
return;
|
|
620
|
+
});
|
|
621
|
+
checkboxSize = computed(() => {
|
|
622
|
+
return this.size() ?? this.checkboxGroup?.size();
|
|
623
|
+
});
|
|
624
|
+
iconSize = computed(() => {
|
|
625
|
+
return this.checkboxSize() === "large" ? 18 : 16;
|
|
626
|
+
});
|
|
627
|
+
checkboxDisabled = computed(() => {
|
|
628
|
+
return this.disabled() || this.checkboxGroup?.groupDisabled();
|
|
629
|
+
});
|
|
630
|
+
focus() {
|
|
631
|
+
this._inputEl().nativeElement.focus();
|
|
632
|
+
}
|
|
633
|
+
writeValue(value) {
|
|
634
|
+
this.checked.set(value);
|
|
635
|
+
}
|
|
636
|
+
registerOnChange(fn) {
|
|
637
|
+
this._onChange = fn;
|
|
638
|
+
}
|
|
639
|
+
registerOnTouched(fn) {
|
|
640
|
+
this._onTouched = fn;
|
|
641
|
+
}
|
|
642
|
+
setDisabledState(isDisabled) {
|
|
643
|
+
this.disabled.set(isDisabled);
|
|
644
|
+
}
|
|
645
|
+
onInputChange(event) {
|
|
646
|
+
const checked = event.target.checked;
|
|
647
|
+
this._onChange(checked);
|
|
648
|
+
this.checked.set(checked);
|
|
649
|
+
this.checkboxCardGroup?.onCheckboxChange(checked, this.value());
|
|
650
|
+
}
|
|
651
|
+
ngOnInit() {
|
|
652
|
+
if (this.checked()) {
|
|
653
|
+
this._onChange(true);
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
657
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxComponent, isStandalone: true, selector: "tedi-checkbox", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", disabled: "disabledChange" }, host: { properties: { "class.tedi-checkbox": "true", "class.tedi-checkbox--error": "hasError() || cardGroup?.hasError()", "class.tedi-checkbox--large": "checkboxSize() === 'large'" } }, providers: [
|
|
658
|
+
{
|
|
659
|
+
provide: NG_VALUE_ACCESSOR,
|
|
660
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
661
|
+
multi: true,
|
|
662
|
+
},
|
|
663
|
+
], viewQueries: [{ propertyName: "_inputEl", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tedi-checkbox__input-area\">\n <input\n class=\"tedi-checkbox__input\"\n type=\"checkbox\"\n #input\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"checkboxDisabled()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"_onTouched()\"\n />\n <div class=\"tedi-checkbox__indicator\">\n @if (indicatorIcon(); as iconName) {\n <tedi-icon [name]=\"iconName\" color=\"white\" [size]=\"iconSize()\" />\n }\n </div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-checkbox__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox{--_checkbox-bg: var(--form-checkbox-radio-default-background-default);--_checkbox-border: var(--form-checkbox-radio-default-border-default);--_checkbox-label-color: var(--general-text-primary);--_checkbox-check-color: var(--_checkbox-border);display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-desktop)}}.tedi-checkbox{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-checkbox{--_label-size: var(--body-regular-size-desktop)}}.tedi-checkbox tedi-icon{-webkit-user-select:none;user-select:none}.tedi-checkbox__input-area{position:relative;grid-area:input-area}.tedi-checkbox__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-checkbox__indicator{position:relative;width:var(--_checkbox-size);height:var(--_checkbox-size);border-radius:var(--_checkbox-radius);border:1px solid var(--_checkbox-border);background:var(--_checkbox-bg);margin-right:var(--_checkbox-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-checkbox__label{color:var(--_checkbox-label-color);font-size:var(--_label-size);grid-area:label}.tedi-checkbox__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-checkbox__label{font-family:var(--family-primary-desktop)}}.tedi-checkbox:has(input:checked){--_checkbox-bg: var(--form-checkbox-radio-default-background-selected);--_checkbox-border: var(--form-checkbox-radio-default-border-selected)}.tedi-checkbox:has(input:hover,input:focus-visible) .tedi-checkbox__indicator{outline:1px solid var(--_checkbox-border)}.tedi-checkbox:has(input:hover,input:focus-visible){--_checkbox-border: var(--form-checkbox-radio-default-border-hover)}.tedi-checkbox:has(input:active){--_checkbox-border: var(--form-checkbox-radio-default-border-active);--_checkbox-bg: var(--form-checkbox-radio-default-background-active)}.tedi-checkbox:has(input:disabled){pointer-events:none;--_checkbox-label-color: var(--general-text-disabled);--_checkbox-bg: var(--form-input-background-disabled);--_checkbox-border: var(--form-input-border-disabled)}.tedi-checkbox:has(input:disabled:checked){--_checkbox-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-checkbox--error{--_checkbox-bg: var(--form-checkbox-radio-default-background-error);--_checkbox-border: var(--form-general-feedback-error-border)}.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-checkbox .tedi-feedback-text{grid-area:feedback}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
664
|
+
}
|
|
665
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
666
|
+
type: Component,
|
|
667
|
+
args: [{ standalone: true, selector: "tedi-checkbox", imports: [FeedbackTextComponent, IconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
668
|
+
{
|
|
669
|
+
provide: NG_VALUE_ACCESSOR,
|
|
670
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
671
|
+
multi: true,
|
|
672
|
+
},
|
|
673
|
+
], host: {
|
|
674
|
+
"[class.tedi-checkbox]": "true",
|
|
675
|
+
"[class.tedi-checkbox--error]": "hasError() || cardGroup?.hasError()",
|
|
676
|
+
"[class.tedi-checkbox--large]": "checkboxSize() === 'large'",
|
|
677
|
+
}, template: "<div class=\"tedi-checkbox__input-area\">\n <input\n class=\"tedi-checkbox__input\"\n type=\"checkbox\"\n #input\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"checkboxDisabled()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"_onTouched()\"\n />\n <div class=\"tedi-checkbox__indicator\">\n @if (indicatorIcon(); as iconName) {\n <tedi-icon [name]=\"iconName\" color=\"white\" [size]=\"iconSize()\" />\n }\n </div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-checkbox__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox{--_checkbox-bg: var(--form-checkbox-radio-default-background-default);--_checkbox-border: var(--form-checkbox-radio-default-border-default);--_checkbox-label-color: var(--general-text-primary);--_checkbox-check-color: var(--_checkbox-border);display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-desktop)}}.tedi-checkbox{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-checkbox{--_label-size: var(--body-regular-size-desktop)}}.tedi-checkbox tedi-icon{-webkit-user-select:none;user-select:none}.tedi-checkbox__input-area{position:relative;grid-area:input-area}.tedi-checkbox__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-checkbox__indicator{position:relative;width:var(--_checkbox-size);height:var(--_checkbox-size);border-radius:var(--_checkbox-radius);border:1px solid var(--_checkbox-border);background:var(--_checkbox-bg);margin-right:var(--_checkbox-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-checkbox__label{color:var(--_checkbox-label-color);font-size:var(--_label-size);grid-area:label}.tedi-checkbox__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-checkbox__label{font-family:var(--family-primary-desktop)}}.tedi-checkbox:has(input:checked){--_checkbox-bg: var(--form-checkbox-radio-default-background-selected);--_checkbox-border: var(--form-checkbox-radio-default-border-selected)}.tedi-checkbox:has(input:hover,input:focus-visible) .tedi-checkbox__indicator{outline:1px solid var(--_checkbox-border)}.tedi-checkbox:has(input:hover,input:focus-visible){--_checkbox-border: var(--form-checkbox-radio-default-border-hover)}.tedi-checkbox:has(input:active){--_checkbox-border: var(--form-checkbox-radio-default-border-active);--_checkbox-bg: var(--form-checkbox-radio-default-background-active)}.tedi-checkbox:has(input:disabled){pointer-events:none;--_checkbox-label-color: var(--general-text-disabled);--_checkbox-bg: var(--form-input-background-disabled);--_checkbox-border: var(--form-input-border-disabled)}.tedi-checkbox:has(input:disabled:checked){--_checkbox-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-checkbox--error{--_checkbox-bg: var(--form-checkbox-radio-default-background-error);--_checkbox-border: var(--form-general-feedback-error-border)}.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-checkbox .tedi-feedback-text{grid-area:feedback}\n"] }]
|
|
678
|
+
}] });
|
|
679
|
+
|
|
680
|
+
class FormFieldComponent {
|
|
681
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
682
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FormFieldComponent, isStandalone: true, selector: "tedi-form-field", host: { properties: { "class.tedi-form-field": "true" } }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-form-field{display:flex;flex-direction:column}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
683
|
+
}
|
|
684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
685
|
+
type: Component,
|
|
686
|
+
args: [{ selector: "tedi-form-field", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
687
|
+
"[class.tedi-form-field]": "true",
|
|
688
|
+
}, styles: [".tedi-form-field{display:flex;flex-direction:column}\n"] }]
|
|
689
|
+
}] });
|
|
690
|
+
|
|
691
|
+
class InputComponent {
|
|
692
|
+
/**
|
|
693
|
+
* Size of the input.
|
|
694
|
+
* @default default
|
|
695
|
+
*/
|
|
696
|
+
size = input("default");
|
|
697
|
+
/**
|
|
698
|
+
* State of the input.
|
|
699
|
+
* @default default
|
|
700
|
+
*/
|
|
701
|
+
state = input("default");
|
|
702
|
+
modifierClasses = computed(() => {
|
|
703
|
+
const modifiers = [];
|
|
704
|
+
if (this.size())
|
|
705
|
+
modifiers.push(`tedi-input--${this.size()}`);
|
|
706
|
+
if (this.state())
|
|
707
|
+
modifiers.push(`tedi-input--${this.state()}`);
|
|
708
|
+
return modifiers.join(" ");
|
|
709
|
+
});
|
|
710
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
711
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: InputComponent, isStandalone: true, selector: "[tedi-input]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-input": "true", "class": "modifierClasses()" } }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
712
|
+
}
|
|
713
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, decorators: [{
|
|
714
|
+
type: Component,
|
|
715
|
+
args: [{ selector: "[tedi-input]", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
716
|
+
"[class.tedi-input]": "true",
|
|
717
|
+
"[class]": "modifierClasses()",
|
|
718
|
+
}, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n"] }]
|
|
719
|
+
}] });
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* InputGroupComponent is a component that allows you to group multiple input elements together.
|
|
723
|
+
*
|
|
724
|
+
*
|
|
725
|
+
* Use prefix-slot, suffix-slot and unnamed slots to add input elements to the group.
|
|
726
|
+
* @example
|
|
727
|
+
* <tedi-input-group>
|
|
728
|
+
* <tedi-button prefix-slot>Prefix</tedi-button>
|
|
729
|
+
* <tedi-button suffix-slot>Suffix</tedi-button>
|
|
730
|
+
* <input></input>
|
|
731
|
+
* </tedi-input-group>
|
|
732
|
+
*
|
|
733
|
+
*/
|
|
734
|
+
class InputGroupComponent {
|
|
735
|
+
/**
|
|
736
|
+
* User-visible label for the input group, visible above the input, should describe the purpose of the input group.
|
|
737
|
+
*/
|
|
738
|
+
label = input();
|
|
739
|
+
/**
|
|
740
|
+
* ID of the input group's label, used to associate the label with the input group's custom input.
|
|
741
|
+
*/
|
|
742
|
+
labelID = input();
|
|
743
|
+
/**
|
|
744
|
+
* Disabled state of the input group, causes the input group to be grayed out.
|
|
745
|
+
* Does not affect children's disabled state.
|
|
746
|
+
* @default false
|
|
747
|
+
*/
|
|
748
|
+
disabled = input(false);
|
|
749
|
+
/**
|
|
750
|
+
* FeedbackText component inputs, displayed below the input group.
|
|
751
|
+
*/
|
|
752
|
+
feedback = input();
|
|
753
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: InputGroupComponent, isStandalone: true, selector: "tedi-input-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelID: { classPropertyName: "labelID", publicName: "labelID", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"tedi-input-group\">\n @if (label()) {\n <label tedi-label [for]=\"labelID()\">\n <div class=\"tedi-input-group__label\">{{ label() }}</div>\n </label>\n }\n\n <div\n [class]=\"{\n 'tedi-input-group__container': true,\n 'tedi-input-group__container--disabled': disabled(),\n }\"\n >\n <div class=\"tedi-input-group__prefix\">\n <ng-content select=\"[prefix-slot]\" />\n </div>\n <div class=\"tedi-input-group__center\">\n <ng-content />\n </div>\n <div class=\"tedi-input-group__suffix\">\n <ng-content select=\"[suffix-slot]\" />\n </div>\n </div>\n @if (feedback(); as feedbackResult) {\n <tedi-feedback-text\n [text]=\"feedbackResult.text\"\n [type]=\"feedbackResult.type\"\n [position]=\"feedbackResult.position\"\n />\n }\n</div>\n", styles: [".tedi-input-group__container{--_input-group-rounded: var(--radius-02-default);--_input-group-background-color: var(--form-input-background-default);--_input-group-min-height: var(--dimensions-14);--_input-group-text-color: var(--general-text-secondary);--_input-group-border-width: var(--borders-01);--_input-group-border-color: var(--form-input-border-default);--_input-group-side-background-color: var( --form-general-background-action-background );--_input-group-border: var(--_input-group-border-width) solid var(--_input-group-border-color);--_input-group-input-border-radius: var(0);--_input-group-disabled-border-color: var(--neutral-350);--_input-group-disabled-background-color: var(--neutral-300);--_input-group-text-disabled-color: var(--neutral-450);--_input-group-select-padding: 0;--_input-group-select-border: 0;--_input-group-share-border-size: 0;display:flex;background-color:transparent;color:var(--_input-group-text-color);min-height:var(--_input-group-min-height);overflow:hidden}.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input-group__container input.tedi-input{margin:0;width:100%}.tedi-input-group__container .tedi-input-group__prefix .tedi-input:focus{z-index:1000;overflow:visible}.tedi-input-group__container:has(.tedi-input-group__prefix:empty){border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__prefix:empty) input.tedi-input{border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty){border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty) input.tedi-input{border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:hover{border-right:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:hover{border-left:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container:has(.tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__prefix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-left:var(--_input-group-share-border-size)}.tedi-input-group__container:has(.tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__suffix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-right:var(--_input-group-share-border-size)}.tedi-input-group__center .tedi-input{border-radius:var(--_input-group-input-border-radius)}.tedi-input-group__container--disabled{--_input-group-text-color: var(--_input-group-text-disabled-color);--_input-group-border-color: var(--_input-group-disabled-border-color);--_input-group-background-color: var( --_input-group-disabled-background-color );--_input-group-side-background-color: var( --_input-group-disabled-background-color )}.tedi-input-group__prefix,.tedi-input-group__suffix{display:flex;align-items:center;flex-shrink:0;background:var(--_input-group-side-background-color);border:var(--_input-group-border);padding:var(--_input-group-padding-y) var(--_input-group-padding-x)}.tedi-input-group__prefix:has(tedi-select),.tedi-input-group__suffix:has(tedi-select){--_input-group-border: var(--_input-group-select-border);padding:var(--_input-group-select-padding);background-color:transparent}.tedi-input-group__prefix tedi-select .tedi-select__trigger,.tedi-input-group__suffix tedi-select .tedi-select__trigger{background:var(--_input-group-side-background-color);height:100%;margin:0}.tedi-input-group__prefix:empty,.tedi-input-group__suffix:empty{display:none}.tedi-input-group__prefix{border-right:0;border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__prefix tedi-select .tedi-select__trigger{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.tedi-input-group__suffix{border-left:0;border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__suffix tedi-select .tedi-select__trigger{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
755
|
+
}
|
|
756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputGroupComponent, decorators: [{
|
|
757
|
+
type: Component,
|
|
758
|
+
args: [{ selector: "tedi-input-group", standalone: true, encapsulation: ViewEncapsulation.None, imports: [FeedbackTextComponent, LabelComponent], template: "<div class=\"tedi-input-group\">\n @if (label()) {\n <label tedi-label [for]=\"labelID()\">\n <div class=\"tedi-input-group__label\">{{ label() }}</div>\n </label>\n }\n\n <div\n [class]=\"{\n 'tedi-input-group__container': true,\n 'tedi-input-group__container--disabled': disabled(),\n }\"\n >\n <div class=\"tedi-input-group__prefix\">\n <ng-content select=\"[prefix-slot]\" />\n </div>\n <div class=\"tedi-input-group__center\">\n <ng-content />\n </div>\n <div class=\"tedi-input-group__suffix\">\n <ng-content select=\"[suffix-slot]\" />\n </div>\n </div>\n @if (feedback(); as feedbackResult) {\n <tedi-feedback-text\n [text]=\"feedbackResult.text\"\n [type]=\"feedbackResult.type\"\n [position]=\"feedbackResult.position\"\n />\n }\n</div>\n", styles: [".tedi-input-group__container{--_input-group-rounded: var(--radius-02-default);--_input-group-background-color: var(--form-input-background-default);--_input-group-min-height: var(--dimensions-14);--_input-group-text-color: var(--general-text-secondary);--_input-group-border-width: var(--borders-01);--_input-group-border-color: var(--form-input-border-default);--_input-group-side-background-color: var( --form-general-background-action-background );--_input-group-border: var(--_input-group-border-width) solid var(--_input-group-border-color);--_input-group-input-border-radius: var(0);--_input-group-disabled-border-color: var(--neutral-350);--_input-group-disabled-background-color: var(--neutral-300);--_input-group-text-disabled-color: var(--neutral-450);--_input-group-select-padding: 0;--_input-group-select-border: 0;--_input-group-share-border-size: 0;display:flex;background-color:transparent;color:var(--_input-group-text-color);min-height:var(--_input-group-min-height);overflow:hidden}.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input-group__container input.tedi-input{margin:0;width:100%}.tedi-input-group__container .tedi-input-group__prefix .tedi-input:focus{z-index:1000;overflow:visible}.tedi-input-group__container:has(.tedi-input-group__prefix:empty){border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__prefix:empty) input.tedi-input{border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty){border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty) input.tedi-input{border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:hover{border-right:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:hover{border-left:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container:has(.tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__prefix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-left:var(--_input-group-share-border-size)}.tedi-input-group__container:has(.tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__suffix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-right:var(--_input-group-share-border-size)}.tedi-input-group__center .tedi-input{border-radius:var(--_input-group-input-border-radius)}.tedi-input-group__container--disabled{--_input-group-text-color: var(--_input-group-text-disabled-color);--_input-group-border-color: var(--_input-group-disabled-border-color);--_input-group-background-color: var( --_input-group-disabled-background-color );--_input-group-side-background-color: var( --_input-group-disabled-background-color )}.tedi-input-group__prefix,.tedi-input-group__suffix{display:flex;align-items:center;flex-shrink:0;background:var(--_input-group-side-background-color);border:var(--_input-group-border);padding:var(--_input-group-padding-y) var(--_input-group-padding-x)}.tedi-input-group__prefix:has(tedi-select),.tedi-input-group__suffix:has(tedi-select){--_input-group-border: var(--_input-group-select-border);padding:var(--_input-group-select-padding);background-color:transparent}.tedi-input-group__prefix tedi-select .tedi-select__trigger,.tedi-input-group__suffix tedi-select .tedi-select__trigger{background:var(--_input-group-side-background-color);height:100%;margin:0}.tedi-input-group__prefix:empty,.tedi-input-group__suffix:empty{display:none}.tedi-input-group__prefix{border-right:0;border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__prefix tedi-select .tedi-select__trigger{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.tedi-input-group__suffix{border-left:0;border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__suffix tedi-select .tedi-select__trigger{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}\n"] }]
|
|
759
|
+
}] });
|
|
760
|
+
|
|
761
|
+
class RadioGroupComponent {
|
|
762
|
+
/*
|
|
763
|
+
* Radio group name
|
|
764
|
+
*/
|
|
765
|
+
name = input.required();
|
|
766
|
+
/*
|
|
767
|
+
* Radio group id.
|
|
768
|
+
*/
|
|
769
|
+
id = input.required();
|
|
770
|
+
/**
|
|
771
|
+
* Radio group label.
|
|
772
|
+
*/
|
|
773
|
+
label = input();
|
|
774
|
+
/*
|
|
775
|
+
* Whether radio group is disabled. Do not use with controlled radios.
|
|
776
|
+
*/
|
|
777
|
+
disabled = input();
|
|
778
|
+
/*
|
|
779
|
+
* Whether radio group has error.
|
|
780
|
+
*/
|
|
781
|
+
hasError = input();
|
|
782
|
+
/*
|
|
783
|
+
* Size of the radios radios in group.
|
|
784
|
+
*/
|
|
785
|
+
size = input("default");
|
|
786
|
+
/*
|
|
787
|
+
* Direction in which radios flow.
|
|
788
|
+
*/
|
|
789
|
+
direction = input("column");
|
|
790
|
+
/*
|
|
791
|
+
* Spacing between radios. unit: px.
|
|
792
|
+
* @default 4
|
|
793
|
+
*/
|
|
794
|
+
spacing = input(4);
|
|
795
|
+
/**
|
|
796
|
+
* FeedbackText component inputs.
|
|
797
|
+
*/
|
|
798
|
+
feedbackText = input();
|
|
799
|
+
/*
|
|
800
|
+
* Emits selected radio value on change.
|
|
801
|
+
*/
|
|
802
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
803
|
+
change = output();
|
|
804
|
+
_value = signal(null);
|
|
805
|
+
_controlDisabled = signal(false);
|
|
806
|
+
groupDisabled = computed(() => {
|
|
807
|
+
return this.disabled() || this._controlDisabled();
|
|
808
|
+
});
|
|
809
|
+
groupValue = this._value.asReadonly();
|
|
810
|
+
_onChange = () => { };
|
|
811
|
+
_onTouched = () => { };
|
|
812
|
+
writeValue(value) {
|
|
813
|
+
this._value.set(value);
|
|
814
|
+
}
|
|
815
|
+
registerOnChange(fn) {
|
|
816
|
+
this._onChange = fn;
|
|
817
|
+
}
|
|
818
|
+
registerOnTouched(fn) {
|
|
819
|
+
this._onTouched = fn;
|
|
820
|
+
}
|
|
821
|
+
setDisabledState(isDisabled) {
|
|
822
|
+
this._controlDisabled.set(isDisabled);
|
|
823
|
+
}
|
|
824
|
+
selectRadio(value) {
|
|
825
|
+
this._onChange(value);
|
|
826
|
+
this.change.emit(value);
|
|
827
|
+
}
|
|
828
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
829
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RadioGroupComponent, isStandalone: true, selector: "tedi-radio-group", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { properties: { "class.tedi-radio-group": "true", "attr.role": "'radiogroup'" } }, providers: [
|
|
830
|
+
{
|
|
831
|
+
provide: NG_VALUE_ACCESSOR,
|
|
832
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
833
|
+
multi: true,
|
|
834
|
+
},
|
|
835
|
+
], ngImport: i0, template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
836
|
+
}
|
|
837
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioGroupComponent, decorators: [{
|
|
838
|
+
type: Component,
|
|
839
|
+
args: [{ selector: "tedi-radio-group", standalone: true, imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
840
|
+
{
|
|
841
|
+
provide: NG_VALUE_ACCESSOR,
|
|
842
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
843
|
+
multi: true,
|
|
844
|
+
},
|
|
845
|
+
], host: {
|
|
846
|
+
"[class.tedi-radio-group]": "true",
|
|
847
|
+
"[attr.role]": "'radiogroup'",
|
|
848
|
+
}, template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n"] }]
|
|
849
|
+
}] });
|
|
850
|
+
|
|
851
|
+
class RadioComponent {
|
|
852
|
+
/*
|
|
853
|
+
* unique id.
|
|
854
|
+
*/
|
|
855
|
+
inputId = input.required();
|
|
856
|
+
/*
|
|
857
|
+
* Whether radio is checked. Do not used with controlled radios.
|
|
858
|
+
*/
|
|
859
|
+
checked = model();
|
|
860
|
+
/*
|
|
861
|
+
* Radio value.
|
|
862
|
+
*/
|
|
863
|
+
value = input.required();
|
|
864
|
+
/*
|
|
865
|
+
* Whether radio is disabled.
|
|
866
|
+
*/
|
|
867
|
+
disabled = input();
|
|
868
|
+
/*
|
|
869
|
+
* Whether radio has error.
|
|
870
|
+
*/
|
|
871
|
+
hasError = input();
|
|
872
|
+
/**
|
|
873
|
+
* FeedbackText component inputs.
|
|
874
|
+
*/
|
|
875
|
+
feedbackText = input();
|
|
876
|
+
_inputEl = viewChild.required("input");
|
|
877
|
+
radioGroup = inject(RadioGroupComponent, { optional: true });
|
|
878
|
+
inputDisabled = computed(() => {
|
|
879
|
+
return this.disabled() || this.radioGroup?.groupDisabled();
|
|
880
|
+
});
|
|
881
|
+
inputName = computed(() => {
|
|
882
|
+
return this.radioGroup?.name();
|
|
883
|
+
});
|
|
884
|
+
inputChecked = computed(() => {
|
|
885
|
+
return this.value() === this.radioGroup?.groupValue() || this.checked();
|
|
886
|
+
});
|
|
887
|
+
feedbackTextId = computed(() => {
|
|
888
|
+
if (this.feedbackText()) {
|
|
889
|
+
return generateUUID();
|
|
890
|
+
}
|
|
891
|
+
return;
|
|
892
|
+
});
|
|
893
|
+
focus() {
|
|
894
|
+
this._inputEl().nativeElement.focus();
|
|
895
|
+
}
|
|
896
|
+
onInputChange(event) {
|
|
897
|
+
event.stopPropagation();
|
|
898
|
+
this.radioGroup?.selectRadio(this.value());
|
|
899
|
+
}
|
|
900
|
+
ngOnInit() {
|
|
901
|
+
if (this.checked()) {
|
|
902
|
+
this.radioGroup?.selectRadio(this.value());
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
906
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RadioComponent, isStandalone: true, selector: "tedi-radio", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { properties: { "class.tedi-radio": "true", "class.tedi-radio--error": "hasError() || radioGroup?.hasError()", "class.tedi-radio--large": "radioGroup?.size() === 'large'" } }, viewQueries: [{ propertyName: "_inputEl", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tedi-radio__input-area\">\n <input\n class=\"tedi-radio__input\"\n type=\"radio\"\n #input\n [id]=\"inputId()\"\n [checked]=\"inputChecked()\"\n [disabled]=\"inputDisabled()\"\n [attr.name]=\"inputName()\"\n [attr.value]=\"value()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n (change)=\"onInputChange($event)\"\n />\n <div class=\"tedi-radio__indicator\"></div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-radio__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio{--_radio-bg: var(--form-checkbox-radio-default-background-default);--_radio-border: var(--form-checkbox-radio-default-border-default);--_radio-label-color: var(--general-text-primary);--_radio-dot-bg: var(--_radio-border);--_radio-dot-size: 12px;display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-radio{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-radio{--_label-size: var(--body-regular-size-desktop)}}.tedi-radio__input-area{position:relative;grid-area:input-area}.tedi-radio__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-radio__indicator{position:relative;width:var(--_radio-size);height:var(--_radio-size);border-radius:50%;border:1px solid var(--_radio-border);background:var(--_radio-bg);margin-right:var(--_radio-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-radio__indicator:after{content:\"\";border-radius:50%;display:none;background:var(--_radio-dot-bg);height:var(--_radio-dot-size);width:var(--_radio-dot-size)}.tedi-radio__label{color:var(--_radio-label-color);font-size:var(--_label-size);grid-area:label}.tedi-radio__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-radio__label{font-family:var(--family-primary-desktop)}}.tedi-radio:has(input:checked) .tedi-radio__indicator:after{display:block}.tedi-radio:has(input:checked){--_radio-border: var(--form-checkbox-radio-default-border-selected)}.tedi-radio:has(input:hover,input:focus-visible) .tedi-radio__indicator{outline:1px solid var(--_radio-border)}.tedi-radio:has(input:hover,input:focus-visible){--_radio-border: var(--form-checkbox-radio-default-border-hover)}.tedi-radio:has(input:active){--_radio-border: var(--form-checkbox-radio-default-border-active)}.tedi-radio:has(input:disabled){pointer-events:none;--_radio-label-color: var(--general-text-disabled);--_radio-bg: var(--form-input-background-disabled);--_radio-border: var(--form-input-border-disabled)}.tedi-radio:has(input:disabled:checked){--_radio-dot-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_radio-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-radio--error{--_radio-bg: var(--form-checkbox-radio-default-background-error);--_radio-border: var(--form-general-feedback-error-border)}.tedi-radio--large{--_radio-dot-size: 16px}.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-radio .tedi-feedback-text{grid-area:feedback}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
907
|
+
}
|
|
908
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioComponent, decorators: [{
|
|
909
|
+
type: Component,
|
|
910
|
+
args: [{ selector: "tedi-radio", imports: [FeedbackTextComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
911
|
+
"[class.tedi-radio]": "true",
|
|
912
|
+
"[class.tedi-radio--error]": "hasError() || radioGroup?.hasError()",
|
|
913
|
+
"[class.tedi-radio--large]": "radioGroup?.size() === 'large'",
|
|
914
|
+
}, template: "<div class=\"tedi-radio__input-area\">\n <input\n class=\"tedi-radio__input\"\n type=\"radio\"\n #input\n [id]=\"inputId()\"\n [checked]=\"inputChecked()\"\n [disabled]=\"inputDisabled()\"\n [attr.name]=\"inputName()\"\n [attr.value]=\"value()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n (change)=\"onInputChange($event)\"\n />\n <div class=\"tedi-radio__indicator\"></div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-radio__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio{--_radio-bg: var(--form-checkbox-radio-default-background-default);--_radio-border: var(--form-checkbox-radio-default-border-default);--_radio-label-color: var(--general-text-primary);--_radio-dot-bg: var(--_radio-border);--_radio-dot-size: 12px;display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-radio{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-radio{--_label-size: var(--body-regular-size-desktop)}}.tedi-radio__input-area{position:relative;grid-area:input-area}.tedi-radio__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-radio__indicator{position:relative;width:var(--_radio-size);height:var(--_radio-size);border-radius:50%;border:1px solid var(--_radio-border);background:var(--_radio-bg);margin-right:var(--_radio-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-radio__indicator:after{content:\"\";border-radius:50%;display:none;background:var(--_radio-dot-bg);height:var(--_radio-dot-size);width:var(--_radio-dot-size)}.tedi-radio__label{color:var(--_radio-label-color);font-size:var(--_label-size);grid-area:label}.tedi-radio__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-radio__label{font-family:var(--family-primary-desktop)}}.tedi-radio:has(input:checked) .tedi-radio__indicator:after{display:block}.tedi-radio:has(input:checked){--_radio-border: var(--form-checkbox-radio-default-border-selected)}.tedi-radio:has(input:hover,input:focus-visible) .tedi-radio__indicator{outline:1px solid var(--_radio-border)}.tedi-radio:has(input:hover,input:focus-visible){--_radio-border: var(--form-checkbox-radio-default-border-hover)}.tedi-radio:has(input:active){--_radio-border: var(--form-checkbox-radio-default-border-active)}.tedi-radio:has(input:disabled){pointer-events:none;--_radio-label-color: var(--general-text-disabled);--_radio-bg: var(--form-input-background-disabled);--_radio-border: var(--form-input-border-disabled)}.tedi-radio:has(input:disabled:checked){--_radio-dot-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_radio-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-radio--error{--_radio-bg: var(--form-checkbox-radio-default-background-error);--_radio-border: var(--form-general-feedback-error-border)}.tedi-radio--large{--_radio-dot-size: 16px}.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-radio .tedi-feedback-text{grid-area:feedback}\n"] }]
|
|
915
|
+
}] });
|
|
916
|
+
|
|
917
|
+
class RadioCardGroupComponent extends RadioGroupComponent {
|
|
918
|
+
/*
|
|
919
|
+
* Direction in which radios flow.
|
|
920
|
+
*/
|
|
921
|
+
direction = input("row");
|
|
922
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioCardGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
923
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RadioCardGroupComponent, isStandalone: true, selector: "tedi-radio-card-group", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
924
|
+
{
|
|
925
|
+
provide: NG_VALUE_ACCESSOR,
|
|
926
|
+
useExisting: forwardRef(() => RadioCardGroupComponent),
|
|
927
|
+
multi: true,
|
|
928
|
+
},
|
|
929
|
+
// Necessary for DI in RadioComponent
|
|
930
|
+
{
|
|
931
|
+
provide: RadioGroupComponent,
|
|
932
|
+
useExisting: RadioCardGroupComponent,
|
|
933
|
+
},
|
|
934
|
+
], usesInheritance: true, hostDirectives: [{ directive: ChoiceGroupDirective, inputs: ["variant", "variant", "hasIndicator", "hasIndicator", "spacing", "spacing"] }], ngImport: i0, template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n", ".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
935
|
+
}
|
|
936
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioCardGroupComponent, decorators: [{
|
|
937
|
+
type: Component,
|
|
938
|
+
args: [{ standalone: true, selector: "tedi-radio-card-group", imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
939
|
+
{
|
|
940
|
+
provide: NG_VALUE_ACCESSOR,
|
|
941
|
+
useExisting: forwardRef(() => RadioCardGroupComponent),
|
|
942
|
+
multi: true,
|
|
943
|
+
},
|
|
944
|
+
// Necessary for DI in RadioComponent
|
|
945
|
+
{
|
|
946
|
+
provide: RadioGroupComponent,
|
|
947
|
+
useExisting: RadioCardGroupComponent,
|
|
948
|
+
},
|
|
949
|
+
], hostDirectives: [
|
|
950
|
+
{
|
|
951
|
+
directive: ChoiceGroupDirective,
|
|
952
|
+
inputs: ["variant", "hasIndicator", "spacing"],
|
|
953
|
+
},
|
|
954
|
+
], template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n", ".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n"] }]
|
|
955
|
+
}] });
|
|
956
|
+
|
|
957
|
+
class SelectOptionComponent {
|
|
958
|
+
/**
|
|
959
|
+
* Value of the option
|
|
960
|
+
*/
|
|
961
|
+
value = input.required();
|
|
962
|
+
/**
|
|
963
|
+
* Label of the option
|
|
964
|
+
*/
|
|
965
|
+
label = input.required();
|
|
966
|
+
/**
|
|
967
|
+
* Whether the option is disabled
|
|
968
|
+
*/
|
|
969
|
+
disabled = input(false);
|
|
970
|
+
/**
|
|
971
|
+
* Group the option belongs to
|
|
972
|
+
* This is used for grouping options in the dropdown.
|
|
973
|
+
* If not provided, the option will not be grouped.
|
|
974
|
+
*/
|
|
975
|
+
group = input(null);
|
|
976
|
+
templateRef = viewChild(TemplateRef);
|
|
977
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
978
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: SelectOptionComponent, isStandalone: true, selector: "tedi-select-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template><ng-content /></ng-template>", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
979
|
+
}
|
|
980
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectOptionComponent, decorators: [{
|
|
981
|
+
type: Component,
|
|
982
|
+
args: [{
|
|
983
|
+
selector: "tedi-select-option",
|
|
984
|
+
imports: [],
|
|
985
|
+
template: "<ng-template><ng-content /></ng-template>",
|
|
986
|
+
standalone: true,
|
|
987
|
+
encapsulation: ViewEncapsulation.None,
|
|
988
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
989
|
+
}]
|
|
990
|
+
}] });
|
|
991
|
+
|
|
992
|
+
class DropdownTriggerDirective {
|
|
993
|
+
dropdownContext = inject(DropdownComponent);
|
|
994
|
+
overlayOrigin = inject(CdkOverlayOrigin, { self: true });
|
|
995
|
+
ariaAttributes = computed(() => {
|
|
996
|
+
if (!this.dropdownContext.dropdownRole())
|
|
997
|
+
return {};
|
|
998
|
+
return {
|
|
999
|
+
hasPopup: this.dropdownContext.dropdownRole(),
|
|
1000
|
+
expanded: this.dropdownContext.opened() ? "true" : "false",
|
|
1001
|
+
controls: this.dropdownContext.opened()
|
|
1002
|
+
? this.dropdownContext.dropdownId()
|
|
1003
|
+
: undefined,
|
|
1004
|
+
};
|
|
1005
|
+
});
|
|
1006
|
+
onClick() {
|
|
1007
|
+
this.dropdownContext.toggle();
|
|
1008
|
+
}
|
|
1009
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1010
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: DropdownTriggerDirective, isStandalone: true, selector: "[tedi-dropdown-trigger]", host: { listeners: { "click": "onClick()" }, properties: { "attr.aria-has-popup": "ariaAttributes().hasPopup", "attr.aria-expanded": "ariaAttributes().expanded", "attr.aria-controls": "ariaAttributes().controls" } }, hostDirectives: [{ directive: i2.CdkOverlayOrigin }], ngImport: i0 });
|
|
1011
|
+
}
|
|
1012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownTriggerDirective, decorators: [{
|
|
1013
|
+
type: Directive,
|
|
1014
|
+
args: [{
|
|
1015
|
+
selector: "[tedi-dropdown-trigger]",
|
|
1016
|
+
host: {
|
|
1017
|
+
"[attr.aria-has-popup]": "ariaAttributes().hasPopup",
|
|
1018
|
+
"[attr.aria-expanded]": "ariaAttributes().expanded",
|
|
1019
|
+
"[attr.aria-controls]": "ariaAttributes().controls",
|
|
1020
|
+
"(click)": "onClick()",
|
|
1021
|
+
},
|
|
1022
|
+
hostDirectives: [CdkOverlayOrigin],
|
|
1023
|
+
}]
|
|
1024
|
+
}] });
|
|
1025
|
+
|
|
1026
|
+
class DropdownComponent {
|
|
1027
|
+
injector = inject(Injector);
|
|
1028
|
+
dropdownId = input.required();
|
|
1029
|
+
dropdownRole = input();
|
|
1030
|
+
opened = model(false);
|
|
1031
|
+
triggerDirective = contentChild.required(DropdownTriggerDirective);
|
|
1032
|
+
dropdownItems = contentChildren(forwardRef(() => DropdownItemComponent), { descendants: true });
|
|
1033
|
+
isMobile = inject(BreakpointService).isBelowBreakpoint("sm");
|
|
1034
|
+
keyManager;
|
|
1035
|
+
overlayOrigin = computed(() => {
|
|
1036
|
+
return this.triggerDirective().overlayOrigin;
|
|
1037
|
+
});
|
|
1038
|
+
toggle() {
|
|
1039
|
+
this.opened.update((wasOpened) => !wasOpened);
|
|
1040
|
+
}
|
|
1041
|
+
close() {
|
|
1042
|
+
this.opened.set(false);
|
|
1043
|
+
}
|
|
1044
|
+
onKeyDown(event) {
|
|
1045
|
+
this.keyManager?.onKeydown(event);
|
|
1046
|
+
}
|
|
1047
|
+
ngOnInit() {
|
|
1048
|
+
this.keyManager = new FocusKeyManager(this.dropdownItems, this.injector).withWrap();
|
|
1049
|
+
}
|
|
1050
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1051
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: DropdownComponent, isStandalone: true, selector: "tedi-dropdown", inputs: { dropdownId: { classPropertyName: "dropdownId", publicName: "dropdownId", isSignal: true, isRequired: true, transformFunction: null }, dropdownRole: { classPropertyName: "dropdownRole", publicName: "dropdownRole", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "openedChange" }, queries: [{ propertyName: "triggerDirective", first: true, predicate: DropdownTriggerDirective, descendants: true, isSignal: true }, { propertyName: "dropdownItems", predicate: i0.forwardRef(() => DropdownItemComponent), descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"[tedi-dropdown-trigger]\" />\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin()\"\n [cdkConnectedOverlayOpen]=\"opened()\"\n [cdkConnectedOverlayOffsetY]=\"4\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"16\"\n cdkConnectedOverlayPanelClass=\"tedi-dropdown__overlay-pane\"\n (overlayKeydown)=\"onKeyDown($event)\"\n (overlayOutsideClick)=\"close()\"\n>\n <tedi-card\n padding=\"none\"\n class=\"tedi-dropdown__card\"\n [attr.role]=\"dropdownRole()\"\n [attr.id]=\"dropdownId()\"\n >\n @if (isMobile()) {\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n (click)=\"close()\"\n size=\"small\"\n class=\"tedi-dropdown__close-button\"\n ></button>\n </tedi-card-content>\n }\n <tedi-card-content>\n <ng-content />\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-dropdown__card.tedi-card{box-shadow:0 1px 5px 0 var(--alpha-20, rgba(0, 0, 0, .2));overflow-y:auto}@media (max-width: 575.98px){.tedi-dropdown__card.tedi-card{position:fixed;inset:0}}.tedi-dropdown__close-button{margin-left:auto}@media (max-width: 575.98px){.tedi-dropdown__overlay-pane{transform:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1052
|
+
}
|
|
1053
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
1054
|
+
type: Component,
|
|
1055
|
+
args: [{ selector: "tedi-dropdown", imports: [
|
|
1056
|
+
OverlayModule,
|
|
1057
|
+
CardComponent,
|
|
1058
|
+
CardContentComponent,
|
|
1059
|
+
ClosingButtonComponent,
|
|
1060
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[tedi-dropdown-trigger]\" />\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin()\"\n [cdkConnectedOverlayOpen]=\"opened()\"\n [cdkConnectedOverlayOffsetY]=\"4\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"16\"\n cdkConnectedOverlayPanelClass=\"tedi-dropdown__overlay-pane\"\n (overlayKeydown)=\"onKeyDown($event)\"\n (overlayOutsideClick)=\"close()\"\n>\n <tedi-card\n padding=\"none\"\n class=\"tedi-dropdown__card\"\n [attr.role]=\"dropdownRole()\"\n [attr.id]=\"dropdownId()\"\n >\n @if (isMobile()) {\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n (click)=\"close()\"\n size=\"small\"\n class=\"tedi-dropdown__close-button\"\n ></button>\n </tedi-card-content>\n }\n <tedi-card-content>\n <ng-content />\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-dropdown__card.tedi-card{box-shadow:0 1px 5px 0 var(--alpha-20, rgba(0, 0, 0, .2));overflow-y:auto}@media (max-width: 575.98px){.tedi-dropdown__card.tedi-card{position:fixed;inset:0}}.tedi-dropdown__close-button{margin-left:auto}@media (max-width: 575.98px){.tedi-dropdown__overlay-pane{transform:none!important}}\n"] }]
|
|
1061
|
+
}] });
|
|
1062
|
+
|
|
1063
|
+
const itemRole = {
|
|
1064
|
+
menu: "menuitem",
|
|
1065
|
+
listbox: "option",
|
|
1066
|
+
};
|
|
1067
|
+
class DropdownItemComponent {
|
|
1068
|
+
element;
|
|
1069
|
+
/**
|
|
1070
|
+
* Applies the selected style to the dropdown item.
|
|
1071
|
+
*/
|
|
1072
|
+
selected = input(false);
|
|
1073
|
+
/**
|
|
1074
|
+
* Applies the disabled style to the dropdown item.
|
|
1075
|
+
*/
|
|
1076
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
1077
|
+
disabledInput = input(false, { alias: "disabled" });
|
|
1078
|
+
disabled; // for cdk/a11y keymanager
|
|
1079
|
+
itemSelected = output();
|
|
1080
|
+
dropdownContext = inject(DropdownComponent, { optional: true });
|
|
1081
|
+
ariaAttributes = computed(() => {
|
|
1082
|
+
const dropdownRole = this.dropdownContext?.dropdownRole();
|
|
1083
|
+
if (!dropdownRole)
|
|
1084
|
+
return {};
|
|
1085
|
+
return {
|
|
1086
|
+
role: itemRole[dropdownRole],
|
|
1087
|
+
disabled: String(this.disabledInput()),
|
|
1088
|
+
selected: dropdownRole === "listbox" ? String(this.selected()) : undefined,
|
|
1089
|
+
tabIndex: 0,
|
|
1090
|
+
};
|
|
1091
|
+
});
|
|
1092
|
+
focus() {
|
|
1093
|
+
this.element.nativeElement.focus();
|
|
1094
|
+
}
|
|
1095
|
+
onKeyDown(event) {
|
|
1096
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
1097
|
+
if (this.element.nativeElement.nodeName === "BUTTON") {
|
|
1098
|
+
event.preventDefault();
|
|
1099
|
+
}
|
|
1100
|
+
if (this.element.nativeElement.nodeName === "A" &&
|
|
1101
|
+
event.key === "Enter") {
|
|
1102
|
+
event.preventDefault();
|
|
1103
|
+
}
|
|
1104
|
+
this.selectItem();
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
selectItem() {
|
|
1108
|
+
this.dropdownContext?.close();
|
|
1109
|
+
this.itemSelected.emit();
|
|
1110
|
+
}
|
|
1111
|
+
constructor(element) {
|
|
1112
|
+
this.element = element;
|
|
1113
|
+
effect(() => {
|
|
1114
|
+
this.disabled = this.disabledInput();
|
|
1115
|
+
});
|
|
1116
|
+
}
|
|
1117
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1118
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: DropdownItemComponent, isStandalone: true, selector: "[tedi-dropdown-item]", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected" }, host: { listeners: { "click": "selectItem()", "keydown": "onKeyDown($event)" }, properties: { "class.tedi-dropdown-item": "true", "class.tedi-dropdown-item--active": "this.selected()", "class.tedi-dropdown-item--disabled": "this.disabledInput()", "attr.role": "ariaAttributes().role", "attr.aria-disabled": "ariaAttributes().disabled", "attr.aria-selected": "ariaAttributes().selected", "attr.tabindex": "ariaAttributes().tabIndex" } }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-dropdown-item{--_background-color: var(--dropdown-item-default-background);--_color: var(--dropdown-item-default-text);display:block;width:100%;background-color:var(--_background-color);color:var(--_color);cursor:pointer;text-align:left;border:none;border-radius:0}.tedi-dropdown-item{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-family:var(--family-primary-desktop)}}.tedi-dropdown-item{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-desktop)}}.tedi-dropdown-item{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-size:var(--body-regular-size-desktop)}}.tedi-dropdown-item{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-desktop)}}.tedi-dropdown-item{padding:var(--form-select-item-padding-y-mobile) var(--form-select-item-padding-x-mobile)}@media (min-width: 576px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-tablet) var(--form-select-item-padding-x-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-desktop) var(--form-select-item-padding-x-desktop)}}.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-mobile)}@media (min-width: 576px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-desktop)}}.tedi-dropdown-item--active,.tedi-dropdown-item--active:hover{--_background-color: var(--dropdown-item-active-background);--_color: var(--dropdown-item-active-text)}.tedi-dropdown-item--disabled,.tedi-dropdown-item--disabled:hover{--_background-color: var(--dropdown-item-disabled-background);--_color: var(--dropdown-item-disabled-text)}.tedi-dropdown-item:hover:not(.tedi-dropdown-item--active,.tedi-dropdown-item--disabled){--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:focus-visible{--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:first-child{border-top-left-radius:var(--_form-select-item-radius);border-top-right-radius:var(--_form-select-item-radius)}.tedi-dropdown-item:last-child{border-bottom-left-radius:var(--_form-select-item-radius);border-bottom-right-radius:var(--_form-select-item-radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1119
|
+
}
|
|
1120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownItemComponent, decorators: [{
|
|
1121
|
+
type: Component,
|
|
1122
|
+
args: [{ selector: "[tedi-dropdown-item]", template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1123
|
+
"[class.tedi-dropdown-item]": "true",
|
|
1124
|
+
"[class.tedi-dropdown-item--active]": "this.selected()",
|
|
1125
|
+
"[class.tedi-dropdown-item--disabled]": "this.disabledInput()",
|
|
1126
|
+
"[attr.role]": "ariaAttributes().role",
|
|
1127
|
+
"[attr.aria-disabled]": "ariaAttributes().disabled",
|
|
1128
|
+
"[attr.aria-selected]": "ariaAttributes().selected",
|
|
1129
|
+
"[attr.tabindex]": "ariaAttributes().tabIndex",
|
|
1130
|
+
"(click)": "selectItem()",
|
|
1131
|
+
"(keydown)": "onKeyDown($event)",
|
|
1132
|
+
}, styles: [".tedi-dropdown-item{--_background-color: var(--dropdown-item-default-background);--_color: var(--dropdown-item-default-text);display:block;width:100%;background-color:var(--_background-color);color:var(--_color);cursor:pointer;text-align:left;border:none;border-radius:0}.tedi-dropdown-item{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-family:var(--family-primary-desktop)}}.tedi-dropdown-item{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-desktop)}}.tedi-dropdown-item{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-size:var(--body-regular-size-desktop)}}.tedi-dropdown-item{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-desktop)}}.tedi-dropdown-item{padding:var(--form-select-item-padding-y-mobile) var(--form-select-item-padding-x-mobile)}@media (min-width: 576px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-tablet) var(--form-select-item-padding-x-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-desktop) var(--form-select-item-padding-x-desktop)}}.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-mobile)}@media (min-width: 576px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-desktop)}}.tedi-dropdown-item--active,.tedi-dropdown-item--active:hover{--_background-color: var(--dropdown-item-active-background);--_color: var(--dropdown-item-active-text)}.tedi-dropdown-item--disabled,.tedi-dropdown-item--disabled:hover{--_background-color: var(--dropdown-item-disabled-background);--_color: var(--dropdown-item-disabled-text)}.tedi-dropdown-item:hover:not(.tedi-dropdown-item--active,.tedi-dropdown-item--disabled){--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:focus-visible{--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:first-child{border-top-left-radius:var(--_form-select-item-radius);border-top-right-radius:var(--_form-select-item-radius)}.tedi-dropdown-item:last-child{border-bottom-left-radius:var(--_form-select-item-radius);border-bottom-right-radius:var(--_form-select-item-radius)}\n"] }]
|
|
1133
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
1134
|
+
|
|
1135
|
+
const modalBreakpoints = ["xs", "sm", "md", "lg", "xl"];
|
|
1136
|
+
class ModalComponent {
|
|
1137
|
+
maxWidth = model("sm");
|
|
1138
|
+
variant = model("default");
|
|
1139
|
+
dialogRef = inject(DialogRef, { optional: true });
|
|
1140
|
+
dialogData = inject(DIALOG_DATA, {
|
|
1141
|
+
optional: true,
|
|
1142
|
+
});
|
|
1143
|
+
// host classes
|
|
1144
|
+
hostClasses = computed(() => {
|
|
1145
|
+
const classes = ["tedi-modal"];
|
|
1146
|
+
if (this.variant() === "small") {
|
|
1147
|
+
classes.push("tedi-modal--padding-small");
|
|
1148
|
+
}
|
|
1149
|
+
for (const breakpoint of modalBreakpoints) {
|
|
1150
|
+
if (this.maxWidth() === breakpoint) {
|
|
1151
|
+
classes.push(`tedi-modal--width-${breakpoint}`);
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
return classes.join(" ");
|
|
1155
|
+
});
|
|
1156
|
+
ngOnInit() {
|
|
1157
|
+
const data = this.dialogData;
|
|
1158
|
+
this.dialogRef?.addPanelClass("tedi-modal-panel");
|
|
1159
|
+
if (!data)
|
|
1160
|
+
return;
|
|
1161
|
+
if (data.maxWidth) {
|
|
1162
|
+
this.maxWidth.set(data.maxWidth);
|
|
1163
|
+
}
|
|
1164
|
+
if (data.variant) {
|
|
1165
|
+
this.variant.set(data.variant);
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1169
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: ModalComponent, isStandalone: true, selector: "tedi-modal", inputs: { maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { maxWidth: "maxWidthChange", variant: "variantChange" }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: "<div class=\"tedi-modal__container\">\n <ng-content select=\"tedi-modal-header\" />\n <div class=\"tedi-modal__content\" cdkScrollable>\n <ng-content />\n </div>\n\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media (prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media (forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-desktop)}}.tedi-modal{--_modal-border: var(--borders-01) solid var(--modal-border);--_modal-padding: var(--dimensions-13);overflow:auto;----_tedi-modal-heading-padding-x-x-desktop: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-tablet: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-mobile: var(--dimensions-10);----_tedi-modal-heading-padding-x-y-desktop: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-tablet: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-mobile: var(--dimensions-05)}.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-desktop)}}.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-desktop)}}.tedi-modal--padding-small{--modal-heading-padding-x-desktop: var(--dimensions-10);--modal-heading-padding-x-tablet: var(--dimensions-10);--modal-heading-padding-x-mobile: var(--dimensions-10);--modal-heading-padding-y-desktop: var(--dimensions-05);--modal-heading-padding-y-tablet: var(--dimensions-05);--modal-heading-padding-y-mobile: var(--dimensions-05);--modal-footer-padding-x-desktop: var(--dimensions-10);--modal-footer-padding-x-tablet: var(--dimensions-10);--modal-footer-padding-x-mobile: var(--dimensions-10);--modal-footer-padding-y-desktop: var(--dimensions-05);--modal-footer-padding-y-tablet: var(--dimensions-05);--modal-footer-padding-y-mobile: var(--dimensions-05)}.tedi-modal__content{padding:var(--_modal-padding);overflow-y:auto}.tedi-modal__container{display:flex;flex-direction:column;max-height:95dvh;background-color:var(--modal-background);border:var(--_modal-border)}.tedi-modal__container{border-radius:var(--modal-radius-mobile)}@media (min-width: 576px){.tedi-modal__container{border-radius:var(--modal-radius-tablet)}}@media (min-width: 992px){.tedi-modal__container{border-radius:var(--modal-radius-desktop)}}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "directive", type: CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], encapsulation: i0.ViewEncapsulation.None });
|
|
1170
|
+
}
|
|
1171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalComponent, decorators: [{
|
|
1172
|
+
type: Component,
|
|
1173
|
+
args: [{ selector: "tedi-modal", imports: [DialogModule, CdkScrollable], encapsulation: ViewEncapsulation.None, host: {
|
|
1174
|
+
"[class]": "hostClasses()",
|
|
1175
|
+
}, template: "<div class=\"tedi-modal__container\">\n <ng-content select=\"tedi-modal-header\" />\n <div class=\"tedi-modal__content\" cdkScrollable>\n <ng-content />\n </div>\n\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media (prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media (forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-desktop)}}.tedi-modal{--_modal-border: var(--borders-01) solid var(--modal-border);--_modal-padding: var(--dimensions-13);overflow:auto;----_tedi-modal-heading-padding-x-x-desktop: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-tablet: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-mobile: var(--dimensions-10);----_tedi-modal-heading-padding-x-y-desktop: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-tablet: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-mobile: var(--dimensions-05)}.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-desktop)}}.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-desktop)}}.tedi-modal--padding-small{--modal-heading-padding-x-desktop: var(--dimensions-10);--modal-heading-padding-x-tablet: var(--dimensions-10);--modal-heading-padding-x-mobile: var(--dimensions-10);--modal-heading-padding-y-desktop: var(--dimensions-05);--modal-heading-padding-y-tablet: var(--dimensions-05);--modal-heading-padding-y-mobile: var(--dimensions-05);--modal-footer-padding-x-desktop: var(--dimensions-10);--modal-footer-padding-x-tablet: var(--dimensions-10);--modal-footer-padding-x-mobile: var(--dimensions-10);--modal-footer-padding-y-desktop: var(--dimensions-05);--modal-footer-padding-y-tablet: var(--dimensions-05);--modal-footer-padding-y-mobile: var(--dimensions-05)}.tedi-modal__content{padding:var(--_modal-padding);overflow-y:auto}.tedi-modal__container{display:flex;flex-direction:column;max-height:95dvh;background-color:var(--modal-background);border:var(--_modal-border)}.tedi-modal__container{border-radius:var(--modal-radius-mobile)}@media (min-width: 576px){.tedi-modal__container{border-radius:var(--modal-radius-tablet)}}@media (min-width: 992px){.tedi-modal__container{border-radius:var(--modal-radius-desktop)}}\n"] }]
|
|
1176
|
+
}] });
|
|
1177
|
+
|
|
1178
|
+
class ModalFooterComponent {
|
|
1179
|
+
align = model("flex-end");
|
|
1180
|
+
buttons = model();
|
|
1181
|
+
dialogData = inject(DIALOG_DATA, {
|
|
1182
|
+
optional: true,
|
|
1183
|
+
});
|
|
1184
|
+
ngOnInit() {
|
|
1185
|
+
const data = this.dialogData;
|
|
1186
|
+
if (!data)
|
|
1187
|
+
return;
|
|
1188
|
+
const { buttons, align: alignButtons } = data;
|
|
1189
|
+
if (buttons) {
|
|
1190
|
+
this.buttons.set(buttons);
|
|
1191
|
+
}
|
|
1192
|
+
if (alignButtons) {
|
|
1193
|
+
this.align.set(alignButtons);
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1197
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ModalFooterComponent, isStandalone: true, selector: "tedi-modal-footer", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { align: "alignChange", buttons: "buttonsChange" }, ngImport: i0, template: "<div class=\"tedi-modal-footer\" [style.justify-content]=\"align()\">\n <ng-content>\n @for (button of buttons(); track button.label) {\n <button\n tedi-button\n [size]=\"button.size || 'small'\"\n [variant]=\"button.variant || 'secondary'\"\n [disabled]=\"button.disabled\"\n [ngStyle]=\"button.style\"\n (click)=\"button.action()\"\n >\n @if (button.icon && button.iconPosition == \"start\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n {{ button.label }}\n @if (button.icon && button.iconPosition == \"end\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n </button>\n }\n </ng-content>\n</div>\n", styles: [".tedi-modal-footer{--_modal-footer-gap: .5rem;display:flex;gap:var(--_modal-footer-gap);border-top:var(--_modal-border);padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
1198
|
+
}
|
|
1199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalFooterComponent, decorators: [{
|
|
1200
|
+
type: Component,
|
|
1201
|
+
args: [{ selector: "tedi-modal-footer", imports: [ButtonComponent, IconComponent, NgStyle], template: "<div class=\"tedi-modal-footer\" [style.justify-content]=\"align()\">\n <ng-content>\n @for (button of buttons(); track button.label) {\n <button\n tedi-button\n [size]=\"button.size || 'small'\"\n [variant]=\"button.variant || 'secondary'\"\n [disabled]=\"button.disabled\"\n [ngStyle]=\"button.style\"\n (click)=\"button.action()\"\n >\n @if (button.icon && button.iconPosition == \"start\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n {{ button.label }}\n @if (button.icon && button.iconPosition == \"end\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n </button>\n }\n </ng-content>\n</div>\n", styles: [".tedi-modal-footer{--_modal-footer-gap: .5rem;display:flex;gap:var(--_modal-footer-gap);border-top:var(--_modal-border);padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x)}\n"] }]
|
|
1202
|
+
}] });
|
|
1203
|
+
|
|
1204
|
+
class ModalHeaderComponent {
|
|
1205
|
+
title = model("Title");
|
|
1206
|
+
feedback = model();
|
|
1207
|
+
closeButton = model(true);
|
|
1208
|
+
dialogRef = inject(DialogRef, { optional: true });
|
|
1209
|
+
dialogData = inject(DIALOG_DATA, {
|
|
1210
|
+
optional: true,
|
|
1211
|
+
});
|
|
1212
|
+
closeModal() {
|
|
1213
|
+
this.dialogRef?.close();
|
|
1214
|
+
}
|
|
1215
|
+
ngOnInit() {
|
|
1216
|
+
const data = this.dialogData;
|
|
1217
|
+
if (!data)
|
|
1218
|
+
return;
|
|
1219
|
+
const { title, feedback, closeButton } = data;
|
|
1220
|
+
if (title) {
|
|
1221
|
+
this.title.set(title);
|
|
1222
|
+
}
|
|
1223
|
+
if (feedback) {
|
|
1224
|
+
this.feedback.set({
|
|
1225
|
+
...feedback,
|
|
1226
|
+
});
|
|
1227
|
+
}
|
|
1228
|
+
if (typeof closeButton === "boolean") {
|
|
1229
|
+
this.closeButton.set(data.closeButton);
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1232
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1233
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ModalHeaderComponent, isStandalone: true, selector: "tedi-modal-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null }, closeButton: { classPropertyName: "closeButton", publicName: "closeButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange", feedback: "feedbackChange", closeButton: "closeButtonChange" }, ngImport: i0, template: "<div class=\"tedi-modal-header\">\n <div class=\"tedi-modal-header__title\">\n <ng-content>\n <h1 tedi-text modifiers=\"h3\">\n {{ title() }}\n </h1>\n </ng-content>\n\n <ng-content select=\"[header-exit-button]\">\n @if (closeButton()) {\n <button\n tedi-closing-button\n variant=\"neutral\"\n (click)=\"closeModal()\"\n ></button>\n }\n </ng-content>\n </div>\n\n @if (feedback()) {\n <tedi-feedback-text\n [text]=\"feedback()!.text\"\n [type]=\"feedback()!.type\"\n [position]=\"feedback()!.position\"\n />\n }\n</div>\n", styles: [".tedi-modal-header{border-bottom:var(--_modal-border);padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x)}.tedi-modal-header__title{display:flex;justify-content:space-between;align-items:center}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }] });
|
|
1234
|
+
}
|
|
1235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalHeaderComponent, decorators: [{
|
|
1236
|
+
type: Component,
|
|
1237
|
+
args: [{ selector: "tedi-modal-header", imports: [FeedbackTextComponent, ClosingButtonComponent, TextComponent], template: "<div class=\"tedi-modal-header\">\n <div class=\"tedi-modal-header__title\">\n <ng-content>\n <h1 tedi-text modifiers=\"h3\">\n {{ title() }}\n </h1>\n </ng-content>\n\n <ng-content select=\"[header-exit-button]\">\n @if (closeButton()) {\n <button\n tedi-closing-button\n variant=\"neutral\"\n (click)=\"closeModal()\"\n ></button>\n }\n </ng-content>\n </div>\n\n @if (feedback()) {\n <tedi-feedback-text\n [text]=\"feedback()!.text\"\n [type]=\"feedback()!.type\"\n [position]=\"feedback()!.position\"\n />\n }\n</div>\n", styles: [".tedi-modal-header{border-bottom:var(--_modal-border);padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x)}.tedi-modal-header__title{display:flex;justify-content:space-between;align-items:center}\n"] }]
|
|
1238
|
+
}] });
|
|
1239
|
+
|
|
1240
|
+
class SelectComponent {
|
|
1241
|
+
/**
|
|
1242
|
+
* The id of the select input (for label association).
|
|
1243
|
+
* @default ""
|
|
1244
|
+
*/
|
|
1245
|
+
inputId = input.required();
|
|
1246
|
+
/**
|
|
1247
|
+
* The label for the select input.
|
|
1248
|
+
* @default ""
|
|
1249
|
+
*/
|
|
1250
|
+
label = input();
|
|
1251
|
+
/**
|
|
1252
|
+
* Should show label as required?
|
|
1253
|
+
* @default false
|
|
1254
|
+
*/
|
|
1255
|
+
required = input(false);
|
|
1256
|
+
/**
|
|
1257
|
+
* The placeholder text to display when no option is selected.
|
|
1258
|
+
* @default ""
|
|
1259
|
+
*/
|
|
1260
|
+
placeholder = input("");
|
|
1261
|
+
/**
|
|
1262
|
+
* The state of the input.
|
|
1263
|
+
* @default "default"
|
|
1264
|
+
*/
|
|
1265
|
+
state = input("default");
|
|
1266
|
+
/**
|
|
1267
|
+
* The size of the input.
|
|
1268
|
+
* @default "default"
|
|
1269
|
+
*/
|
|
1270
|
+
size = input("default");
|
|
1271
|
+
/**
|
|
1272
|
+
* Whether the clear button will be shown when an option is selected.
|
|
1273
|
+
* @default false
|
|
1274
|
+
*/
|
|
1275
|
+
clearable = input(true);
|
|
1276
|
+
feedbackText = input();
|
|
1277
|
+
isOpen = signal(false);
|
|
1278
|
+
selectedOptions = signal([]);
|
|
1279
|
+
listboxRef = viewChild(CdkListbox, { read: ElementRef });
|
|
1280
|
+
triggerRef = viewChild(CdkOverlayOrigin, { read: ElementRef });
|
|
1281
|
+
hostRef = inject(ElementRef);
|
|
1282
|
+
options = contentChildren(SelectOptionComponent);
|
|
1283
|
+
dropdownWidth = signal(0);
|
|
1284
|
+
disabled = signal(false);
|
|
1285
|
+
optionGroups = computed(() => {
|
|
1286
|
+
const groups = [];
|
|
1287
|
+
this.options().forEach((option) => {
|
|
1288
|
+
const group = groups.find((g) => g.label === option.group());
|
|
1289
|
+
if (group) {
|
|
1290
|
+
group.options.push(option);
|
|
1291
|
+
}
|
|
1292
|
+
else {
|
|
1293
|
+
groups.push({ label: option.group() ?? "", options: [option] });
|
|
1294
|
+
}
|
|
1295
|
+
});
|
|
1296
|
+
return groups;
|
|
1297
|
+
});
|
|
1298
|
+
ngAfterContentChecked() {
|
|
1299
|
+
this.setDropdownWidth();
|
|
1300
|
+
}
|
|
1301
|
+
onWindowResize() {
|
|
1302
|
+
this.setDropdownWidth();
|
|
1303
|
+
}
|
|
1304
|
+
toggleIsOpen(value) {
|
|
1305
|
+
if (this.disabled())
|
|
1306
|
+
return;
|
|
1307
|
+
if (value === undefined) {
|
|
1308
|
+
this.isOpen.update((previousValue) => !previousValue);
|
|
1309
|
+
}
|
|
1310
|
+
else if (value === false) {
|
|
1311
|
+
this.isOpen.set(value);
|
|
1312
|
+
this.focusTrigger();
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
handleValueChange(event) {
|
|
1316
|
+
const selected = event.value[0] ?? null;
|
|
1317
|
+
this.selectedOptions.set(selected ? [selected] : []);
|
|
1318
|
+
this.onChange(selected);
|
|
1319
|
+
this.onTouched();
|
|
1320
|
+
this.toggleIsOpen(false);
|
|
1321
|
+
}
|
|
1322
|
+
clear(event) {
|
|
1323
|
+
event.preventDefault();
|
|
1324
|
+
event.stopPropagation();
|
|
1325
|
+
this.selectedOptions.set([]);
|
|
1326
|
+
this.onChange(null);
|
|
1327
|
+
this.onTouched();
|
|
1328
|
+
}
|
|
1329
|
+
focusListboxWhenVisible = effect(() => {
|
|
1330
|
+
if (this.listboxRef())
|
|
1331
|
+
this.listboxRef()?.nativeElement.focus();
|
|
1332
|
+
});
|
|
1333
|
+
focusTrigger() {
|
|
1334
|
+
this.triggerRef()?.nativeElement.focus();
|
|
1335
|
+
}
|
|
1336
|
+
isOptionSelected(option) {
|
|
1337
|
+
return this.selectedOptions().includes(option);
|
|
1338
|
+
}
|
|
1339
|
+
selectedLabels = computed(() => {
|
|
1340
|
+
return this.options()
|
|
1341
|
+
.filter((option) => this.isOptionSelected(option.value()))
|
|
1342
|
+
.map((option) => option.label());
|
|
1343
|
+
});
|
|
1344
|
+
setDropdownWidth() {
|
|
1345
|
+
const computedWidth = this.hostRef?.nativeElement?.getBoundingClientRect()?.width ?? 0;
|
|
1346
|
+
this.dropdownWidth.set(computedWidth);
|
|
1347
|
+
}
|
|
1348
|
+
// ControlValueAccessor implementation
|
|
1349
|
+
onChange = () => { };
|
|
1350
|
+
onTouched = () => { };
|
|
1351
|
+
writeValue(value) {
|
|
1352
|
+
this.selectedOptions.set(value ? [value] : []);
|
|
1353
|
+
}
|
|
1354
|
+
registerOnChange(fn) {
|
|
1355
|
+
this.onChange = fn;
|
|
1356
|
+
}
|
|
1357
|
+
registerOnTouched(fn) {
|
|
1358
|
+
this.onTouched = fn;
|
|
1359
|
+
}
|
|
1360
|
+
setDisabledState(isDisabled) {
|
|
1361
|
+
this.disabled.set(isDisabled);
|
|
1362
|
+
}
|
|
1363
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1364
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: SelectComponent, isStandalone: true, selector: "tedi-select", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onWindowResize()" }, classAttribute: "tedi-select" }, providers: [
|
|
1365
|
+
{
|
|
1366
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1367
|
+
useExisting: forwardRef(() => SelectComponent),
|
|
1368
|
+
multi: true,
|
|
1369
|
+
},
|
|
1370
|
+
], queries: [{ propertyName: "options", predicate: SelectOptionComponent, isSignal: true }], viewQueries: [{ propertyName: "listboxRef", first: true, predicate: CdkListbox, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "triggerRef", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedLabels().length) {\n {{ selectedLabels() }}\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxUseActiveDescendant\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n >\n @if (options().length) {\n @for (group of optionGroups(); track $index) {\n @if (group.label.length > 0) {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [selected]=\"isOptionSelected(option.value())\"\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n @if (option.templateRef(); as optionNgContent) {\n <div class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionNgContent\" />\n </div>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n }\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: CdkListboxModule }, { kind: "directive", type: i3.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i3.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "component", type: InputComponent, selector: "[tedi-input]", inputs: ["size", "state"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: DropdownItemComponent, selector: "[tedi-dropdown-item]", inputs: ["selected", "disabled"], outputs: ["itemSelected"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1371
|
+
}
|
|
1372
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectComponent, decorators: [{
|
|
1373
|
+
type: Component,
|
|
1374
|
+
args: [{ selector: "tedi-select", imports: [
|
|
1375
|
+
CommonModule,
|
|
1376
|
+
OverlayModule,
|
|
1377
|
+
CdkListboxModule,
|
|
1378
|
+
InputComponent,
|
|
1379
|
+
CardComponent,
|
|
1380
|
+
CardContentComponent,
|
|
1381
|
+
DropdownItemComponent,
|
|
1382
|
+
ClosingButtonComponent,
|
|
1383
|
+
IconComponent,
|
|
1384
|
+
LabelComponent,
|
|
1385
|
+
FeedbackTextComponent,
|
|
1386
|
+
TextComponent,
|
|
1387
|
+
TediTranslationPipe,
|
|
1388
|
+
], standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1389
|
+
class: "tedi-select",
|
|
1390
|
+
}, providers: [
|
|
1391
|
+
{
|
|
1392
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1393
|
+
useExisting: forwardRef(() => SelectComponent),
|
|
1394
|
+
multi: true,
|
|
1395
|
+
},
|
|
1396
|
+
], template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedLabels().length) {\n {{ selectedLabels() }}\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxUseActiveDescendant\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n >\n @if (options().length) {\n @for (group of optionGroups(); track $index) {\n @if (group.label.length > 0) {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [selected]=\"isOptionSelected(option.value())\"\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n @if (option.templateRef(); as optionNgContent) {\n <div class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionNgContent\" />\n </div>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n }\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"] }]
|
|
1397
|
+
}], propDecorators: { onWindowResize: [{
|
|
1398
|
+
type: HostListener,
|
|
1399
|
+
args: ["window:resize"]
|
|
1400
|
+
}] } });
|
|
1401
|
+
|
|
1402
|
+
class TagComponent {
|
|
1403
|
+
/**
|
|
1404
|
+
* Whether the tag is in loading state.
|
|
1405
|
+
* When true, a spinner will be displayed inside the tag.
|
|
1406
|
+
* @default false
|
|
1407
|
+
*/
|
|
1408
|
+
loading = input(false);
|
|
1409
|
+
/**
|
|
1410
|
+
* Whether the tag can be closed.
|
|
1411
|
+
* When true, a close button will be displayed that emits the 'closed' event when clicked.
|
|
1412
|
+
* @default false
|
|
1413
|
+
*/
|
|
1414
|
+
closable = input(false);
|
|
1415
|
+
/**
|
|
1416
|
+
* The visual style of the tag.
|
|
1417
|
+
* Possible values: 'primary', 'secondary', 'danger'
|
|
1418
|
+
* @default "primary"
|
|
1419
|
+
*/
|
|
1420
|
+
type = input("primary");
|
|
1421
|
+
/**
|
|
1422
|
+
* Event emitted when the close button is clicked.
|
|
1423
|
+
* Only relevant when closable is true.
|
|
1424
|
+
*/
|
|
1425
|
+
closed = output();
|
|
1426
|
+
classes = computed(() => {
|
|
1427
|
+
const classList = [];
|
|
1428
|
+
if (this.type()) {
|
|
1429
|
+
classList.push(`tedi-tag--${this.type()}`);
|
|
1430
|
+
}
|
|
1431
|
+
return classList.join(" ");
|
|
1432
|
+
});
|
|
1433
|
+
handleClose(event) {
|
|
1434
|
+
this.closed.emit(event);
|
|
1435
|
+
}
|
|
1436
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1437
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TagComponent, isStandalone: true, selector: "tedi-tag", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { properties: { "class.tedi-tag": "true", "class.tedi-tag--loading": "loading()", "class.tedi-tag--closable": "closable()", "class": "classes()" } }, ngImport: i0, template: "@if (type() === \"danger\") {\n <span class=\"tedi-tag__icon-wrapper\">\n <tedi-icon name=\"error\" color=\"danger\" [size]=\"16\" />\n </span>\n}\n\n<span class=\"tedi-tag__content\">\n <ng-content />\n</span>\n\n@if (loading()) {\n <span class=\"tedi-tag__spinner-wrapper\">\n <tedi-spinner [size]=\"10\" />\n </span>\n} @else if (closable()) {\n <!-- TODO: Not sure about the aria-label and title here. Should they come from input and be translatable? -->\n <button\n type=\"button\"\n class=\"tedi-tag__closing-button\"\n [attr.aria-label]=\"'remove' | tediTranslate\"\n [title]=\"'remove' | tediTranslate\"\n (click)=\"handleClose($event)\"\n >\n <tedi-icon name=\"close\" [size]=\"18\" />\n </button>\n}\n", styles: [".tedi-tag{--_background-color: var(--tag-primary-background);--_border-color: var(--tag-primary-border);--_border-width: 1px;--_tag-padding-y: calc(var(--tag-default-padding-y) - var(--_border-width));display:inline-flex;align-items:flex-start;gap:var(--_gap-x);padding:0 var(--_padding-x);background-color:var(--_background-color);border:var(--_border-width) solid;border-color:var(--_border-color);border-radius:var(--_border-radius);font-family:var(--family-primary);color:var(--general-text-primary);line-height:var(--_line-height);overflow:hidden}.tedi-tag{--_padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag{--_padding-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{--_border-radius: var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-tag{--_border-radius: var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-tag{--_border-radius: var(--tag-default-radius-desktop)}}.tedi-tag{--_gap-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 576px){.tedi-tag{font-weight:var(--body-small-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tag{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-tag{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 576px){.tedi-tag{font-size:var(--body-small-regular-size-tablet)}}@media (min-width: 992px){.tedi-tag{font-size:var(--body-small-regular-size-desktop)}}.tedi-tag{--_line-height: var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-desktop)}}.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag__content{padding:calc(var(--_tag-padding-y) - var(--_border-width)) 0}.tedi-tag__icon-wrapper{line-height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag__closing-button{display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;border:none;background-color:#00000003;transition:background-color .3s ease-in-out;height:calc(var(--_button-height) - var(--_border-width) * 2)}.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button:hover,.tedi-tag__closing-button:focus{background-color:#0000001a}.tedi-tag__spinner-wrapper{display:flex;align-items:center;height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag--closable:not(.tedi-tag--loading){padding-right:0}.tedi-tag--secondary{--_background-color: var(--tag-secondary-background);--_border-color: var(--tag-secondary-border)}.tedi-tag--danger{--_background-color: var(--tag-danger-background);--_border-color: var(--tag-danger-border)}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "tedi-spinner", inputs: ["size", "color", "label"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1438
|
+
}
|
|
1439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TagComponent, decorators: [{
|
|
1440
|
+
type: Component,
|
|
1441
|
+
args: [{ selector: "tedi-tag", imports: [SpinnerComponent, IconComponent, TediTranslationPipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1442
|
+
"[class.tedi-tag]": "true",
|
|
1443
|
+
"[class.tedi-tag--loading]": "loading()",
|
|
1444
|
+
"[class.tedi-tag--closable]": "closable()",
|
|
1445
|
+
"[class]": "classes()",
|
|
1446
|
+
}, template: "@if (type() === \"danger\") {\n <span class=\"tedi-tag__icon-wrapper\">\n <tedi-icon name=\"error\" color=\"danger\" [size]=\"16\" />\n </span>\n}\n\n<span class=\"tedi-tag__content\">\n <ng-content />\n</span>\n\n@if (loading()) {\n <span class=\"tedi-tag__spinner-wrapper\">\n <tedi-spinner [size]=\"10\" />\n </span>\n} @else if (closable()) {\n <!-- TODO: Not sure about the aria-label and title here. Should they come from input and be translatable? -->\n <button\n type=\"button\"\n class=\"tedi-tag__closing-button\"\n [attr.aria-label]=\"'remove' | tediTranslate\"\n [title]=\"'remove' | tediTranslate\"\n (click)=\"handleClose($event)\"\n >\n <tedi-icon name=\"close\" [size]=\"18\" />\n </button>\n}\n", styles: [".tedi-tag{--_background-color: var(--tag-primary-background);--_border-color: var(--tag-primary-border);--_border-width: 1px;--_tag-padding-y: calc(var(--tag-default-padding-y) - var(--_border-width));display:inline-flex;align-items:flex-start;gap:var(--_gap-x);padding:0 var(--_padding-x);background-color:var(--_background-color);border:var(--_border-width) solid;border-color:var(--_border-color);border-radius:var(--_border-radius);font-family:var(--family-primary);color:var(--general-text-primary);line-height:var(--_line-height);overflow:hidden}.tedi-tag{--_padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag{--_padding-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{--_border-radius: var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-tag{--_border-radius: var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-tag{--_border-radius: var(--tag-default-radius-desktop)}}.tedi-tag{--_gap-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 576px){.tedi-tag{font-weight:var(--body-small-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tag{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-tag{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 576px){.tedi-tag{font-size:var(--body-small-regular-size-tablet)}}@media (min-width: 992px){.tedi-tag{font-size:var(--body-small-regular-size-desktop)}}.tedi-tag{--_line-height: var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-desktop)}}.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag__content{padding:calc(var(--_tag-padding-y) - var(--_border-width)) 0}.tedi-tag__icon-wrapper{line-height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag__closing-button{display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;border:none;background-color:#00000003;transition:background-color .3s ease-in-out;height:calc(var(--_button-height) - var(--_border-width) * 2)}.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button:hover,.tedi-tag__closing-button:focus{background-color:#0000001a}.tedi-tag__spinner-wrapper{display:flex;align-items:center;height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag--closable:not(.tedi-tag--loading){padding-right:0}.tedi-tag--secondary{--_background-color: var(--tag-secondary-background);--_border-color: var(--tag-secondary-border)}.tedi-tag--danger{--_background-color: var(--tag-danger-background);--_border-color: var(--tag-danger-border)}\n"] }]
|
|
1447
|
+
}] });
|
|
1448
|
+
|
|
1449
|
+
class StatusBadgeComponent {
|
|
1450
|
+
/**
|
|
1451
|
+
* Additional classes to apply custom styles to the StatusBadge.
|
|
1452
|
+
*/
|
|
1453
|
+
className = input();
|
|
1454
|
+
/**
|
|
1455
|
+
* Provides the full text or description when the Badge represents an abbreviation.
|
|
1456
|
+
* This is typically shown as a tooltip on hover.
|
|
1457
|
+
*/
|
|
1458
|
+
title = input();
|
|
1459
|
+
/**
|
|
1460
|
+
* ID attribute
|
|
1461
|
+
*/
|
|
1462
|
+
id = input();
|
|
1463
|
+
/**
|
|
1464
|
+
* ARIA role attribute for accessibility.
|
|
1465
|
+
*/
|
|
1466
|
+
role = input();
|
|
1467
|
+
/**
|
|
1468
|
+
* Specifies the color scheme of the StatusBadge.
|
|
1469
|
+
* @default default
|
|
1470
|
+
*/
|
|
1471
|
+
color = input("neutral");
|
|
1472
|
+
/**
|
|
1473
|
+
* Determines the style or visual type of the StatusBadge.
|
|
1474
|
+
* @default filled
|
|
1475
|
+
*/
|
|
1476
|
+
variant = input("filled");
|
|
1477
|
+
/**
|
|
1478
|
+
* Specifies the size of the StatusBadge.
|
|
1479
|
+
* @default default
|
|
1480
|
+
*/
|
|
1481
|
+
size = input("default");
|
|
1482
|
+
/**
|
|
1483
|
+
* StatusBadge status indicator
|
|
1484
|
+
*/
|
|
1485
|
+
status = input("inactive");
|
|
1486
|
+
/**
|
|
1487
|
+
* The name of the icon to be displayed inside the StatusBadge. The icon is rendered using the `Icon` component.
|
|
1488
|
+
*/
|
|
1489
|
+
icon = input("");
|
|
1490
|
+
classes = computed(() => {
|
|
1491
|
+
const classList = ["tedi-status-badge"];
|
|
1492
|
+
if (this.color()) {
|
|
1493
|
+
classList.push(`tedi-status-badge--color-${this.color()}`);
|
|
1494
|
+
}
|
|
1495
|
+
if (this.variant()) {
|
|
1496
|
+
classList.push(`tedi-status-badge--variant-${this.variant()}`);
|
|
1497
|
+
}
|
|
1498
|
+
if (this.status() && this.status() !== "none") {
|
|
1499
|
+
classList.push("tedi-status-badge--status", `tedi-status-badge--status-${this.status()}`);
|
|
1500
|
+
}
|
|
1501
|
+
if (this.size() === "large") {
|
|
1502
|
+
classList.push("tedi-status-badge--large");
|
|
1503
|
+
}
|
|
1504
|
+
if (this.icon() && !this.title()) {
|
|
1505
|
+
classList.push("tedi-status-badge__icon-only");
|
|
1506
|
+
}
|
|
1507
|
+
if (this.className()) {
|
|
1508
|
+
classList.push(this.className());
|
|
1509
|
+
}
|
|
1510
|
+
return classList.join(" ");
|
|
1511
|
+
});
|
|
1512
|
+
ariaLive = computed(() => {
|
|
1513
|
+
switch (this.role()) {
|
|
1514
|
+
case "alert":
|
|
1515
|
+
return "assertive";
|
|
1516
|
+
case "status":
|
|
1517
|
+
return "polite";
|
|
1518
|
+
default:
|
|
1519
|
+
return undefined;
|
|
1520
|
+
}
|
|
1521
|
+
});
|
|
1522
|
+
mapBadgeColorToIconColor = computed(() => {
|
|
1523
|
+
switch (this.color()) {
|
|
1524
|
+
case "brand":
|
|
1525
|
+
return "brand-dark";
|
|
1526
|
+
case "success":
|
|
1527
|
+
return "success";
|
|
1528
|
+
case "accent":
|
|
1529
|
+
return "secondary";
|
|
1530
|
+
case "danger":
|
|
1531
|
+
return "danger";
|
|
1532
|
+
case "warning":
|
|
1533
|
+
return "warning-dark";
|
|
1534
|
+
default:
|
|
1535
|
+
return "primary";
|
|
1536
|
+
}
|
|
1537
|
+
});
|
|
1538
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1539
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: StatusBadgeComponent, isStandalone: true, selector: "[tedi-status-badge]", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.title": "title()", "attr.id": "id()", "attr.role": "role()", "attr.aria-live": "ariaLive()", "attr.aria-label": "title()" } }, ngImport: i0, template: "@if (icon()) {\n <tedi-icon [name]=\"icon()\" [color]=\"mapBadgeColorToIconColor()\" [size]=\"16\" />\n}\n<span class=\"tedi-status-badge__inner-text\">\n <ng-content></ng-content>\n</span>\n", styles: [".tedi-status-badge__inner-text:empty{display:none}.tedi-status-badge{--status-badge-icon-primary: var(--blue-700);--status-badge-icon-secondary: var(--orange-700);position:relative;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--_status-badge-text);background:var(--_status-badge-background);box-shadow:var(--_status-badge-box-shadow)}.tedi-status-badge{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 992px){.tedi-status-badge{font-size:var(--body-small-regular-size-desktop)}}.tedi-status-badge{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 992px){.tedi-status-badge{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-status-badge{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 992px){.tedi-status-badge{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge{padding:var(--tag-default-padding-y-mobile) var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge{padding:var(--tag-default-padding-y-tablet) var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge{padding:var(--tag-default-padding-y-desktop) var(--tag-default-padding-x-desktop)}}.tedi-status-badge{border-radius:var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-status-badge{border-radius:var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-status-badge{border-radius:var(--tag-default-radius-desktop)}}.tedi-status-badge__inner-text{min-width:fit-content}.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-desktop)}}.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-desktop)}}.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-mobile)}@media (min-width: 576px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-desktop)}}.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-mobile) var(--tag-status-large-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-tablet) var(--tag-status-large-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-desktop) var(--tag-status-large-padding-x-desktop)}}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent )}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: transparent}.tedi-status-badge--status:before{position:absolute;top:-.25rem;right:-.25rem;z-index:1;width:.625rem;height:.625rem;content:\"\";border:1px solid var(--neutral-100);border-radius:50%;background-color:var(--_status-badge--indicator-background)}.tedi-status-badge--status.tedi-badge--large:before{top:-.1875rem;right:-.1875rem;width:.875rem;height:.875rem}.tedi-status-badge--status-inactive:before{--_status-badge--indicator-background: var( --status-badge-indicator-inactive )}.tedi-status-badge--status-success:before{--_status-badge--indicator-background: var( --status-badge-indicator-success )}.tedi-status-badge--status-danger:before{--_status-badge--indicator-background: var( --status-badge-indicator-danger )}.tedi-status-badge--status-warning:before{--_status-badge--indicator-background: var( --status-badge-indicator-warning )}.tedi-status-badge__icon-only{display:inline-flex;align-items:center;min-height:24px}.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge__icon-primary{color:var(--status-badge-icon-primary)}.tedi-status-badge__icon-accent{color:var(--status-badge-icon-secondary)}@media print{.tedi-status-badge{filter:grayscale(1)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1540
|
+
}
|
|
1541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusBadgeComponent, decorators: [{
|
|
1542
|
+
type: Component,
|
|
1543
|
+
args: [{ selector: "[tedi-status-badge]", imports: [IconComponent], encapsulation: ViewEncapsulation.None, host: {
|
|
1544
|
+
"[class]": "classes()",
|
|
1545
|
+
"[attr.title]": "title()",
|
|
1546
|
+
"[attr.id]": "id()",
|
|
1547
|
+
"[attr.role]": "role()",
|
|
1548
|
+
"[attr.aria-live]": "ariaLive()",
|
|
1549
|
+
"[attr.aria-label]": "title()",
|
|
1550
|
+
}, template: "@if (icon()) {\n <tedi-icon [name]=\"icon()\" [color]=\"mapBadgeColorToIconColor()\" [size]=\"16\" />\n}\n<span class=\"tedi-status-badge__inner-text\">\n <ng-content></ng-content>\n</span>\n", styles: [".tedi-status-badge__inner-text:empty{display:none}.tedi-status-badge{--status-badge-icon-primary: var(--blue-700);--status-badge-icon-secondary: var(--orange-700);position:relative;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--_status-badge-text);background:var(--_status-badge-background);box-shadow:var(--_status-badge-box-shadow)}.tedi-status-badge{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 992px){.tedi-status-badge{font-size:var(--body-small-regular-size-desktop)}}.tedi-status-badge{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 992px){.tedi-status-badge{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-status-badge{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 992px){.tedi-status-badge{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge{padding:var(--tag-default-padding-y-mobile) var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge{padding:var(--tag-default-padding-y-tablet) var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge{padding:var(--tag-default-padding-y-desktop) var(--tag-default-padding-x-desktop)}}.tedi-status-badge{border-radius:var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-status-badge{border-radius:var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-status-badge{border-radius:var(--tag-default-radius-desktop)}}.tedi-status-badge__inner-text{min-width:fit-content}.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-desktop)}}.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-desktop)}}.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-mobile)}@media (min-width: 576px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-desktop)}}.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-mobile) var(--tag-status-large-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-tablet) var(--tag-status-large-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-desktop) var(--tag-status-large-padding-x-desktop)}}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent )}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: transparent}.tedi-status-badge--status:before{position:absolute;top:-.25rem;right:-.25rem;z-index:1;width:.625rem;height:.625rem;content:\"\";border:1px solid var(--neutral-100);border-radius:50%;background-color:var(--_status-badge--indicator-background)}.tedi-status-badge--status.tedi-badge--large:before{top:-.1875rem;right:-.1875rem;width:.875rem;height:.875rem}.tedi-status-badge--status-inactive:before{--_status-badge--indicator-background: var( --status-badge-indicator-inactive )}.tedi-status-badge--status-success:before{--_status-badge--indicator-background: var( --status-badge-indicator-success )}.tedi-status-badge--status-danger:before{--_status-badge--indicator-background: var( --status-badge-indicator-danger )}.tedi-status-badge--status-warning:before{--_status-badge--indicator-background: var( --status-badge-indicator-warning )}.tedi-status-badge__icon-only{display:inline-flex;align-items:center;min-height:24px}.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge__icon-primary{color:var(--status-badge-icon-primary)}.tedi-status-badge__icon-accent{color:var(--status-badge-icon-secondary)}@media print{.tedi-status-badge{filter:grayscale(1)}}\n"] }]
|
|
1551
|
+
}] });
|
|
1552
|
+
|
|
1553
|
+
var specialOptionControls;
|
|
1554
|
+
(function (specialOptionControls) {
|
|
1555
|
+
specialOptionControls["SELECT_ALL"] = "SELECT_ALL";
|
|
1556
|
+
specialOptionControls["SELECTGROUP"] = "SELECTGROUP_";
|
|
1557
|
+
})(specialOptionControls || (specialOptionControls = {}));
|
|
1558
|
+
class MultiselectComponent {
|
|
1559
|
+
/**
|
|
1560
|
+
* The id of the select input (for label association).
|
|
1561
|
+
* @default ""
|
|
1562
|
+
*/
|
|
1563
|
+
inputId = input.required();
|
|
1564
|
+
/**
|
|
1565
|
+
* The label for the select input.
|
|
1566
|
+
* @default ""
|
|
1567
|
+
*/
|
|
1568
|
+
label = input();
|
|
1569
|
+
/**
|
|
1570
|
+
* Should show label as required?
|
|
1571
|
+
* @default false
|
|
1572
|
+
*/
|
|
1573
|
+
required = input(false);
|
|
1574
|
+
/**
|
|
1575
|
+
* The placeholder text to display when no option is selected.
|
|
1576
|
+
* @default ""
|
|
1577
|
+
*/
|
|
1578
|
+
placeholder = input("");
|
|
1579
|
+
/**
|
|
1580
|
+
* The state of the input.
|
|
1581
|
+
* @default "default"
|
|
1582
|
+
*/
|
|
1583
|
+
state = input("default");
|
|
1584
|
+
/**
|
|
1585
|
+
* The size of the input.
|
|
1586
|
+
* @default "default"
|
|
1587
|
+
*/
|
|
1588
|
+
size = input("default");
|
|
1589
|
+
/**
|
|
1590
|
+
* Whether the select should be rendered as a multi-row dropdown.
|
|
1591
|
+
* @default false
|
|
1592
|
+
*/
|
|
1593
|
+
multiRow = input(false);
|
|
1594
|
+
/**
|
|
1595
|
+
* Whether the selected labels show removing buttons.
|
|
1596
|
+
* @default false
|
|
1597
|
+
*/
|
|
1598
|
+
clearableTags = input(false);
|
|
1599
|
+
/**
|
|
1600
|
+
* Whether the select should allow selecting all options at once.
|
|
1601
|
+
* @default false
|
|
1602
|
+
*/
|
|
1603
|
+
selectAll = input(false);
|
|
1604
|
+
/**
|
|
1605
|
+
* Whether the select should allow selecting groups of options.
|
|
1606
|
+
* @default false
|
|
1607
|
+
*/
|
|
1608
|
+
selectableGroups = input(false);
|
|
1609
|
+
/**
|
|
1610
|
+
* Whether the clear button will be shown when an option is selected.
|
|
1611
|
+
* @default true
|
|
1612
|
+
*/
|
|
1613
|
+
clearable = input(true);
|
|
1614
|
+
feedbackText = input();
|
|
1615
|
+
specialOptionControls = specialOptionControls;
|
|
1616
|
+
isOpen = signal(false);
|
|
1617
|
+
selectedOptions = signal([]);
|
|
1618
|
+
listboxRef = viewChild(CdkListbox, { read: ElementRef });
|
|
1619
|
+
triggerRef = viewChild(CdkOverlayOrigin, { read: ElementRef });
|
|
1620
|
+
hostRef = inject(ElementRef);
|
|
1621
|
+
options = contentChildren(SelectOptionComponent);
|
|
1622
|
+
dropdownWidth = signal(0);
|
|
1623
|
+
disabled = signal(false);
|
|
1624
|
+
optionGroups = computed(() => {
|
|
1625
|
+
const groups = [];
|
|
1626
|
+
this.options().forEach((option) => {
|
|
1627
|
+
const group = groups.find((g) => g.label === option.group());
|
|
1628
|
+
if (group) {
|
|
1629
|
+
group.options.push(option);
|
|
1630
|
+
}
|
|
1631
|
+
else {
|
|
1632
|
+
groups.push({ label: option.group() ?? "", options: [option] });
|
|
1633
|
+
}
|
|
1634
|
+
});
|
|
1635
|
+
return groups;
|
|
1636
|
+
});
|
|
1637
|
+
onWindowResize() {
|
|
1638
|
+
this.setDropdownWidth();
|
|
1639
|
+
}
|
|
1640
|
+
toggleIsOpen(value) {
|
|
1641
|
+
if (this.disabled())
|
|
1642
|
+
return;
|
|
1643
|
+
if (value === undefined) {
|
|
1644
|
+
this.isOpen.update((previousValue) => !previousValue);
|
|
1645
|
+
}
|
|
1646
|
+
else if (value === false) {
|
|
1647
|
+
this.isOpen.set(value);
|
|
1648
|
+
this.focusTrigger();
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
handleValueChange(event) {
|
|
1652
|
+
// Check if event value includes any "select-all-group" selection
|
|
1653
|
+
const selectedGroup = event.value
|
|
1654
|
+
.find((v) => v.startsWith(specialOptionControls.SELECTGROUP))
|
|
1655
|
+
?.replace(specialOptionControls.SELECTGROUP, "");
|
|
1656
|
+
if (event.value.includes(specialOptionControls.SELECT_ALL)) {
|
|
1657
|
+
// If "select-all" is selected, toggle all options
|
|
1658
|
+
this.toggleSelectAll();
|
|
1659
|
+
}
|
|
1660
|
+
else if (selectedGroup) {
|
|
1661
|
+
// If a group selection is made, toggle the group
|
|
1662
|
+
this.toggleGroupSelection(selectedGroup);
|
|
1663
|
+
}
|
|
1664
|
+
else {
|
|
1665
|
+
// Otherwise, update the selected options directly
|
|
1666
|
+
this.selectedOptions.set(event.value);
|
|
1667
|
+
this.onChange(event.value);
|
|
1668
|
+
}
|
|
1669
|
+
this.onTouched();
|
|
1670
|
+
}
|
|
1671
|
+
clear(event) {
|
|
1672
|
+
event.preventDefault();
|
|
1673
|
+
event.stopPropagation();
|
|
1674
|
+
this.selectedOptions.set([]);
|
|
1675
|
+
this.onChange([]);
|
|
1676
|
+
this.onTouched();
|
|
1677
|
+
}
|
|
1678
|
+
focusListboxWhenVisible = effect(() => {
|
|
1679
|
+
if (this.listboxRef())
|
|
1680
|
+
this.listboxRef()?.nativeElement.focus();
|
|
1681
|
+
});
|
|
1682
|
+
focusTrigger() {
|
|
1683
|
+
this.triggerRef()?.nativeElement.focus();
|
|
1684
|
+
}
|
|
1685
|
+
isOptionSelected(option) {
|
|
1686
|
+
return this.selectedOptions().includes(option);
|
|
1687
|
+
}
|
|
1688
|
+
setDropdownWidth() {
|
|
1689
|
+
const computedWidth = this.hostRef?.nativeElement?.getBoundingClientRect()?.width ?? 0;
|
|
1690
|
+
this.dropdownWidth.set(computedWidth);
|
|
1691
|
+
}
|
|
1692
|
+
allOptions = computed(() => {
|
|
1693
|
+
return this.options()
|
|
1694
|
+
.filter((option) => !option.disabled())
|
|
1695
|
+
.map((option) => option.value());
|
|
1696
|
+
});
|
|
1697
|
+
allOptionsSelected = computed(() => {
|
|
1698
|
+
return this.selectedOptions().length === this.allOptions().length;
|
|
1699
|
+
});
|
|
1700
|
+
toggleSelectAll() {
|
|
1701
|
+
const newSelection = this.allOptionsSelected() ? [] : this.allOptions();
|
|
1702
|
+
this.selectedOptions.set(newSelection);
|
|
1703
|
+
this.onChange(newSelection);
|
|
1704
|
+
}
|
|
1705
|
+
getLabel(value) {
|
|
1706
|
+
const option = this.options().find((opt) => opt.value() === value);
|
|
1707
|
+
return option ? option.label() : undefined;
|
|
1708
|
+
}
|
|
1709
|
+
isGroupSelected(groupLabel) {
|
|
1710
|
+
const group = this.optionGroups().find((g) => g.label === groupLabel);
|
|
1711
|
+
if (!group)
|
|
1712
|
+
return false;
|
|
1713
|
+
const enabledGroupOptions = group.options
|
|
1714
|
+
.filter((option) => !option.disabled())
|
|
1715
|
+
.map((option) => option.value());
|
|
1716
|
+
return (enabledGroupOptions.length > 0 &&
|
|
1717
|
+
enabledGroupOptions.every((option) => this.selectedOptions().includes(option)));
|
|
1718
|
+
}
|
|
1719
|
+
toggleGroupSelection(groupLabel) {
|
|
1720
|
+
const group = this.optionGroups().find((g) => g.label === groupLabel);
|
|
1721
|
+
if (!group)
|
|
1722
|
+
return;
|
|
1723
|
+
const enabledGroupOptions = group.options
|
|
1724
|
+
.filter((option) => !option.disabled())
|
|
1725
|
+
.map((option) => option.value());
|
|
1726
|
+
const allGroupOptionsSelected = this.isGroupSelected(groupLabel);
|
|
1727
|
+
let newSelection;
|
|
1728
|
+
if (allGroupOptionsSelected) {
|
|
1729
|
+
newSelection = this.selectedOptions().filter((option) => !enabledGroupOptions.includes(option));
|
|
1730
|
+
}
|
|
1731
|
+
else {
|
|
1732
|
+
const currentSelected = new Set(this.selectedOptions());
|
|
1733
|
+
enabledGroupOptions.forEach((option) => currentSelected.add(option));
|
|
1734
|
+
newSelection = Array.from(currentSelected);
|
|
1735
|
+
}
|
|
1736
|
+
this.selectedOptions.set(newSelection);
|
|
1737
|
+
this.onChange(newSelection);
|
|
1738
|
+
}
|
|
1739
|
+
deselect(event, value) {
|
|
1740
|
+
event.stopPropagation();
|
|
1741
|
+
event.preventDefault();
|
|
1742
|
+
if (this.disabled())
|
|
1743
|
+
return;
|
|
1744
|
+
const newSelection = this.selectedOptions().filter((option) => option !== value);
|
|
1745
|
+
this.selectedOptions.set(newSelection);
|
|
1746
|
+
this.onChange(newSelection);
|
|
1747
|
+
this.onTouched();
|
|
1748
|
+
}
|
|
1749
|
+
// ControlValueAccessor implementation
|
|
1750
|
+
onChange = () => { };
|
|
1751
|
+
onTouched = () => { };
|
|
1752
|
+
writeValue(value) {
|
|
1753
|
+
this.selectedOptions.set(value || []);
|
|
1754
|
+
}
|
|
1755
|
+
registerOnChange(fn) {
|
|
1756
|
+
this.onChange = fn;
|
|
1757
|
+
}
|
|
1758
|
+
registerOnTouched(fn) {
|
|
1759
|
+
this.onTouched = fn;
|
|
1760
|
+
}
|
|
1761
|
+
setDisabledState(isDisabled) {
|
|
1762
|
+
this.disabled.set(isDisabled);
|
|
1763
|
+
}
|
|
1764
|
+
ngAfterContentChecked() {
|
|
1765
|
+
this.setDropdownWidth();
|
|
1766
|
+
}
|
|
1767
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1768
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: MultiselectComponent, isStandalone: true, selector: "tedi-multiselect", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, multiRow: { classPropertyName: "multiRow", publicName: "multiRow", isSignal: true, isRequired: false, transformFunction: null }, clearableTags: { classPropertyName: "clearableTags", publicName: "clearableTags", isSignal: true, isRequired: false, transformFunction: null }, selectAll: { classPropertyName: "selectAll", publicName: "selectAll", isSignal: true, isRequired: false, transformFunction: null }, selectableGroups: { classPropertyName: "selectableGroups", publicName: "selectableGroups", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onWindowResize()" }, classAttribute: "tedi-select tedi-select--multiselect" }, providers: [
|
|
1769
|
+
{
|
|
1770
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1771
|
+
useExisting: forwardRef(() => MultiselectComponent),
|
|
1772
|
+
multi: true,
|
|
1773
|
+
},
|
|
1774
|
+
], queries: [{ propertyName: "options", predicate: SelectOptionComponent, isSignal: true }], viewQueries: [{ propertyName: "listboxRef", first: true, predicate: CdkListbox, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "triggerRef", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedOptions().length) {\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n >\n @for (value of selectedOptions(); track value) {\n <tedi-tag\n [closable]=\"clearableTags()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n </div>\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxMultiple\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n #listbox=\"cdkListbox\"\n >\n @if (options().length) {\n @if (selectAll()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"specialOptionControls.SELECT_ALL\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"inputId() + '-select-all'\"\n [checked]=\"allOptionsSelected()\"\n >\n {{ \"select.select-all\" | tediTranslate }}\n </tedi-checkbox>\n </li>\n }\n\n @for (group of optionGroups(); track $index) {\n @if (group.label.length) {\n @if (selectableGroups()) {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"specialOptionControls.SELECTGROUP + group.label\"\n >\n <div class=\"tedi-select__group-checkbox\">\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'group-' + group.label\"\n [checked]=\"isGroupSelected(group.label)\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </tedi-checkbox>\n </div>\n </li>\n } @else {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name\"\n role=\"presentation\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'option-' + option.value()\"\n [checked]=\"isOptionSelected(option.value())\"\n >\n @if (option.templateRef(); as optionTemplate) {\n <span class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionTemplate\" />\n </span>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n } @else {\n {{ option.label() }}\n }\n </tedi-checkbox>\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: CdkListboxModule }, { kind: "directive", type: i3.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i3.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "component", type: InputComponent, selector: "[tedi-input]", inputs: ["size", "state"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: DropdownItemComponent, selector: "[tedi-dropdown-item]", inputs: ["selected", "disabled"], outputs: ["itemSelected"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "component", type: CheckboxComponent, selector: "tedi-checkbox", inputs: ["inputId", "checked", "indeterminate", "value", "disabled", "size", "hasError", "feedbackText"], outputs: ["checkedChange", "disabledChange"] }, { kind: "component", type: TagComponent, selector: "tedi-tag", inputs: ["loading", "closable", "type"], outputs: ["closed"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1775
|
+
}
|
|
1776
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiselectComponent, decorators: [{
|
|
1777
|
+
type: Component,
|
|
1778
|
+
args: [{ selector: "tedi-multiselect", imports: [
|
|
1779
|
+
CommonModule,
|
|
1780
|
+
OverlayModule,
|
|
1781
|
+
CdkListboxModule,
|
|
1782
|
+
InputComponent,
|
|
1783
|
+
CardComponent,
|
|
1784
|
+
CardContentComponent,
|
|
1785
|
+
DropdownItemComponent,
|
|
1786
|
+
ClosingButtonComponent,
|
|
1787
|
+
IconComponent,
|
|
1788
|
+
LabelComponent,
|
|
1789
|
+
FeedbackTextComponent,
|
|
1790
|
+
TextComponent,
|
|
1791
|
+
CheckboxComponent,
|
|
1792
|
+
TagComponent,
|
|
1793
|
+
TediTranslationPipe,
|
|
1794
|
+
], standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1795
|
+
class: "tedi-select tedi-select--multiselect",
|
|
1796
|
+
}, providers: [
|
|
1797
|
+
{
|
|
1798
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1799
|
+
useExisting: forwardRef(() => MultiselectComponent),
|
|
1800
|
+
multi: true,
|
|
1801
|
+
},
|
|
1802
|
+
], template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedOptions().length) {\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n >\n @for (value of selectedOptions(); track value) {\n <tedi-tag\n [closable]=\"clearableTags()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n </div>\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxMultiple\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n #listbox=\"cdkListbox\"\n >\n @if (options().length) {\n @if (selectAll()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"specialOptionControls.SELECT_ALL\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"inputId() + '-select-all'\"\n [checked]=\"allOptionsSelected()\"\n >\n {{ \"select.select-all\" | tediTranslate }}\n </tedi-checkbox>\n </li>\n }\n\n @for (group of optionGroups(); track $index) {\n @if (group.label.length) {\n @if (selectableGroups()) {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"specialOptionControls.SELECTGROUP + group.label\"\n >\n <div class=\"tedi-select__group-checkbox\">\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'group-' + group.label\"\n [checked]=\"isGroupSelected(group.label)\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </tedi-checkbox>\n </div>\n </li>\n } @else {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name\"\n role=\"presentation\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'option-' + option.value()\"\n [checked]=\"isOptionSelected(option.value())\"\n >\n @if (option.templateRef(); as optionTemplate) {\n <span class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionTemplate\" />\n </span>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n } @else {\n {{ option.label() }}\n }\n </tedi-checkbox>\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"] }]
|
|
1803
|
+
}], propDecorators: { onWindowResize: [{
|
|
1804
|
+
type: HostListener,
|
|
1805
|
+
args: ["window:resize"]
|
|
1806
|
+
}] } });
|
|
1807
|
+
|
|
1808
|
+
class TextareaComponent extends InputComponent {
|
|
1809
|
+
/**
|
|
1810
|
+
* Whether the textarea should be resizable in the X direction.
|
|
1811
|
+
* @default false
|
|
1812
|
+
*/
|
|
1813
|
+
resizeX = input(false);
|
|
1814
|
+
/**
|
|
1815
|
+
* Whether the textarea should be resizable in the Y direction.
|
|
1816
|
+
* @default true
|
|
1817
|
+
*/
|
|
1818
|
+
resizeY = input(true);
|
|
1819
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1820
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: TextareaComponent, isStandalone: true, selector: "[tedi-textarea]", inputs: { resizeX: { classPropertyName: "resizeX", publicName: "resizeX", isSignal: true, isRequired: false, transformFunction: null }, resizeY: { classPropertyName: "resizeY", publicName: "resizeY", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-textarea": "true", "class.tedi-textarea--resizeX": "this.resizeX()", "class.tedi-textarea--resizeY": "this.resizeY()" } }, usesInheritance: true, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n", ".tedi-textarea{width:100%;resize:none}.tedi-textarea{min-height:var(--form-textarea-min-height-mobile)}@media (min-width: 576px){.tedi-textarea{min-height:var(--form-textarea-min-height-tablet)}}@media (min-width: 992px){.tedi-textarea{min-height:var(--form-textarea-min-height-desktop)}}.tedi-textarea{padding:var(--form-field-padding-y-md-default-mobile) var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-tablet) var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-desktop) var(--form-field-padding-x-md-default-desktop)}}.tedi-textarea--resizeX{resize:horizontal}.tedi-textarea--resizeY{resize:vertical}.tedi-textarea--resizeY.tedi-textarea--resizeX{resize:both}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1821
|
+
}
|
|
1822
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TextareaComponent, decorators: [{
|
|
1823
|
+
type: Component,
|
|
1824
|
+
args: [{ selector: "[tedi-textarea]", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1825
|
+
"[class.tedi-textarea]": "true",
|
|
1826
|
+
"[class.tedi-textarea--resizeX]": "this.resizeX()",
|
|
1827
|
+
"[class.tedi-textarea--resizeY]": "this.resizeY()",
|
|
1828
|
+
}, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n", ".tedi-textarea{width:100%;resize:none}.tedi-textarea{min-height:var(--form-textarea-min-height-mobile)}@media (min-width: 576px){.tedi-textarea{min-height:var(--form-textarea-min-height-tablet)}}@media (min-width: 992px){.tedi-textarea{min-height:var(--form-textarea-min-height-desktop)}}.tedi-textarea{padding:var(--form-field-padding-y-md-default-mobile) var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-tablet) var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-desktop) var(--form-field-padding-x-md-default-desktop)}}.tedi-textarea--resizeX{resize:horizontal}.tedi-textarea--resizeY{resize:vertical}.tedi-textarea--resizeY.tedi-textarea--resizeX{resize:both}\n"] }]
|
|
1829
|
+
}] });
|
|
1830
|
+
|
|
1831
|
+
class SearchComponent {
|
|
1832
|
+
/**
|
|
1833
|
+
* Search input ID for accessibility
|
|
1834
|
+
*/
|
|
1835
|
+
inputId = input.required();
|
|
1836
|
+
/**
|
|
1837
|
+
* Autocomplete options for the search input
|
|
1838
|
+
* @default []
|
|
1839
|
+
*/
|
|
1840
|
+
autocompleteOptions = input([]);
|
|
1841
|
+
/**
|
|
1842
|
+
* Minimum number of characters to trigger autocomplete
|
|
1843
|
+
* @default 3
|
|
1844
|
+
*/
|
|
1845
|
+
autocompleteFrom = input();
|
|
1846
|
+
/**
|
|
1847
|
+
* Size of the search component
|
|
1848
|
+
* @default "default"
|
|
1849
|
+
*/
|
|
1850
|
+
size = input("default");
|
|
1851
|
+
/**
|
|
1852
|
+
* Input state for validation
|
|
1853
|
+
* @default "default"
|
|
1854
|
+
*/
|
|
1855
|
+
state = input("default");
|
|
1856
|
+
/**
|
|
1857
|
+
* Should the search button be shown
|
|
1858
|
+
* @default false
|
|
1859
|
+
*/
|
|
1860
|
+
withButton = input(false);
|
|
1861
|
+
/**
|
|
1862
|
+
* Add text to the search button
|
|
1863
|
+
* @default undefined
|
|
1864
|
+
*/
|
|
1865
|
+
buttonText = input(undefined);
|
|
1866
|
+
/**
|
|
1867
|
+
* Should the search input be clearable
|
|
1868
|
+
* @default true
|
|
1869
|
+
*/
|
|
1870
|
+
clearable = input(true);
|
|
1871
|
+
/**
|
|
1872
|
+
* Text to show when no results are found
|
|
1873
|
+
* @default "Vasteid ei leitud"
|
|
1874
|
+
*/
|
|
1875
|
+
noResultText = input("Vasteid ei leitud");
|
|
1876
|
+
/**
|
|
1877
|
+
* Should the searc input be disabled
|
|
1878
|
+
* @default false
|
|
1879
|
+
*/
|
|
1880
|
+
disabled = input(false);
|
|
1881
|
+
/**
|
|
1882
|
+
* Placeholder text for the search input
|
|
1883
|
+
* @default ""
|
|
1884
|
+
*/
|
|
1885
|
+
placeholder = input("");
|
|
1886
|
+
/**
|
|
1887
|
+
* Should the search input show a loading spinner
|
|
1888
|
+
* @default false
|
|
1889
|
+
*/
|
|
1890
|
+
loading = input(false);
|
|
1891
|
+
/**
|
|
1892
|
+
* Label for the search input
|
|
1893
|
+
* @default undefined
|
|
1894
|
+
*/
|
|
1895
|
+
label = input();
|
|
1896
|
+
/**
|
|
1897
|
+
* Feedback text component for displaying messages
|
|
1898
|
+
* @default undefined
|
|
1899
|
+
*/
|
|
1900
|
+
feedbackText = input();
|
|
1901
|
+
// Emitted events
|
|
1902
|
+
searchEvent = output();
|
|
1903
|
+
clearEvent = output();
|
|
1904
|
+
_inputValue = model();
|
|
1905
|
+
_selectedOption = model();
|
|
1906
|
+
_width = signal(0);
|
|
1907
|
+
_elementRef = inject(ElementRef);
|
|
1908
|
+
_disabled = signal(false);
|
|
1909
|
+
_isVisible = signal(false);
|
|
1910
|
+
_cdkMenuRef = viewChild(CdkMenu, { read: ElementRef });
|
|
1911
|
+
_overlayOriginRef = viewChild(CdkOverlayOrigin, { read: ElementRef });
|
|
1912
|
+
modifierClasses = computed(() => {
|
|
1913
|
+
const modifiers = [];
|
|
1914
|
+
if (this.size())
|
|
1915
|
+
modifiers.push(`tedi-search--${this.size()}`);
|
|
1916
|
+
if (this.state())
|
|
1917
|
+
modifiers.push(`tedi-search--${this.state()}`);
|
|
1918
|
+
return modifiers.join(" ");
|
|
1919
|
+
});
|
|
1920
|
+
ngAfterContentChecked() {
|
|
1921
|
+
this._width.set(this.getWidth());
|
|
1922
|
+
}
|
|
1923
|
+
inputChanged(inputValue) {
|
|
1924
|
+
const selected = this._selectedOption();
|
|
1925
|
+
// Clear selected option if input value is changed and is not matching the selected option
|
|
1926
|
+
if (selected && inputValue !== selected.label) {
|
|
1927
|
+
this._selectedOption.set(undefined);
|
|
1928
|
+
}
|
|
1929
|
+
this.handleOverlayOpen();
|
|
1930
|
+
this.onChange(inputValue);
|
|
1931
|
+
}
|
|
1932
|
+
focusInput() {
|
|
1933
|
+
this.handleOverlayOpen();
|
|
1934
|
+
}
|
|
1935
|
+
// Logic to show/hide the autocomplete dropdown
|
|
1936
|
+
handleOverlayOpen() {
|
|
1937
|
+
const inputValue = this._inputValue();
|
|
1938
|
+
const autocompleteFrom = this.autocompleteFrom();
|
|
1939
|
+
const baseRules = !this.withButton() && !this._selectedOption();
|
|
1940
|
+
const showAutocompleteIfLength = autocompleteFrom && inputValue && inputValue.length >= autocompleteFrom;
|
|
1941
|
+
if (baseRules && (showAutocompleteIfLength || autocompleteFrom === 0)) {
|
|
1942
|
+
this._isVisible.set(true);
|
|
1943
|
+
}
|
|
1944
|
+
else {
|
|
1945
|
+
this._isVisible.set(false);
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
// Filter the autocomplete options based on the input value
|
|
1949
|
+
_foundOptions = computed(() => {
|
|
1950
|
+
const inputValue = this._inputValue();
|
|
1951
|
+
if (!inputValue)
|
|
1952
|
+
return this.autocompleteOptions();
|
|
1953
|
+
return this.autocompleteOptions().filter((option) => {
|
|
1954
|
+
const searchString = inputValue.toLowerCase().split(" ");
|
|
1955
|
+
return searchString.every((searchTerm) => option.label.toLowerCase().includes(searchTerm) ||
|
|
1956
|
+
option.description?.toLowerCase().includes(searchTerm));
|
|
1957
|
+
});
|
|
1958
|
+
});
|
|
1959
|
+
iconSize = computed(() => {
|
|
1960
|
+
const size = this.size();
|
|
1961
|
+
const hasButton = this.withButton();
|
|
1962
|
+
const hasButtonText = !!this.buttonText();
|
|
1963
|
+
if (size === "large") {
|
|
1964
|
+
if (hasButton && hasButtonText)
|
|
1965
|
+
return 18;
|
|
1966
|
+
return 24;
|
|
1967
|
+
}
|
|
1968
|
+
else if (size === "small") {
|
|
1969
|
+
if (hasButton)
|
|
1970
|
+
return 18;
|
|
1971
|
+
return 16;
|
|
1972
|
+
}
|
|
1973
|
+
else {
|
|
1974
|
+
return 18;
|
|
1975
|
+
}
|
|
1976
|
+
});
|
|
1977
|
+
buttonSize = computed(() => {
|
|
1978
|
+
switch (this.size()) {
|
|
1979
|
+
case "large":
|
|
1980
|
+
return "default";
|
|
1981
|
+
case "small":
|
|
1982
|
+
return "small";
|
|
1983
|
+
default:
|
|
1984
|
+
return "default";
|
|
1985
|
+
}
|
|
1986
|
+
});
|
|
1987
|
+
// ControlValueAccessor methods
|
|
1988
|
+
onChange = () => { };
|
|
1989
|
+
onTouched = () => { };
|
|
1990
|
+
writeValue(value) {
|
|
1991
|
+
if (typeof value === "string") {
|
|
1992
|
+
this._inputValue.set(value);
|
|
1993
|
+
this._selectedOption.set(undefined);
|
|
1994
|
+
}
|
|
1995
|
+
else {
|
|
1996
|
+
this._inputValue.set(value?.label || "");
|
|
1997
|
+
this._selectedOption.set(value);
|
|
1998
|
+
}
|
|
1999
|
+
}
|
|
2000
|
+
registerOnChange(fn) {
|
|
2001
|
+
this.onChange = fn;
|
|
2002
|
+
}
|
|
2003
|
+
registerOnTouched(fn) {
|
|
2004
|
+
this.onTouched = fn;
|
|
2005
|
+
}
|
|
2006
|
+
setDisabledState(isDisabled) {
|
|
2007
|
+
this._disabled.set(isDisabled);
|
|
2008
|
+
}
|
|
2009
|
+
searchButtonClick() {
|
|
2010
|
+
this.searchEvent.emit(this._selectedOption() ?? this._inputValue() ?? "");
|
|
2011
|
+
this.onChange(this._selectedOption() ?? this._inputValue() ?? "");
|
|
2012
|
+
this.onTouched();
|
|
2013
|
+
}
|
|
2014
|
+
selectResult(option) {
|
|
2015
|
+
this._selectedOption.set(option);
|
|
2016
|
+
this._inputValue.set(option.label);
|
|
2017
|
+
// Emit the selected option if the search button is not shown
|
|
2018
|
+
if (!this.withButton()) {
|
|
2019
|
+
this.searchEvent.emit(option);
|
|
2020
|
+
this.onChange(option);
|
|
2021
|
+
}
|
|
2022
|
+
this.onTouched();
|
|
2023
|
+
this.closeOverlay(true);
|
|
2024
|
+
}
|
|
2025
|
+
clearResult() {
|
|
2026
|
+
this._inputValue.set("");
|
|
2027
|
+
this._selectedOption.set(undefined);
|
|
2028
|
+
this.searchEvent.emit("");
|
|
2029
|
+
this.onChange("");
|
|
2030
|
+
this.onTouched();
|
|
2031
|
+
this.clearEvent.emit();
|
|
2032
|
+
}
|
|
2033
|
+
focusDropdown(event) {
|
|
2034
|
+
// Prevent default behavior and stop propagation if event is provided
|
|
2035
|
+
if (event) {
|
|
2036
|
+
event.preventDefault();
|
|
2037
|
+
event.stopPropagation();
|
|
2038
|
+
}
|
|
2039
|
+
const dropdownToFocus = this._cdkMenuRef();
|
|
2040
|
+
if (dropdownToFocus) {
|
|
2041
|
+
dropdownToFocus.nativeElement.focus();
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
closeOverlay(focusBackToInput) {
|
|
2045
|
+
this._isVisible.set(false);
|
|
2046
|
+
if (focusBackToInput) {
|
|
2047
|
+
this._overlayOriginRef()?.nativeElement?.focus();
|
|
2048
|
+
}
|
|
2049
|
+
}
|
|
2050
|
+
getWidth() {
|
|
2051
|
+
return this._elementRef?.nativeElement?.getBoundingClientRect()?.width || 0;
|
|
2052
|
+
}
|
|
2053
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2054
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: SearchComponent, isStandalone: true, selector: "tedi-search", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, autocompleteOptions: { classPropertyName: "autocompleteOptions", publicName: "autocompleteOptions", isSignal: true, isRequired: false, transformFunction: null }, autocompleteFrom: { classPropertyName: "autocompleteFrom", publicName: "autocompleteFrom", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, withButton: { classPropertyName: "withButton", publicName: "withButton", isSignal: true, isRequired: false, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null }, _inputValue: { classPropertyName: "_inputValue", publicName: "_inputValue", isSignal: true, isRequired: false, transformFunction: null }, _selectedOption: { classPropertyName: "_selectedOption", publicName: "_selectedOption", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchEvent: "searchEvent", clearEvent: "clearEvent", _inputValue: "_inputValueChange", _selectedOption: "_selectedOptionChange" }, host: { properties: { "class.tedi-search": "true", "class.tedi-search--with-button": "withButton()", "class.tedi-search--with-button-text": "!!buttonText()", "class.tedi-search--disabled": "_disabled()", "class": "modifierClasses()" } }, providers: [
|
|
2055
|
+
{
|
|
2056
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2057
|
+
useExisting: forwardRef(() => SearchComponent),
|
|
2058
|
+
multi: true,
|
|
2059
|
+
},
|
|
2060
|
+
], viewQueries: [{ propertyName: "_cdkMenuRef", first: true, predicate: CdkMenu, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_overlayOriginRef", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n}\n\n<div class=\"tedi-search__container\">\n <input\n cdkOverlayOrigin\n [id]=\"inputId()\"\n class=\"tedi-search__input\"\n type=\"text\"\n [(ngModel)]=\"_inputValue\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"_disabled()\"\n (focus)=\"focusInput()\"\n (keydown.enter)=\"focusDropdown($event)\"\n (keydown.arrowDown)=\"focusDropdown($event)\"\n (ngModelChange)=\"inputChanged($event)\"\n (blur)=\"onTouched()\"\n #trigger=\"cdkOverlayOrigin\"\n />\n\n <div class=\"tedi-search__suffix\">\n @if (clearable() && _inputValue()) {\n <button\n type=\"reset\"\n tedi-closing-button\n [size]=\"size() === 'large' ? 'default' : 'small'\"\n [iconSize]=\"size() === 'large' ? 24 : 18\"\n (click)=\"$event.stopPropagation(); clearResult()\"\n ></button>\n @if (!withButton()) {\n <div class=\"tedi-search__suffix-separator\"></div>\n }\n }\n @if (!withButton()) {\n @if (!loading()) {\n <tedi-icon\n class=\"tedi-search__search-icon\"\n name=\"search\"\n color=\"secondary\"\n [size]=\"iconSize()\"\n />\n } @else {\n <tedi-spinner />\n }\n }\n </div>\n\n @if (withButton()) {\n @if (loading()) {\n <tedi-spinner />\n }\n <button\n tedi-button\n class=\"tedi-search__trigger\"\n [size]=\"buttonSize()\"\n (click)=\"searchButtonClick()\"\n [disabled]=\"_disabled()\"\n >\n <tedi-icon name=\"search\" color=\"white\" [size]=\"iconSize()\" />\n {{ buttonText() }}\n </button>\n }\n</div>\n\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"_isVisible()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n (overlayOutsideClick)=\"closeOverlay(false)\"\n (overlayKeydown)=\"$event.key === 'Escape' ? closeOverlay(true) : null\"\n #searchPanel\n>\n <tedi-card class=\"tedi-search__panel\" [style.width.px]=\"_width()\">\n @if (loading()) {\n <tedi-card-content padding=\"md\" [hasSeparator]=\"true\">\n <tedi-spinner />\n </tedi-card-content>\n } @else if (_foundOptions().length) {\n <tedi-card-content padding=\"none\" [hasSeparator]=\"true\" cdkMenu>\n @for (option of _foundOptions(); track option.value) {\n <button\n cdkMenuItem\n tedi-dropdown-item\n [value]=\"option.value\"\n [selected]=\"option.value === _selectedOption()?.value\"\n (click)=\"selectResult(option)\"\n #autocompleteOption\n >\n @if (option.description) {\n <strong>{{ option.label }}</strong> \u00B7 {{ option.description }}\n } @else {\n {{ option.label }}\n }\n </button>\n }\n </tedi-card-content>\n } @else {\n <tedi-card-content [hasSeparator]=\"true\" padding=\"md\">\n {{ noResultText() }}\n </tedi-card-content>\n }\n\n <tedi-card-content class=\"tedi-search__footer-content\" padding=\"md\">\n <ng-content></ng-content>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-search{--_border-color: var(--form-input-border-default)}.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__container{display:flex;border:1px solid;align-items:center;border-color:var(--_border-color);border-radius:var(--_border-radius);margin-bottom:var(--_form-field-outer-gap)}.tedi-search__container{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-search__container{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-search__container{--_border-radius: var(--form-field-radius-desktop)}}.tedi-search__container{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-search__container{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-search__container{gap:var(--form-field-inner-spacing-desktop)}}.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-desktop)}}.tedi-search__container:hover{--_border-color: var(--form-input-border-hover)}.tedi-search__container:focus-within{--_border-color: var(--form-input-border-active);box-shadow:0 0 0 1px var(--form-input-border-active)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:hover{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus-within{--_border-color: var(--form-general-feedback-error-border);box-shadow:0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:hover{border-color:var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus-within{border-color:var(--form-general-feedback-success-border);box-shadow:0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search__input{width:100%;flex-grow:1;border:0;padding:var(--_padding);padding-right:0;margin:0;border-radius:var(--_border-radius);border-top-right-radius:0;border-bottom-right-radius:0;letter-spacing:0px}.tedi-search__input{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-search__input{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-search__input{font-weight:var(--body-regular-weight-desktop)}}.tedi-search__input{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-search__input{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-search__input{font-size:var(--body-regular-size-desktop)}}.tedi-search__input{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-search__input{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-search__input{line-height:var(--body-regular-line-height-desktop)}}.tedi-search__trigger.tedi-button{border-radius:var(--_border-radius);border-top-left-radius:0;border-bottom-left-radius:0;align-self:stretch}.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-mobile)}@media (min-width: 576px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-tablet)}}@media (min-width: 992px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-desktop)}}.tedi-search__suffix{display:flex;align-self:stretch;align-items:center;padding:0 var(--_padding)}.tedi-search__suffix{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-desktop)}}.tedi-search--with-button .tedi-search__suffix{padding:0}.tedi-search__suffix-separator{width:1px;border-left:1px solid var(--general-border-primary);height:1em}.tedi-search__panel{margin:var(--_form-outer-gap) 0;max-height:300px;overflow-y:auto}.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__footer-content:empty{display:none}.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-desktop)}}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button{height:auto;width:56px}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button .tedi-icon--size-24{font-size:var(--icon-05-desktop)}.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-mobile)}@media (min-width: 576px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-tablet)}}@media (min-width: 992px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-desktop)}}.tedi-search--disabled .tedi-search__container{background-color:var(--form-input-background-disabled);border-color:var(--form-input-border-disabled)}.tedi-search--disabled .tedi-search__input{background-color:var(--form-input-background-disabled);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i2$1.CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "directive", type: i2$1.CdkMenuItem, selector: "[cdkMenuItem]", inputs: ["cdkMenuItemDisabled", "cdkMenuitemTypeaheadLabel"], outputs: ["cdkMenuItemTriggered"], exportAs: ["cdkMenuItem"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: DropdownItemComponent, selector: "[tedi-dropdown-item]", inputs: ["selected", "disabled"], outputs: ["itemSelected"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: SpinnerComponent, selector: "tedi-spinner", inputs: ["size", "color", "label"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2061
|
+
}
|
|
2062
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchComponent, decorators: [{
|
|
2063
|
+
type: Component,
|
|
2064
|
+
args: [{ selector: "tedi-search", standalone: true, imports: [
|
|
2065
|
+
FormsModule,
|
|
2066
|
+
ButtonComponent,
|
|
2067
|
+
IconComponent,
|
|
2068
|
+
CdkMenuModule,
|
|
2069
|
+
OverlayModule,
|
|
2070
|
+
CardComponent,
|
|
2071
|
+
CardContentComponent,
|
|
2072
|
+
DropdownItemComponent,
|
|
2073
|
+
ClosingButtonComponent,
|
|
2074
|
+
A11yModule,
|
|
2075
|
+
SpinnerComponent,
|
|
2076
|
+
FeedbackTextComponent,
|
|
2077
|
+
LabelComponent,
|
|
2078
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
2079
|
+
"[class.tedi-search]": "true",
|
|
2080
|
+
"[class.tedi-search--with-button]": "withButton()",
|
|
2081
|
+
"[class.tedi-search--with-button-text]": "!!buttonText()",
|
|
2082
|
+
"[class.tedi-search--disabled]": "_disabled()",
|
|
2083
|
+
"[class]": "modifierClasses()",
|
|
2084
|
+
}, providers: [
|
|
2085
|
+
{
|
|
2086
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2087
|
+
useExisting: forwardRef(() => SearchComponent),
|
|
2088
|
+
multi: true,
|
|
2089
|
+
},
|
|
2090
|
+
], template: "@if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n}\n\n<div class=\"tedi-search__container\">\n <input\n cdkOverlayOrigin\n [id]=\"inputId()\"\n class=\"tedi-search__input\"\n type=\"text\"\n [(ngModel)]=\"_inputValue\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"_disabled()\"\n (focus)=\"focusInput()\"\n (keydown.enter)=\"focusDropdown($event)\"\n (keydown.arrowDown)=\"focusDropdown($event)\"\n (ngModelChange)=\"inputChanged($event)\"\n (blur)=\"onTouched()\"\n #trigger=\"cdkOverlayOrigin\"\n />\n\n <div class=\"tedi-search__suffix\">\n @if (clearable() && _inputValue()) {\n <button\n type=\"reset\"\n tedi-closing-button\n [size]=\"size() === 'large' ? 'default' : 'small'\"\n [iconSize]=\"size() === 'large' ? 24 : 18\"\n (click)=\"$event.stopPropagation(); clearResult()\"\n ></button>\n @if (!withButton()) {\n <div class=\"tedi-search__suffix-separator\"></div>\n }\n }\n @if (!withButton()) {\n @if (!loading()) {\n <tedi-icon\n class=\"tedi-search__search-icon\"\n name=\"search\"\n color=\"secondary\"\n [size]=\"iconSize()\"\n />\n } @else {\n <tedi-spinner />\n }\n }\n </div>\n\n @if (withButton()) {\n @if (loading()) {\n <tedi-spinner />\n }\n <button\n tedi-button\n class=\"tedi-search__trigger\"\n [size]=\"buttonSize()\"\n (click)=\"searchButtonClick()\"\n [disabled]=\"_disabled()\"\n >\n <tedi-icon name=\"search\" color=\"white\" [size]=\"iconSize()\" />\n {{ buttonText() }}\n </button>\n }\n</div>\n\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"_isVisible()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n (overlayOutsideClick)=\"closeOverlay(false)\"\n (overlayKeydown)=\"$event.key === 'Escape' ? closeOverlay(true) : null\"\n #searchPanel\n>\n <tedi-card class=\"tedi-search__panel\" [style.width.px]=\"_width()\">\n @if (loading()) {\n <tedi-card-content padding=\"md\" [hasSeparator]=\"true\">\n <tedi-spinner />\n </tedi-card-content>\n } @else if (_foundOptions().length) {\n <tedi-card-content padding=\"none\" [hasSeparator]=\"true\" cdkMenu>\n @for (option of _foundOptions(); track option.value) {\n <button\n cdkMenuItem\n tedi-dropdown-item\n [value]=\"option.value\"\n [selected]=\"option.value === _selectedOption()?.value\"\n (click)=\"selectResult(option)\"\n #autocompleteOption\n >\n @if (option.description) {\n <strong>{{ option.label }}</strong> \u00B7 {{ option.description }}\n } @else {\n {{ option.label }}\n }\n </button>\n }\n </tedi-card-content>\n } @else {\n <tedi-card-content [hasSeparator]=\"true\" padding=\"md\">\n {{ noResultText() }}\n </tedi-card-content>\n }\n\n <tedi-card-content class=\"tedi-search__footer-content\" padding=\"md\">\n <ng-content></ng-content>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-search{--_border-color: var(--form-input-border-default)}.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__container{display:flex;border:1px solid;align-items:center;border-color:var(--_border-color);border-radius:var(--_border-radius);margin-bottom:var(--_form-field-outer-gap)}.tedi-search__container{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-search__container{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-search__container{--_border-radius: var(--form-field-radius-desktop)}}.tedi-search__container{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-search__container{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-search__container{gap:var(--form-field-inner-spacing-desktop)}}.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-desktop)}}.tedi-search__container:hover{--_border-color: var(--form-input-border-hover)}.tedi-search__container:focus-within{--_border-color: var(--form-input-border-active);box-shadow:0 0 0 1px var(--form-input-border-active)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:hover{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus-within{--_border-color: var(--form-general-feedback-error-border);box-shadow:0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:hover{border-color:var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus-within{border-color:var(--form-general-feedback-success-border);box-shadow:0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search__input{width:100%;flex-grow:1;border:0;padding:var(--_padding);padding-right:0;margin:0;border-radius:var(--_border-radius);border-top-right-radius:0;border-bottom-right-radius:0;letter-spacing:0px}.tedi-search__input{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-search__input{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-search__input{font-weight:var(--body-regular-weight-desktop)}}.tedi-search__input{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-search__input{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-search__input{font-size:var(--body-regular-size-desktop)}}.tedi-search__input{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-search__input{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-search__input{line-height:var(--body-regular-line-height-desktop)}}.tedi-search__trigger.tedi-button{border-radius:var(--_border-radius);border-top-left-radius:0;border-bottom-left-radius:0;align-self:stretch}.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-mobile)}@media (min-width: 576px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-tablet)}}@media (min-width: 992px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-desktop)}}.tedi-search__suffix{display:flex;align-self:stretch;align-items:center;padding:0 var(--_padding)}.tedi-search__suffix{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-desktop)}}.tedi-search--with-button .tedi-search__suffix{padding:0}.tedi-search__suffix-separator{width:1px;border-left:1px solid var(--general-border-primary);height:1em}.tedi-search__panel{margin:var(--_form-outer-gap) 0;max-height:300px;overflow-y:auto}.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__footer-content:empty{display:none}.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-desktop)}}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button{height:auto;width:56px}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button .tedi-icon--size-24{font-size:var(--icon-05-desktop)}.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-mobile)}@media (min-width: 576px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-tablet)}}@media (min-width: 992px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-desktop)}}.tedi-search--disabled .tedi-search__container{background-color:var(--form-input-background-disabled);border-color:var(--form-input-border-disabled)}.tedi-search--disabled .tedi-search__input{background-color:var(--form-input-background-disabled);pointer-events:none}\n"] }]
|
|
2091
|
+
}] });
|
|
2092
|
+
|
|
2093
|
+
const IECkiloBytes = 1024;
|
|
2094
|
+
const SIkiloBytes = 1000;
|
|
2095
|
+
const IECMegabytes = IECkiloBytes * IECkiloBytes;
|
|
2096
|
+
const SIMegabytes = SIkiloBytes * SIkiloBytes;
|
|
2097
|
+
var SIFileSize;
|
|
2098
|
+
(function (SIFileSize) {
|
|
2099
|
+
SIFileSize[SIFileSize["kB"] = 1000] = "kB";
|
|
2100
|
+
SIFileSize[SIFileSize["MB"] = 1000000] = "MB";
|
|
2101
|
+
})(SIFileSize || (SIFileSize = {}));
|
|
2102
|
+
var IECFileSize;
|
|
2103
|
+
(function (IECFileSize) {
|
|
2104
|
+
IECFileSize[IECFileSize["kB"] = 1024] = "kB";
|
|
2105
|
+
IECFileSize[IECFileSize["MB"] = 1048576] = "MB";
|
|
2106
|
+
})(IECFileSize || (IECFileSize = {}));
|
|
2107
|
+
const FileSizeStandards = {
|
|
2108
|
+
SI: SIFileSize,
|
|
2109
|
+
IEC: IECFileSize,
|
|
2110
|
+
};
|
|
2111
|
+
|
|
2112
|
+
function formatBytes(bytes, standard) {
|
|
2113
|
+
let kB = 0;
|
|
2114
|
+
let MB = 0;
|
|
2115
|
+
switch (standard) {
|
|
2116
|
+
case "IEC":
|
|
2117
|
+
kB = IECFileSize.kB;
|
|
2118
|
+
MB = IECFileSize.MB;
|
|
2119
|
+
break;
|
|
2120
|
+
case "SI":
|
|
2121
|
+
kB = SIFileSize.kB;
|
|
2122
|
+
MB = SIFileSize.MB;
|
|
2123
|
+
break;
|
|
2124
|
+
default:
|
|
2125
|
+
throw new Error(`Unknown filesize display standard: ${standard}`);
|
|
2126
|
+
}
|
|
2127
|
+
if (bytes >= MB) {
|
|
2128
|
+
const mbString = standard === "SI" ? "MB" : "MiB";
|
|
2129
|
+
return `${roundNumber(bytes / MB)} ${mbString}`;
|
|
2130
|
+
}
|
|
2131
|
+
if (bytes >= kB) {
|
|
2132
|
+
const bytesString = standard === "SI" ? "kB" : "KiB";
|
|
2133
|
+
return `${roundNumber(bytes / kB)} ${bytesString}`;
|
|
2134
|
+
}
|
|
2135
|
+
return `${bytes} B`;
|
|
2136
|
+
}
|
|
2137
|
+
function roundNumber(num, decimals = 2) {
|
|
2138
|
+
const rounded = num.toFixed(decimals);
|
|
2139
|
+
return rounded.includes(".") ? rounded.replace(/\.?0+$/, "") : rounded;
|
|
2140
|
+
}
|
|
2141
|
+
function getDefaultHelpers(accept, maxSize, standard, translate) {
|
|
2142
|
+
if (!translate)
|
|
2143
|
+
throw new Error("Translate function is required to generate default helpers.");
|
|
2144
|
+
const textArray = [];
|
|
2145
|
+
if (accept) {
|
|
2146
|
+
textArray.push(`${translate("file-upload.accept")} ${accept.replaceAll(",", ", ")}`);
|
|
2147
|
+
}
|
|
2148
|
+
if (maxSize) {
|
|
2149
|
+
textArray.push(`${translate("file-upload.max-size")} ${formatBytes(maxSize, standard)}`);
|
|
2150
|
+
}
|
|
2151
|
+
return textArray.filter(Boolean).join(". ");
|
|
2152
|
+
}
|
|
2153
|
+
function validateFileSize(maxSize, acceptFileTypes, file, standard, translate) {
|
|
2154
|
+
if (maxSize && file.size > maxSize) {
|
|
2155
|
+
const maxSizeMB = formatBytes(maxSize, standard);
|
|
2156
|
+
return translate(`file-upload.size-rejected-extended`, file.name, maxSizeMB);
|
|
2157
|
+
}
|
|
2158
|
+
return undefined;
|
|
2159
|
+
}
|
|
2160
|
+
function validateFileType(maxSize, acceptFileTypes, file, standard, translate) {
|
|
2161
|
+
if (acceptFileTypes) {
|
|
2162
|
+
const validTypes = acceptFileTypes
|
|
2163
|
+
.split(",")
|
|
2164
|
+
.map((type) => type.trim().toLowerCase());
|
|
2165
|
+
const fileType = file.type.toLowerCase();
|
|
2166
|
+
const fileName = file.name.toLowerCase() || "";
|
|
2167
|
+
const matches = validTypes.some((type) => {
|
|
2168
|
+
if (type.startsWith(".")) {
|
|
2169
|
+
return fileName.endsWith(type);
|
|
2170
|
+
}
|
|
2171
|
+
if (type.endsWith("/*")) {
|
|
2172
|
+
return fileType.startsWith(type.replace("/*", ""));
|
|
2173
|
+
}
|
|
2174
|
+
return fileType === type;
|
|
2175
|
+
});
|
|
2176
|
+
if (!matches) {
|
|
2177
|
+
return translate(`file-upload.extension-rejected-extended`, file.name, acceptFileTypes);
|
|
2178
|
+
}
|
|
2179
|
+
}
|
|
2180
|
+
return undefined;
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2183
|
+
class FileDropzone {
|
|
2184
|
+
/*
|
|
2185
|
+
* Additional CSS class names to apply to the dropzone for custom styling
|
|
2186
|
+
*/
|
|
2187
|
+
className;
|
|
2188
|
+
/*
|
|
2189
|
+
* The text label displayed for the file dropzone, providing context for users.
|
|
2190
|
+
*/
|
|
2191
|
+
label;
|
|
2192
|
+
/*
|
|
2193
|
+
* Provides a tooltip (such as an error or instruction message) to guide the user.
|
|
2194
|
+
*/
|
|
2195
|
+
helper;
|
|
2196
|
+
/*
|
|
2197
|
+
* Disables the file delete button, preventing user interaction.
|
|
2198
|
+
*/
|
|
2199
|
+
disabled;
|
|
2200
|
+
/*
|
|
2201
|
+
* Per file status of the file set by validation.
|
|
2202
|
+
*/
|
|
2203
|
+
fileStatus;
|
|
2204
|
+
/*
|
|
2205
|
+
* Possible additional properties for the file, such as metadata.
|
|
2206
|
+
*/
|
|
2207
|
+
metaData;
|
|
2208
|
+
/*
|
|
2209
|
+
* The actual file object being uploaded.
|
|
2210
|
+
*/
|
|
2211
|
+
file;
|
|
2212
|
+
constructor(file) {
|
|
2213
|
+
this.file = file;
|
|
2214
|
+
}
|
|
2215
|
+
get name() {
|
|
2216
|
+
return this.file.name;
|
|
2217
|
+
}
|
|
2218
|
+
get size() {
|
|
2219
|
+
return this.file.size;
|
|
2220
|
+
}
|
|
2221
|
+
get type() {
|
|
2222
|
+
return this.file.type;
|
|
2223
|
+
}
|
|
2224
|
+
}
|
|
2225
|
+
|
|
2226
|
+
class FileService {
|
|
2227
|
+
maxSize = signal(0).asReadonly();
|
|
2228
|
+
accept = signal("").asReadonly();
|
|
2229
|
+
mode = signal("append").asReadonly();
|
|
2230
|
+
validators = signal([]).asReadonly();
|
|
2231
|
+
sizeDisplayStandard = signal("IEC").asReadonly();
|
|
2232
|
+
uploadState = signal("none");
|
|
2233
|
+
_files = signal([]);
|
|
2234
|
+
_translateService = inject(TediTranslationService);
|
|
2235
|
+
get files() {
|
|
2236
|
+
return this._files.asReadonly();
|
|
2237
|
+
}
|
|
2238
|
+
async addFiles(files) {
|
|
2239
|
+
let newFiles = this.normalizeFiles(files);
|
|
2240
|
+
const currentFiles = this.files();
|
|
2241
|
+
switch (this.mode()) {
|
|
2242
|
+
case "append": {
|
|
2243
|
+
// index any duplicate name file
|
|
2244
|
+
newFiles = await this._renameDuplicates(currentFiles, newFiles);
|
|
2245
|
+
break;
|
|
2246
|
+
}
|
|
2247
|
+
case "replace": {
|
|
2248
|
+
// replace any files with the same name
|
|
2249
|
+
const filesToCheck = [...currentFiles, ...newFiles];
|
|
2250
|
+
const duplicateFiles = filesToCheck.filter((file, index, self) => self.findIndex((f) => f.name === file.name) !== index);
|
|
2251
|
+
if (duplicateFiles.length > 0) {
|
|
2252
|
+
newFiles = newFiles.filter((file) => !duplicateFiles.some((f) => f.name === file.name));
|
|
2253
|
+
}
|
|
2254
|
+
break;
|
|
2255
|
+
}
|
|
2256
|
+
}
|
|
2257
|
+
newFiles.push(...currentFiles);
|
|
2258
|
+
// remove old invalid files, fileStatus will not yet be set for new files
|
|
2259
|
+
if (this.uploadState() === "invalid") {
|
|
2260
|
+
newFiles = newFiles.filter((file) => file.fileStatus !== "invalid");
|
|
2261
|
+
}
|
|
2262
|
+
const error = this._checkErrorState(newFiles);
|
|
2263
|
+
this._files.set(newFiles);
|
|
2264
|
+
this.uploadState.set(this._getNewState(!!error.length));
|
|
2265
|
+
return error;
|
|
2266
|
+
}
|
|
2267
|
+
reValidateFiles() {
|
|
2268
|
+
const files = this.files();
|
|
2269
|
+
const error = this._checkErrorState(files);
|
|
2270
|
+
this.uploadState.set(this._getNewState(!!error.length));
|
|
2271
|
+
}
|
|
2272
|
+
normalizeFiles(files) {
|
|
2273
|
+
if (!files || files.length === 0) {
|
|
2274
|
+
return [];
|
|
2275
|
+
}
|
|
2276
|
+
const newFiles = files.map((file) => {
|
|
2277
|
+
if (file instanceof FileDropzone) {
|
|
2278
|
+
return file;
|
|
2279
|
+
}
|
|
2280
|
+
if (file instanceof File) {
|
|
2281
|
+
return new FileDropzone(file);
|
|
2282
|
+
}
|
|
2283
|
+
throw new Error("Invalid file type provided to addFiles");
|
|
2284
|
+
});
|
|
2285
|
+
return newFiles;
|
|
2286
|
+
}
|
|
2287
|
+
removeFiles(files) {
|
|
2288
|
+
if (!files || files.length === 0) {
|
|
2289
|
+
return [];
|
|
2290
|
+
}
|
|
2291
|
+
const newFiles = this.files().filter((file) => !files.includes(file));
|
|
2292
|
+
this._files.set(newFiles);
|
|
2293
|
+
const errors = this._checkErrorState(newFiles);
|
|
2294
|
+
if (errors.length) {
|
|
2295
|
+
this.uploadState.set("invalid");
|
|
2296
|
+
}
|
|
2297
|
+
else {
|
|
2298
|
+
this.uploadState.set(this._files.length > 0 ? "valid" : "none");
|
|
2299
|
+
}
|
|
2300
|
+
return errors;
|
|
2301
|
+
}
|
|
2302
|
+
_getNewState(error) {
|
|
2303
|
+
if (error) {
|
|
2304
|
+
return "invalid";
|
|
2305
|
+
}
|
|
2306
|
+
return this._files().length > 0 ? "valid" : "none";
|
|
2307
|
+
}
|
|
2308
|
+
_checkErrorState(files) {
|
|
2309
|
+
const errors = [];
|
|
2310
|
+
for (const file of files) {
|
|
2311
|
+
file.helper = undefined;
|
|
2312
|
+
const error = this.validators()
|
|
2313
|
+
.map((validator) => validator(this.maxSize(), this.accept(), file, this.sizeDisplayStandard(), this._translateService.translate.bind(this._translateService)))
|
|
2314
|
+
.filter((err) => err !== undefined);
|
|
2315
|
+
if (error.length) {
|
|
2316
|
+
errors.push(...error);
|
|
2317
|
+
file.helper = {
|
|
2318
|
+
type: "error",
|
|
2319
|
+
text: error.join(", "),
|
|
2320
|
+
};
|
|
2321
|
+
}
|
|
2322
|
+
file.fileStatus = error.length ? "invalid" : "valid";
|
|
2323
|
+
}
|
|
2324
|
+
return errors;
|
|
2325
|
+
}
|
|
2326
|
+
async _renameDuplicates(currentFiles, newFiles) {
|
|
2327
|
+
const renamedFiles = [];
|
|
2328
|
+
const fileNames = new Set(currentFiles.map((file) => file.name.toLowerCase()));
|
|
2329
|
+
for (const file of newFiles) {
|
|
2330
|
+
const maxCounter = 1000;
|
|
2331
|
+
let newName = file.name;
|
|
2332
|
+
let counter = 1;
|
|
2333
|
+
while (fileNames.has(newName.toLowerCase()) && counter < maxCounter) {
|
|
2334
|
+
// the .extension part of the file name unfortunately
|
|
2335
|
+
const [fileName, ...rest] = file.name.split(".");
|
|
2336
|
+
newName = `${fileName} (${counter}).${rest.join(".")}`;
|
|
2337
|
+
counter++;
|
|
2338
|
+
}
|
|
2339
|
+
fileNames.add(newName.toLowerCase());
|
|
2340
|
+
renamedFiles.push(await this._copyFile(file.file, newName));
|
|
2341
|
+
}
|
|
2342
|
+
return renamedFiles;
|
|
2343
|
+
}
|
|
2344
|
+
_copyFile(original, newName) {
|
|
2345
|
+
return original.arrayBuffer().then((buffer) => {
|
|
2346
|
+
const file = new File([buffer], newName ?? original.name, {
|
|
2347
|
+
type: original.type,
|
|
2348
|
+
lastModified: original.lastModified,
|
|
2349
|
+
});
|
|
2350
|
+
return new FileDropzone(file);
|
|
2351
|
+
});
|
|
2352
|
+
}
|
|
2353
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2354
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileService });
|
|
2355
|
+
}
|
|
2356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileService, decorators: [{
|
|
2357
|
+
type: Injectable
|
|
2358
|
+
}] });
|
|
2359
|
+
|
|
2360
|
+
class FileDropzoneComponent {
|
|
2361
|
+
/**
|
|
2362
|
+
* Specifies the allowed file types (e.g., "image/png, image/jpeg").
|
|
2363
|
+
*
|
|
2364
|
+
* Does not validate the contents of the file, only the file extension.
|
|
2365
|
+
*
|
|
2366
|
+
* https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/accept
|
|
2367
|
+
**/
|
|
2368
|
+
accept = input("");
|
|
2369
|
+
/**
|
|
2370
|
+
* The maximum file size allowed for upload, in bytes.
|
|
2371
|
+
* @default 0 (no limit)
|
|
2372
|
+
**/
|
|
2373
|
+
maxSize = input(0);
|
|
2374
|
+
/**
|
|
2375
|
+
* Specifies the standard to use when displaying file sizes or maximum file size.
|
|
2376
|
+
* Options are "SI" (base 10) or "IEC" (base 2).
|
|
2377
|
+
*
|
|
2378
|
+
* SI units are in multiples of 1000 (e.g., 1 kB = 1000 bytes).
|
|
2379
|
+
*
|
|
2380
|
+
* IEC units are in multiples of 1024 (e.g., 1 KiB = 1024 bytes).
|
|
2381
|
+
* @default "IEC"
|
|
2382
|
+
*
|
|
2383
|
+
* https://wiki.ubuntu.com/UnitsPolicy
|
|
2384
|
+
*/
|
|
2385
|
+
sizeDisplayStandard = input("IEC");
|
|
2386
|
+
/**
|
|
2387
|
+
* Determines if multiple files can be uploaded at once via the file picker.
|
|
2388
|
+
*
|
|
2389
|
+
* https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/multiple
|
|
2390
|
+
* @default false
|
|
2391
|
+
**/
|
|
2392
|
+
multiple = input(false);
|
|
2393
|
+
/**
|
|
2394
|
+
* If true, each file is validated separately instead of rejecting all at once.
|
|
2395
|
+
@default false
|
|
2396
|
+
**/
|
|
2397
|
+
validateIndividually = input(false);
|
|
2398
|
+
/**
|
|
2399
|
+
* An array of default files that are preloaded in the upload list.
|
|
2400
|
+
* @default false
|
|
2401
|
+
**/
|
|
2402
|
+
defaultFiles = input([]);
|
|
2403
|
+
/**
|
|
2404
|
+
* The unique identifier for the input element that this label is associated with.
|
|
2405
|
+
* This ID should match the input element's `id` attribute to ensure accessibility.
|
|
2406
|
+
*/
|
|
2407
|
+
inputId = input();
|
|
2408
|
+
/**
|
|
2409
|
+
* The name attribute for the file input, used for form submission and identifying the field.
|
|
2410
|
+
*/
|
|
2411
|
+
name = input();
|
|
2412
|
+
/**
|
|
2413
|
+
* The text label displayed for the file dropzone, providing context for users.
|
|
2414
|
+
*/
|
|
2415
|
+
label = input("file-dropzone.label");
|
|
2416
|
+
/**
|
|
2417
|
+
* Additional CSS class names to apply to the dropzone for custom styling
|
|
2418
|
+
*/
|
|
2419
|
+
className = input();
|
|
2420
|
+
/**
|
|
2421
|
+
* Specifies how to handle file name conflicts when multiple file of the same name are added.
|
|
2422
|
+
* Options are:
|
|
2423
|
+
* - "append": Adds new files to the end of the list, keeping existing files
|
|
2424
|
+
* - "replace": Replaces existing files with new files of the same name
|
|
2425
|
+
* @default "append"
|
|
2426
|
+
*/
|
|
2427
|
+
mode = input("append");
|
|
2428
|
+
/**
|
|
2429
|
+
* If true, allows uploading folders instead of just files.
|
|
2430
|
+
* This enables the user to select a folder and upload all its contents.
|
|
2431
|
+
* Default file browser behaviour will prevent upload of files in this state.
|
|
2432
|
+
* @default false
|
|
2433
|
+
*/
|
|
2434
|
+
uploadFolder = input(false);
|
|
2435
|
+
/**
|
|
2436
|
+
* Validation functions that can be used to validate files.
|
|
2437
|
+
* Each function should return a string error message if validation fails, or undefined if it passes
|
|
2438
|
+
*/
|
|
2439
|
+
validators = input([
|
|
2440
|
+
validateFileSize,
|
|
2441
|
+
validateFileType,
|
|
2442
|
+
]);
|
|
2443
|
+
/**
|
|
2444
|
+
* If true, shows the file dropzone as in a erroring state with red border.
|
|
2445
|
+
* Overrides default validation state.
|
|
2446
|
+
* @default false
|
|
2447
|
+
**/
|
|
2448
|
+
hasError = input(false);
|
|
2449
|
+
/**
|
|
2450
|
+
* Output event triggered when files are added.
|
|
2451
|
+
**/
|
|
2452
|
+
fileChange = output();
|
|
2453
|
+
/**
|
|
2454
|
+
* Output event triggered when a file is removed.
|
|
2455
|
+
**/
|
|
2456
|
+
fileDelete = output();
|
|
2457
|
+
fileInputElement = viewChild.required("fileInput");
|
|
2458
|
+
formatBytes = (bytes) => formatBytes(bytes, this.sizeDisplayStandard());
|
|
2459
|
+
_uploadState = computed(() => this._fileService.uploadState());
|
|
2460
|
+
_onChange = (_) => { };
|
|
2461
|
+
_onTouched = () => { };
|
|
2462
|
+
_translationService = inject(TediTranslationService);
|
|
2463
|
+
_fileService = inject(FileService);
|
|
2464
|
+
isDragActive = signal(false);
|
|
2465
|
+
disabled = signal(false);
|
|
2466
|
+
uploadError = signal(null);
|
|
2467
|
+
files = this._fileService.files;
|
|
2468
|
+
classes = computed(() => {
|
|
2469
|
+
const classList = ["tedi-file-dropzone"];
|
|
2470
|
+
if (this.disabled()) {
|
|
2471
|
+
classList.push("tedi-file-dropzone--disabled");
|
|
2472
|
+
}
|
|
2473
|
+
if (this.hasError()) {
|
|
2474
|
+
classList.push("tedi-file-dropzone--invalid");
|
|
2475
|
+
}
|
|
2476
|
+
else if (this._uploadState() !== "none") {
|
|
2477
|
+
classList.push(`tedi-file-dropzone--${this._uploadState()}`);
|
|
2478
|
+
}
|
|
2479
|
+
if (this.isDragActive()) {
|
|
2480
|
+
classList.push("tedi-file-dropzone--drop-over");
|
|
2481
|
+
}
|
|
2482
|
+
if (this.className()) {
|
|
2483
|
+
classList.push(this.className());
|
|
2484
|
+
}
|
|
2485
|
+
return classList.join(" ");
|
|
2486
|
+
});
|
|
2487
|
+
helperText = computed(() => ({
|
|
2488
|
+
text: getDefaultHelpers(this.accept(), this.maxSize(), this.sizeDisplayStandard(), this._translationService.translate.bind(this._translationService)),
|
|
2489
|
+
type: "hint",
|
|
2490
|
+
position: "left",
|
|
2491
|
+
}));
|
|
2492
|
+
ngOnInit() {
|
|
2493
|
+
this.addFiles(this.defaultFiles());
|
|
2494
|
+
this._fileService.maxSize = this.maxSize;
|
|
2495
|
+
this._fileService.accept = this.accept;
|
|
2496
|
+
this._fileService.mode = this.mode;
|
|
2497
|
+
this._fileService.validators = this.validators;
|
|
2498
|
+
this._fileService.sizeDisplayStandard = this.sizeDisplayStandard;
|
|
2499
|
+
}
|
|
2500
|
+
fileClasses = (file) => {
|
|
2501
|
+
const classList = ["tedi-file-dropzone__file-item"];
|
|
2502
|
+
if (file.className) {
|
|
2503
|
+
classList.push(...file.className);
|
|
2504
|
+
}
|
|
2505
|
+
if (file.fileStatus != "none") {
|
|
2506
|
+
classList.push(`tedi-file-dropzone__file-item--${file.fileStatus}`);
|
|
2507
|
+
}
|
|
2508
|
+
return classList.join(" ");
|
|
2509
|
+
};
|
|
2510
|
+
tooltipClasses = (file) => {
|
|
2511
|
+
const classes = ["tedi-file-dropzone__tooltip"];
|
|
2512
|
+
classes.push(`tedi-file-dropzone__tooltip--${file.helper?.type || "hint"}`);
|
|
2513
|
+
return classes.join(" ");
|
|
2514
|
+
};
|
|
2515
|
+
selectionChange = (event) => {
|
|
2516
|
+
const fileList = event.target.files;
|
|
2517
|
+
const files = Array.from(fileList || []);
|
|
2518
|
+
this.addFiles(files);
|
|
2519
|
+
this.fileInputElement().nativeElement.value = "";
|
|
2520
|
+
};
|
|
2521
|
+
onBlur() {
|
|
2522
|
+
this._onTouched();
|
|
2523
|
+
}
|
|
2524
|
+
openFilePicker() {
|
|
2525
|
+
this.fileInputElement().nativeElement.click();
|
|
2526
|
+
}
|
|
2527
|
+
onDragOver = (event) => {
|
|
2528
|
+
event?.preventDefault();
|
|
2529
|
+
};
|
|
2530
|
+
onDragEnter = (event) => {
|
|
2531
|
+
event?.preventDefault();
|
|
2532
|
+
this.isDragActive.set(true);
|
|
2533
|
+
if (event?.dataTransfer) {
|
|
2534
|
+
event.dataTransfer.dropEffect = "copy";
|
|
2535
|
+
}
|
|
2536
|
+
};
|
|
2537
|
+
onDragLeave = (event) => {
|
|
2538
|
+
event?.preventDefault();
|
|
2539
|
+
this.isDragActive.set(false);
|
|
2540
|
+
};
|
|
2541
|
+
onDrop = async (event) => {
|
|
2542
|
+
this.onDragLeave(event);
|
|
2543
|
+
event?.preventDefault();
|
|
2544
|
+
if (!event.dataTransfer)
|
|
2545
|
+
return;
|
|
2546
|
+
const files = Array.from(event.dataTransfer.files);
|
|
2547
|
+
this.addFiles(files);
|
|
2548
|
+
};
|
|
2549
|
+
async addFiles(files) {
|
|
2550
|
+
if (!Array.isArray(files) || !files.length) {
|
|
2551
|
+
return;
|
|
2552
|
+
}
|
|
2553
|
+
const error = await this._fileService.addFiles(files);
|
|
2554
|
+
const normalizedFiles = this._fileService.normalizeFiles(files);
|
|
2555
|
+
this._updateErrorState(error);
|
|
2556
|
+
this._onChange(this._fileService.files());
|
|
2557
|
+
this.fileChange.emit(normalizedFiles);
|
|
2558
|
+
}
|
|
2559
|
+
removeFile(file) {
|
|
2560
|
+
const error = this._fileService.removeFiles([file]);
|
|
2561
|
+
this._updateErrorState(error);
|
|
2562
|
+
this._onChange(this._fileService.files());
|
|
2563
|
+
this.fileDelete.emit(file);
|
|
2564
|
+
}
|
|
2565
|
+
_updateErrorState(error) {
|
|
2566
|
+
if (this._uploadState() === "invalid" &&
|
|
2567
|
+
!this.validateIndividually() &&
|
|
2568
|
+
error.length) {
|
|
2569
|
+
this.uploadError.set(error[0]);
|
|
2570
|
+
}
|
|
2571
|
+
else {
|
|
2572
|
+
this.uploadError.set("");
|
|
2573
|
+
}
|
|
2574
|
+
}
|
|
2575
|
+
onContainerClick() {
|
|
2576
|
+
this.openFilePicker();
|
|
2577
|
+
}
|
|
2578
|
+
writeValue(files) {
|
|
2579
|
+
this.addFiles(files || []);
|
|
2580
|
+
}
|
|
2581
|
+
registerOnChange(fn) {
|
|
2582
|
+
this._onChange = fn;
|
|
2583
|
+
}
|
|
2584
|
+
registerOnTouched(fn) {
|
|
2585
|
+
this._onTouched = fn;
|
|
2586
|
+
}
|
|
2587
|
+
setDisabledState(isDisabled) {
|
|
2588
|
+
this.disabled.set(isDisabled);
|
|
2589
|
+
}
|
|
2590
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileDropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2591
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: FileDropzoneComponent, isStandalone: true, selector: "tedi-file-dropzone", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, sizeDisplayStandard: { classPropertyName: "sizeDisplayStandard", publicName: "sizeDisplayStandard", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, validateIndividually: { classPropertyName: "validateIndividually", publicName: "validateIndividually", isSignal: true, isRequired: false, transformFunction: null }, defaultFiles: { classPropertyName: "defaultFiles", publicName: "defaultFiles", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, uploadFolder: { classPropertyName: "uploadFolder", publicName: "uploadFolder", isSignal: true, isRequired: false, transformFunction: null }, validators: { classPropertyName: "validators", publicName: "validators", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileChange: "fileChange", fileDelete: "fileDelete" }, host: { listeners: { "blur": "onBlur()", "keydown.code.enter": "openFilePicker()", "dragover": "onDragOver($event)", "dragenter": "onDragEnter($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, providers: [
|
|
2592
|
+
FileService,
|
|
2593
|
+
{
|
|
2594
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2595
|
+
useExisting: forwardRef(() => FileDropzoneComponent),
|
|
2596
|
+
multi: true,
|
|
2597
|
+
},
|
|
2598
|
+
], viewQueries: [{ propertyName: "fileInputElement", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<input\n #fileInput\n class=\"tedi-file-dropzone__input\"\n type=\"file\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple()\"\n [id]=\"inputId()\"\n [attr.webkitdirectory]=\"uploadFolder() ? '' : null\"\n [accept]=\"accept()\"\n (change)=\"selectionChange($event)\"\n/>\n\n<button [className]=\"classes()\" (click)=\"onContainerClick()\">\n <div class=\"tedi-file-dropzone__label-wrapper\">\n <tedi-icon\n [name]=\"isDragActive() ? 'file_upload' : 'attach_file'\"\n [color]=\"disabled() ? 'tertiary' : 'secondary'\"\n />\n <label tedi-label class=\"tedi-file-dropzone__label\">{{\n (isDragActive() ? \"file-upload.drag-and-drop\" : label()) | tediTranslate\n }}</label>\n </div>\n</button>\n\n<ng-content select=\"[helper-text]\">\n @if (helperText(); as message) {\n <tedi-feedback-text\n [text]=\"message.text\"\n [type]=\"message.type || 'hint'\"\n [position]=\"message.position || 'left'\"\n />\n }\n</ng-content>\n\n@for (file of files(); track file.name) {\n <div class=\"tedi-file-dropzone__file-list\" [tediVerticalSpacing]=\"0.5\">\n <tedi-card\n [className]=\"fileClasses(file)\"\n padding=\"none\"\n [background]=\"\n file.fileStatus && file.fileStatus == 'invalid'\n ? 'danger-primary'\n : 'tertiary'\n \"\n >\n <tedi-card-content class=\"tedi-file-dropzone__card\" padding=\"xs\">\n <div class=\"tedi-file-dropzone__file-name\">\n {{ file.label ?? file.name }}\n\n @if (file && validateIndividually() && file.helper; as helper) {\n <tedi-tooltip [className]=\"tooltipClasses(file)\">\n <tedi-tooltip-trigger>\n <button tedi-info-button [disabled]=\"file.disabled\"></button>\n </tedi-tooltip-trigger>\n\n <tedi-tooltip-content [position]=\"helper?.position || 'top'\">\n {{ helper.text }}\n </tedi-tooltip-content>\n </tedi-tooltip>\n }\n </div>\n <button\n tedi-closing-button\n [title]=\"'clear' | tediTranslate\"\n [iconSize]=\"18\"\n (click)=\"removeFile(file)\"\n size=\"small\"\n ></button>\n </tedi-card-content>\n </tedi-card>\n </div>\n}\n\n<ng-content select=\"[error-text]\">\n @if (this.uploadError(); as message) {\n <tedi-feedback-text [text]=\"message\" type=\"error\" position=\"left\" />\n }\n</ng-content>\n", styles: [".tedi-file-dropzone{text-align:center;cursor:pointer;background-color:var(--file-dropzone-background-default);border:2px dotted var(--file-dropzone-border-default);transition:border-color .2s ease-in-out,background-color .2s ease-in-out}.tedi-file-dropzone{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-file-dropzone{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{border-radius:var(--form-field-radius-desktop)}}.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone:hover{background-color:var(--file-dropzone-background-hover);border-color:var(--file-dropzone-border-hover)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper{display:flex;justify-content:center}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{font-weight:500;color:var(--file-dropzone-text-default)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label:hover{cursor:pointer}.tedi-file-dropzone--disabled{pointer-events:none;cursor:not-allowed;background-color:var(--file-dropzone-background-disabled);border-color:var(--file-dropzone-border-disabled)}.tedi-file-dropzone--disabled .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{color:var(--general-text-disabled)}.tedi-file-dropzone--invalid{border-color:var(--form-general-feedback-error-border)}.tedi-file-dropzone--valid{border-color:var(--form-general-feedback-success-border)}.tedi-file-dropzone--drop-over{color:var(--file-dropzone-text-drop-over);background-color:var(--file-dropzone-background-drop-over);border-color:var(--file-dropzone-border-drop-over)}.tedi-file-dropzone:focus-visible{outline:2px solid var(--file-dropzone-border-hover);outline-offset:1px}.tedi-file-dropzone__input{display:none}.tedi-file-dropzone__file-list{width:100%;list-style:none}.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone__file-name{overflow-wrap:anywhere}\n", ".tedi-file-dropzone{width:100%}.tedi-file-dropzone__label-wrapper{pointer-events:none}.tedi-file-dropzone__card{display:flex;justify-content:space-between;align-items:center;--_card-border: transparent}.tedi-file-dropzone__tooltip--error .tedi-info-button{--button-main-neutral-text-default: var(--red-700)}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: TooltipComponent, selector: "tedi-tooltip", inputs: ["openWith"] }, { kind: "component", type: TooltipTriggerComponent, selector: "tedi-tooltip-trigger" }, { kind: "component", type: TooltipContentComponent, selector: "tedi-tooltip-content", inputs: ["position", "maxWidth"] }, { kind: "component", type: InfoButtonComponent, selector: "button[tedi-info-button]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: VerticalSpacingDirective, selector: "[tediVerticalSpacing]", inputs: ["tediVerticalSpacing"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }] });
|
|
2599
|
+
}
|
|
2600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileDropzoneComponent, decorators: [{
|
|
2601
|
+
type: Component,
|
|
2602
|
+
args: [{ selector: "tedi-file-dropzone", imports: [
|
|
2603
|
+
IconComponent,
|
|
2604
|
+
FeedbackTextComponent,
|
|
2605
|
+
CardComponent,
|
|
2606
|
+
CardContentComponent,
|
|
2607
|
+
ClosingButtonComponent,
|
|
2608
|
+
TooltipComponent,
|
|
2609
|
+
TooltipTriggerComponent,
|
|
2610
|
+
TooltipContentComponent,
|
|
2611
|
+
InfoButtonComponent,
|
|
2612
|
+
ReactiveFormsModule,
|
|
2613
|
+
VerticalSpacingDirective,
|
|
2614
|
+
TediTranslationPipe,
|
|
2615
|
+
], providers: [
|
|
2616
|
+
FileService,
|
|
2617
|
+
{
|
|
2618
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2619
|
+
useExisting: forwardRef(() => FileDropzoneComponent),
|
|
2620
|
+
multi: true,
|
|
2621
|
+
},
|
|
2622
|
+
], template: "<input\n #fileInput\n class=\"tedi-file-dropzone__input\"\n type=\"file\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple()\"\n [id]=\"inputId()\"\n [attr.webkitdirectory]=\"uploadFolder() ? '' : null\"\n [accept]=\"accept()\"\n (change)=\"selectionChange($event)\"\n/>\n\n<button [className]=\"classes()\" (click)=\"onContainerClick()\">\n <div class=\"tedi-file-dropzone__label-wrapper\">\n <tedi-icon\n [name]=\"isDragActive() ? 'file_upload' : 'attach_file'\"\n [color]=\"disabled() ? 'tertiary' : 'secondary'\"\n />\n <label tedi-label class=\"tedi-file-dropzone__label\">{{\n (isDragActive() ? \"file-upload.drag-and-drop\" : label()) | tediTranslate\n }}</label>\n </div>\n</button>\n\n<ng-content select=\"[helper-text]\">\n @if (helperText(); as message) {\n <tedi-feedback-text\n [text]=\"message.text\"\n [type]=\"message.type || 'hint'\"\n [position]=\"message.position || 'left'\"\n />\n }\n</ng-content>\n\n@for (file of files(); track file.name) {\n <div class=\"tedi-file-dropzone__file-list\" [tediVerticalSpacing]=\"0.5\">\n <tedi-card\n [className]=\"fileClasses(file)\"\n padding=\"none\"\n [background]=\"\n file.fileStatus && file.fileStatus == 'invalid'\n ? 'danger-primary'\n : 'tertiary'\n \"\n >\n <tedi-card-content class=\"tedi-file-dropzone__card\" padding=\"xs\">\n <div class=\"tedi-file-dropzone__file-name\">\n {{ file.label ?? file.name }}\n\n @if (file && validateIndividually() && file.helper; as helper) {\n <tedi-tooltip [className]=\"tooltipClasses(file)\">\n <tedi-tooltip-trigger>\n <button tedi-info-button [disabled]=\"file.disabled\"></button>\n </tedi-tooltip-trigger>\n\n <tedi-tooltip-content [position]=\"helper?.position || 'top'\">\n {{ helper.text }}\n </tedi-tooltip-content>\n </tedi-tooltip>\n }\n </div>\n <button\n tedi-closing-button\n [title]=\"'clear' | tediTranslate\"\n [iconSize]=\"18\"\n (click)=\"removeFile(file)\"\n size=\"small\"\n ></button>\n </tedi-card-content>\n </tedi-card>\n </div>\n}\n\n<ng-content select=\"[error-text]\">\n @if (this.uploadError(); as message) {\n <tedi-feedback-text [text]=\"message\" type=\"error\" position=\"left\" />\n }\n</ng-content>\n", styles: [".tedi-file-dropzone{text-align:center;cursor:pointer;background-color:var(--file-dropzone-background-default);border:2px dotted var(--file-dropzone-border-default);transition:border-color .2s ease-in-out,background-color .2s ease-in-out}.tedi-file-dropzone{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-file-dropzone{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{border-radius:var(--form-field-radius-desktop)}}.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone:hover{background-color:var(--file-dropzone-background-hover);border-color:var(--file-dropzone-border-hover)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper{display:flex;justify-content:center}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{font-weight:500;color:var(--file-dropzone-text-default)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label:hover{cursor:pointer}.tedi-file-dropzone--disabled{pointer-events:none;cursor:not-allowed;background-color:var(--file-dropzone-background-disabled);border-color:var(--file-dropzone-border-disabled)}.tedi-file-dropzone--disabled .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{color:var(--general-text-disabled)}.tedi-file-dropzone--invalid{border-color:var(--form-general-feedback-error-border)}.tedi-file-dropzone--valid{border-color:var(--form-general-feedback-success-border)}.tedi-file-dropzone--drop-over{color:var(--file-dropzone-text-drop-over);background-color:var(--file-dropzone-background-drop-over);border-color:var(--file-dropzone-border-drop-over)}.tedi-file-dropzone:focus-visible{outline:2px solid var(--file-dropzone-border-hover);outline-offset:1px}.tedi-file-dropzone__input{display:none}.tedi-file-dropzone__file-list{width:100%;list-style:none}.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone__file-name{overflow-wrap:anywhere}\n", ".tedi-file-dropzone{width:100%}.tedi-file-dropzone__label-wrapper{pointer-events:none}.tedi-file-dropzone__card{display:flex;justify-content:space-between;align-items:center;--_card-border: transparent}.tedi-file-dropzone__tooltip--error .tedi-info-button{--button-main-neutral-text-default: var(--red-700)}\n"] }]
|
|
2623
|
+
}], propDecorators: { onBlur: [{
|
|
2624
|
+
type: HostListener,
|
|
2625
|
+
args: ["blur"]
|
|
2626
|
+
}], openFilePicker: [{
|
|
2627
|
+
type: HostListener,
|
|
2628
|
+
args: ["keydown.code.enter"]
|
|
2629
|
+
}], onDragOver: [{
|
|
2630
|
+
type: HostListener,
|
|
2631
|
+
args: ["dragover", ["$event"]]
|
|
2632
|
+
}], onDragEnter: [{
|
|
2633
|
+
type: HostListener,
|
|
2634
|
+
args: ["dragenter", ["$event"]]
|
|
2635
|
+
}], onDragLeave: [{
|
|
2636
|
+
type: HostListener,
|
|
2637
|
+
args: ["dragleave", ["$event"]]
|
|
2638
|
+
}], onDrop: [{
|
|
2639
|
+
type: HostListener,
|
|
2640
|
+
args: ["drop", ["$event"]]
|
|
2641
|
+
}] } });
|
|
2642
|
+
|
|
2643
|
+
class BreadcrumbsComponent {
|
|
2644
|
+
crumbs = input([]);
|
|
2645
|
+
shortCrumbs = input(false);
|
|
2646
|
+
xs = input();
|
|
2647
|
+
sm = input();
|
|
2648
|
+
md = input();
|
|
2649
|
+
lg = input();
|
|
2650
|
+
xl = input();
|
|
2651
|
+
xxl = input();
|
|
2652
|
+
breakpointService = inject(BreakpointService);
|
|
2653
|
+
breakpointInputs = computed(() => {
|
|
2654
|
+
return this.breakpointService.getBreakpointInputs({
|
|
2655
|
+
crumbs: this.crumbs(),
|
|
2656
|
+
shortCrumbs: this.shortCrumbs(),
|
|
2657
|
+
xs: this.xs(),
|
|
2658
|
+
sm: this.sm(),
|
|
2659
|
+
md: this.md(),
|
|
2660
|
+
lg: this.lg(),
|
|
2661
|
+
xl: this.xl(),
|
|
2662
|
+
xxl: this.xxl(),
|
|
2663
|
+
});
|
|
2664
|
+
});
|
|
2665
|
+
getSecondLastCrumb() {
|
|
2666
|
+
const crumbs = this.breakpointInputs().crumbs;
|
|
2667
|
+
if (crumbs.length > 1) {
|
|
2668
|
+
return crumbs[crumbs.length - 2];
|
|
2669
|
+
}
|
|
2670
|
+
return null;
|
|
2671
|
+
}
|
|
2672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2673
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: BreadcrumbsComponent, isStandalone: true, selector: "tedi-breadcrumbs", inputs: { crumbs: { classPropertyName: "crumbs", publicName: "crumbs", isSignal: true, isRequired: false, transformFunction: null }, shortCrumbs: { classPropertyName: "shortCrumbs", publicName: "shortCrumbs", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<nav\n *ngIf=\"this.breakpointInputs().crumbs.length > 0\"\n aria-label=\"Breadcrumb\"\n class=\"tedi__breadcrumbs\"\n>\n <ol class=\"tedi__breadcrumbs__list\">\n <ng-container *ngIf=\"!this.breakpointInputs().shortCrumbs\">\n <ng-container\n *ngFor=\"let crumb of this.breakpointInputs().crumbs; let last = last\"\n >\n @if (!last) {\n <li class=\"tedi__breadcrumbs__item\">\n <a tedi-link [routerLink]=\"crumb.href\" [underline]=\"false\">{{\n crumb.label\n }}</a>\n <tedi-icon color=\"brand\" name=\"chevron_right\" />\n </li>\n } @else {\n <li\n aria-current=\"page\"\n tedi-text\n modifiers=\"inline-block\"\n color=\"secondary\"\n >\n {{ crumb.label }}\n </li>\n }\n </ng-container>\n </ng-container>\n </ol>\n <ng-container\n *ngIf=\"\n this.breakpointInputs().crumbs.length > 1 &&\n this.breakpointInputs().shortCrumbs\n \"\n >\n <div class=\"tedi__breadcrumbs__item\">\n <tedi-icon color=\"brand\" name=\"arrow_back\" />\n <a\n tedi-link\n [routerLink]=\"getSecondLastCrumb()?.href\"\n [underline]=\"false\"\n >{{ getSecondLastCrumb()?.label }}</a\n >\n </div>\n </ng-container>\n</nav>\n", styles: [":host{display:block}.tedi__breadcrumbs__list{display:flex;flex-wrap:wrap;align-items:center;margin:0;list-style:none}.tedi__breadcrumbs__item{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LinkComponent, selector: "[tedi-link]", inputs: ["variant", "size", "underline", "xs", "sm", "md", "lg", "xl", "xxl"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }] });
|
|
2674
|
+
}
|
|
2675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
|
|
2676
|
+
type: Component,
|
|
2677
|
+
args: [{ selector: "tedi-breadcrumbs", standalone: true, imports: [
|
|
2678
|
+
CommonModule,
|
|
2679
|
+
RouterLink,
|
|
2680
|
+
LinkComponent,
|
|
2681
|
+
IconComponent,
|
|
2682
|
+
TextComponent,
|
|
2683
|
+
], template: "<nav\n *ngIf=\"this.breakpointInputs().crumbs.length > 0\"\n aria-label=\"Breadcrumb\"\n class=\"tedi__breadcrumbs\"\n>\n <ol class=\"tedi__breadcrumbs__list\">\n <ng-container *ngIf=\"!this.breakpointInputs().shortCrumbs\">\n <ng-container\n *ngFor=\"let crumb of this.breakpointInputs().crumbs; let last = last\"\n >\n @if (!last) {\n <li class=\"tedi__breadcrumbs__item\">\n <a tedi-link [routerLink]=\"crumb.href\" [underline]=\"false\">{{\n crumb.label\n }}</a>\n <tedi-icon color=\"brand\" name=\"chevron_right\" />\n </li>\n } @else {\n <li\n aria-current=\"page\"\n tedi-text\n modifiers=\"inline-block\"\n color=\"secondary\"\n >\n {{ crumb.label }}\n </li>\n }\n </ng-container>\n </ng-container>\n </ol>\n <ng-container\n *ngIf=\"\n this.breakpointInputs().crumbs.length > 1 &&\n this.breakpointInputs().shortCrumbs\n \"\n >\n <div class=\"tedi__breadcrumbs__item\">\n <tedi-icon color=\"brand\" name=\"arrow_back\" />\n <a\n tedi-link\n [routerLink]=\"getSecondLastCrumb()?.href\"\n [underline]=\"false\"\n >{{ getSecondLastCrumb()?.label }}</a\n >\n </div>\n </ng-container>\n</nav>\n", styles: [":host{display:block}.tedi__breadcrumbs__list{display:flex;flex-wrap:wrap;align-items:center;margin:0;list-style:none}.tedi__breadcrumbs__item{display:flex;align-items:center}\n"] }]
|
|
2684
|
+
}] });
|
|
2685
|
+
|
|
2686
|
+
class PaginationPageComponent {
|
|
2687
|
+
page = input.required();
|
|
2688
|
+
active = input();
|
|
2689
|
+
pageSelected = output();
|
|
2690
|
+
selectPage() {
|
|
2691
|
+
this.pageSelected.emit();
|
|
2692
|
+
}
|
|
2693
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2694
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PaginationPageComponent, isStandalone: true, selector: "tedi-pagination-page", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageSelected: "pageSelected" }, ngImport: i0, template: "@if (page() === -1) {\n <span tedi-text color=\"secondary\">...</span>\n} @else {\n <button\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--active]=\"active()\"\n type=\"button\"\n [attr.aria-current]=\"active() ? 'page' : undefined\"\n [attr.aria-label]=\"'pagination.page' | tediTranslate: page() : active()\"\n (click)=\"selectPage()\"\n >\n {{ page() }}\n </button>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:center;height:var(--_pagination-button-size);width:var(--_pagination-button-size)}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2695
|
+
}
|
|
2696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationPageComponent, decorators: [{
|
|
2697
|
+
type: Component,
|
|
2698
|
+
args: [{ selector: "tedi-pagination-page", imports: [TextComponent, TediTranslationPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (page() === -1) {\n <span tedi-text color=\"secondary\">...</span>\n} @else {\n <button\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--active]=\"active()\"\n type=\"button\"\n [attr.aria-current]=\"active() ? 'page' : undefined\"\n [attr.aria-label]=\"'pagination.page' | tediTranslate: page() : active()\"\n (click)=\"selectPage()\"\n >\n {{ page() }}\n </button>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:center;height:var(--_pagination-button-size);width:var(--_pagination-button-size)}\n"] }]
|
|
2699
|
+
}] });
|
|
2700
|
+
|
|
2701
|
+
const getPagesToDisplay = (currentPage, lastPage) => {
|
|
2702
|
+
const pages = new Set([1, currentPage, lastPage].filter((nr) => Boolean(nr)));
|
|
2703
|
+
let pagesAdded = pages.size;
|
|
2704
|
+
for (let diffFromCurrent = 1; diffFromCurrent <= 6 && pagesAdded < 7; diffFromCurrent++) {
|
|
2705
|
+
if (currentPage - diffFromCurrent > 1) {
|
|
2706
|
+
pages.add(currentPage - diffFromCurrent);
|
|
2707
|
+
pagesAdded += 1;
|
|
2708
|
+
}
|
|
2709
|
+
if (currentPage + diffFromCurrent < lastPage) {
|
|
2710
|
+
pages.add(currentPage + diffFromCurrent);
|
|
2711
|
+
pagesAdded += 1;
|
|
2712
|
+
}
|
|
2713
|
+
}
|
|
2714
|
+
const sortedPages = [...pages].sort((a, b) => a - b);
|
|
2715
|
+
if (sortedPages[0] && sortedPages[2] && sortedPages[2] - sortedPages[0] > 2) {
|
|
2716
|
+
sortedPages.splice(1, 1, -1);
|
|
2717
|
+
}
|
|
2718
|
+
if (sortedPages[sortedPages.length - 1] &&
|
|
2719
|
+
sortedPages[sortedPages.length - 3] &&
|
|
2720
|
+
sortedPages[sortedPages.length - 1] - sortedPages[sortedPages.length - 3] >
|
|
2721
|
+
2) {
|
|
2722
|
+
sortedPages.splice(sortedPages.length - 2, 1, -1);
|
|
2723
|
+
}
|
|
2724
|
+
return sortedPages;
|
|
2725
|
+
};
|
|
2726
|
+
|
|
2727
|
+
class PaginationComponent {
|
|
2728
|
+
page = model(1);
|
|
2729
|
+
pageSize = model(50);
|
|
2730
|
+
pageSizeOptions = input([10, 50, 100]);
|
|
2731
|
+
length = input(0);
|
|
2732
|
+
hideResults = input(false, { transform: booleanAttribute });
|
|
2733
|
+
hidePageSize = input(false, { transform: booleanAttribute });
|
|
2734
|
+
lastPage = computed(() => {
|
|
2735
|
+
return Math.ceil(this.length() / this.pageSize());
|
|
2736
|
+
});
|
|
2737
|
+
dropdownId = crypto.randomUUID();
|
|
2738
|
+
pages = computed(() => {
|
|
2739
|
+
return getPagesToDisplay(this.page(), this.lastPage());
|
|
2740
|
+
});
|
|
2741
|
+
hasPreviousButton = computed(() => this.page() > 1);
|
|
2742
|
+
hasNextButton = computed(() => this.page() < this.lastPage());
|
|
2743
|
+
changePage(step) {
|
|
2744
|
+
this.page.update((currentPage) => currentPage + step);
|
|
2745
|
+
}
|
|
2746
|
+
selectPage(page) {
|
|
2747
|
+
this.page.set(page);
|
|
2748
|
+
}
|
|
2749
|
+
pageSizeChanged() {
|
|
2750
|
+
this.page.set(1);
|
|
2751
|
+
}
|
|
2752
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2753
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PaginationComponent, isStandalone: true, selector: "tedi-pagination", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: false, transformFunction: null }, hideResults: { classPropertyName: "hideResults", publicName: "hideResults", isSignal: true, isRequired: false, transformFunction: null }, hidePageSize: { classPropertyName: "hidePageSize", publicName: "hidePageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", pageSize: "pageSizeChange" }, ngImport: i0, template: "<div class=\"tedi-pagination\">\n @if (!hideResults()) {\n <span\n tedi-text\n class=\"tedi-pagination__results\"\n color=\"secondary\"\n modifiers=\"small\"\n >{{ length() }} {{ \"pagination.results\" | tediTranslate: length() }}</span\n >\n }\n <nav\n [attr.aria-label]=\"'pagination.title' | tediTranslate\"\n class=\"tedi-pagination__pager\"\n >\n <ul class=\"tedi-pagination__pages\">\n <li>\n <button\n tedi-button\n [disabled]=\"!hasPreviousButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(-1)\"\n [attr.aria-label]=\"'pagination.prev-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n </li>\n @for (pageNr of pages(); track $index) {\n <li>\n <tedi-pagination-page\n [page]=\"pageNr\"\n [active]=\"pageNr === page()\"\n (pageSelected)=\"selectPage(pageNr)\"\n />\n </li>\n }\n <li>\n <button\n tedi-button\n [disabled]=\"!hasNextButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(1)\"\n [attr.aria-label]=\"'pagination.next-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n </li>\n </ul>\n </nav>\n\n @if (!hidePageSize()) {\n <div class=\"tedi-pagination__page-size-options\">\n <label tedi-text color=\"secondary\" modifiers=\"small\" [for]=\"dropdownId\">{{\n \"pagination.page-size\" | tediTranslate\n }}</label>\n <select\n [id]=\"dropdownId\"\n [(ngModel)]=\"pageSize\"\n (change)=\"pageSizeChanged()\"\n class=\"tedi-pagination__dropdown\"\n >\n @for (size of pageSizeOptions(); track size) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </div>\n }\n</div>\n", styles: [".tedi-pagination{--_pagination-border: var(--general-border-secondary, #9293a4);--_pagination-background: var(--general-surface-primary, #fff);--_pagination-page-background: transparent;--_pagination-page-text: var(--general-text-secondary, #4b4e62);--_pagination-layout: \"results page-size-options\" \"pager pager\";border-top:1px solid var(--_pagination-border);background:var(--_pagination-background);padding:var(--_pagination-padding-y) var(--_pagination-padding-x);display:grid;align-items:center;grid-template-areas:var(--_pagination-layout)}.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-desktop)}}.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-desktop)}}.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-desktop)}}.tedi-pagination{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-pagination{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-pagination{gap:var(--layout-grid-gutters-04-desktop)}}@media (min-width: 768px){.tedi-pagination{--_pagination-layout: \"results pager page-size-options\";grid-template-columns:repeat(3,1fr)}}.tedi-pagination__results{grid-area:results}.tedi-pagination__pager{grid-area:pager;justify-self:center}.tedi-pagination__pages{display:flex;justify-items:center;align-items:center;list-style:none;margin:0}.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-mobile)}@media (min-width: 576px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-tablet)}}@media (min-width: 992px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-desktop)}}.tedi-pagination__page{display:flex;justify-content:center;align-items:center;height:100%;width:100%;flex-shrink:0;border-radius:50%;border:none;background:var(--_pagination-page-background);color:var(--_pagination-page-text);cursor:pointer}.tedi-pagination__page:hover{--_pagination-page-background: var( --button-main-neutral-icon-only-background-hover, #e7f0f6 );--_pagination-page-text: var(--button-main-neutral-text-hover, #004277)}.tedi-pagination__page:active{--_pagination-page-background: var( --button-main-neutral-icon-only-background-active, #d0e1ee );--_pagination-page-text: var(--button-main-neutral-text-active, #003662)}.tedi-pagination__page:focus{--_pagination-page-background: var( --button-main-neutral-icon-only-background-focus, rgba(0, 0, 0, 0) );--_pagination-page-text: var(--button-main-neutral-text-focus, #005aa3)}.tedi-pagination__page.tedi-pagination__page--active{--_pagination-page-background: var( --general-surface-brand-secondary, #004277 );--_pagination-page-text: var(--general-text-white, #fff);pointer-events:none}.tedi-pagination__nav-button.tedi-button[disabled]{color:transparent;pointer-events:none;-webkit-user-select:none;user-select:none}.tedi-pagination__page-size-options{grid-area:page-size-options;display:flex;align-items:center;justify-self:flex-end}.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-desktop)}}.tedi-pagination__dropdown{border:1px solid var(--form-input-border-default, #838494)}.tedi-pagination__dropdown{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-desktop)}}.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-desktop)}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }, { kind: "component", type: PaginationPageComponent, selector: "tedi-pagination-page", inputs: ["page", "active"], outputs: ["pageSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2754
|
+
}
|
|
2755
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
2756
|
+
type: Component,
|
|
2757
|
+
args: [{ selector: "tedi-pagination", imports: [
|
|
2758
|
+
ButtonComponent,
|
|
2759
|
+
IconComponent,
|
|
2760
|
+
TextComponent,
|
|
2761
|
+
TediTranslationPipe,
|
|
2762
|
+
PaginationPageComponent,
|
|
2763
|
+
FormsModule,
|
|
2764
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"tedi-pagination\">\n @if (!hideResults()) {\n <span\n tedi-text\n class=\"tedi-pagination__results\"\n color=\"secondary\"\n modifiers=\"small\"\n >{{ length() }} {{ \"pagination.results\" | tediTranslate: length() }}</span\n >\n }\n <nav\n [attr.aria-label]=\"'pagination.title' | tediTranslate\"\n class=\"tedi-pagination__pager\"\n >\n <ul class=\"tedi-pagination__pages\">\n <li>\n <button\n tedi-button\n [disabled]=\"!hasPreviousButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(-1)\"\n [attr.aria-label]=\"'pagination.prev-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n </li>\n @for (pageNr of pages(); track $index) {\n <li>\n <tedi-pagination-page\n [page]=\"pageNr\"\n [active]=\"pageNr === page()\"\n (pageSelected)=\"selectPage(pageNr)\"\n />\n </li>\n }\n <li>\n <button\n tedi-button\n [disabled]=\"!hasNextButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(1)\"\n [attr.aria-label]=\"'pagination.next-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n </li>\n </ul>\n </nav>\n\n @if (!hidePageSize()) {\n <div class=\"tedi-pagination__page-size-options\">\n <label tedi-text color=\"secondary\" modifiers=\"small\" [for]=\"dropdownId\">{{\n \"pagination.page-size\" | tediTranslate\n }}</label>\n <select\n [id]=\"dropdownId\"\n [(ngModel)]=\"pageSize\"\n (change)=\"pageSizeChanged()\"\n class=\"tedi-pagination__dropdown\"\n >\n @for (size of pageSizeOptions(); track size) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </div>\n }\n</div>\n", styles: [".tedi-pagination{--_pagination-border: var(--general-border-secondary, #9293a4);--_pagination-background: var(--general-surface-primary, #fff);--_pagination-page-background: transparent;--_pagination-page-text: var(--general-text-secondary, #4b4e62);--_pagination-layout: \"results page-size-options\" \"pager pager\";border-top:1px solid var(--_pagination-border);background:var(--_pagination-background);padding:var(--_pagination-padding-y) var(--_pagination-padding-x);display:grid;align-items:center;grid-template-areas:var(--_pagination-layout)}.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-desktop)}}.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-desktop)}}.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-desktop)}}.tedi-pagination{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-pagination{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-pagination{gap:var(--layout-grid-gutters-04-desktop)}}@media (min-width: 768px){.tedi-pagination{--_pagination-layout: \"results pager page-size-options\";grid-template-columns:repeat(3,1fr)}}.tedi-pagination__results{grid-area:results}.tedi-pagination__pager{grid-area:pager;justify-self:center}.tedi-pagination__pages{display:flex;justify-items:center;align-items:center;list-style:none;margin:0}.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-mobile)}@media (min-width: 576px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-tablet)}}@media (min-width: 992px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-desktop)}}.tedi-pagination__page{display:flex;justify-content:center;align-items:center;height:100%;width:100%;flex-shrink:0;border-radius:50%;border:none;background:var(--_pagination-page-background);color:var(--_pagination-page-text);cursor:pointer}.tedi-pagination__page:hover{--_pagination-page-background: var( --button-main-neutral-icon-only-background-hover, #e7f0f6 );--_pagination-page-text: var(--button-main-neutral-text-hover, #004277)}.tedi-pagination__page:active{--_pagination-page-background: var( --button-main-neutral-icon-only-background-active, #d0e1ee );--_pagination-page-text: var(--button-main-neutral-text-active, #003662)}.tedi-pagination__page:focus{--_pagination-page-background: var( --button-main-neutral-icon-only-background-focus, rgba(0, 0, 0, 0) );--_pagination-page-text: var(--button-main-neutral-text-focus, #005aa3)}.tedi-pagination__page.tedi-pagination__page--active{--_pagination-page-background: var( --general-surface-brand-secondary, #004277 );--_pagination-page-text: var(--general-text-white, #fff);pointer-events:none}.tedi-pagination__nav-button.tedi-button[disabled]{color:transparent;pointer-events:none;-webkit-user-select:none;user-select:none}.tedi-pagination__page-size-options{grid-area:page-size-options;display:flex;align-items:center;justify-self:flex-end}.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-desktop)}}.tedi-pagination__dropdown{border:1px solid var(--form-input-border-default, #838494)}.tedi-pagination__dropdown{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-desktop)}}.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-desktop)}}\n"] }]
|
|
2765
|
+
}] });
|
|
2766
|
+
|
|
2767
|
+
class TabContentComponent {
|
|
2768
|
+
tabId = input.required();
|
|
2769
|
+
content = viewChild.required("content");
|
|
2770
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2771
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: TabContentComponent, isStandalone: true, selector: "tedi-tab-content", inputs: { tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #content>\n <ng-content />\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2772
|
+
}
|
|
2773
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabContentComponent, decorators: [{
|
|
2774
|
+
type: Component,
|
|
2775
|
+
args: [{ selector: "tedi-tab-content", imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #content>\n <ng-content />\n</ng-template>\n" }]
|
|
2776
|
+
}] });
|
|
2777
|
+
|
|
2778
|
+
class TabComponent {
|
|
2779
|
+
element;
|
|
2780
|
+
tabId = input.required();
|
|
2781
|
+
selected = model(false);
|
|
2782
|
+
disabledInput = input(false, {
|
|
2783
|
+
transform: booleanAttribute,
|
|
2784
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
2785
|
+
alias: "disabled",
|
|
2786
|
+
});
|
|
2787
|
+
disabled; // for cdk/a11y keymanager
|
|
2788
|
+
tabSelected = output();
|
|
2789
|
+
routerLinkActive = inject(RouterLinkActive, { self: true });
|
|
2790
|
+
linkActive = toSignal(this.routerLinkActive.isActiveChange.pipe(startWith(this.routerLinkActive.isActive)));
|
|
2791
|
+
isTabActive = computed(() => this.selected() || this.linkActive());
|
|
2792
|
+
selectTab() {
|
|
2793
|
+
this.selected.set(true);
|
|
2794
|
+
this.tabSelected.emit();
|
|
2795
|
+
}
|
|
2796
|
+
focus() {
|
|
2797
|
+
this.element.nativeElement.focus();
|
|
2798
|
+
}
|
|
2799
|
+
constructor(element) {
|
|
2800
|
+
this.element = element;
|
|
2801
|
+
effect(() => {
|
|
2802
|
+
this.disabled = this.disabledInput();
|
|
2803
|
+
});
|
|
2804
|
+
this.routerLinkActive.routerLinkActive = ["tedi-tab--active"]; // should be changed once hostDirectives allow default values
|
|
2805
|
+
}
|
|
2806
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2807
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: TabComponent, isStandalone: true, selector: "[tedi-tab]", inputs: { tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selectedChange", tabSelected: "tabSelected" }, host: { listeners: { "click": "selectTab()" }, properties: { "class.tedi-tab": "true", "class.tedi-tab--selected": "selected()", "class.tedi-tab--disabled": "disabledInput()", "attr.role": "'tab'" } }, hostDirectives: [{ directive: i1$2.RouterLinkActive, inputs: ["routerLinkActiveOptions", "routerLinkActiveOptions", "ariaCurrentWhenActive", "ariaCurrentWhenActive"], outputs: ["isActiveChange", "isActiveChange"] }], ngImport: i0, template: "<ng-content />\n", styles: [".tedi-tab{--_tab-background: var(--tab-item-default-background);--_tab-color: var(--tab-item-default-text);--_tab-padding: var(--_tab-padding-y) var(--_tab-padding-x);--_tab-selected-border: var(--tab-item-selected-border);padding:var(--_tab-padding);background:var(--_tab-background);color:var(--_tab-color);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--_tab-inner-spacing);border:none;cursor:pointer;text-decoration:none}.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-desktop)}}.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-desktop)}}.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-desktop)}}.tedi-tab{font-size:var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-tab{font-size:var(--body-regular-size-desktop)}}.tedi-tab:active{--_tab-background: var(--tab-item-active-background);--_tab-color: var(--tab-item-active-text)}.tedi-tab:hover,.tedi-tab:focus{--_tab-background: var(--tab-item-hover-background);--_tab-color: var(--tab-item-hover-text)}.tedi-tab--selected,.tedi-tab--active{--_tab-background: var(--tab-item-selected-background);--_tab-color: var(--tab-item-selected-text)}.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-mobile)}@media (min-width: 576px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-tablet)}}@media (min-width: 992px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-desktop)}}.tedi-tab--selected:after,.tedi-tab--active:after{content:\"\";position:absolute;border-top:3px solid var(--_tab-selected-border);top:0;left:0;right:0}.tedi-tab--disabled{pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2808
|
+
}
|
|
2809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabComponent, decorators: [{
|
|
2810
|
+
type: Component,
|
|
2811
|
+
args: [{ selector: "[tedi-tab]", imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2812
|
+
"[class.tedi-tab]": "true",
|
|
2813
|
+
"[class.tedi-tab--selected]": "selected()",
|
|
2814
|
+
"[class.tedi-tab--disabled]": "disabledInput()",
|
|
2815
|
+
"[attr.role]": "'tab'",
|
|
2816
|
+
"(click)": "selectTab()",
|
|
2817
|
+
}, hostDirectives: [
|
|
2818
|
+
{
|
|
2819
|
+
directive: RouterLinkActive,
|
|
2820
|
+
inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive"],
|
|
2821
|
+
outputs: ["isActiveChange"],
|
|
2822
|
+
},
|
|
2823
|
+
], template: "<ng-content />\n", styles: [".tedi-tab{--_tab-background: var(--tab-item-default-background);--_tab-color: var(--tab-item-default-text);--_tab-padding: var(--_tab-padding-y) var(--_tab-padding-x);--_tab-selected-border: var(--tab-item-selected-border);padding:var(--_tab-padding);background:var(--_tab-background);color:var(--_tab-color);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--_tab-inner-spacing);border:none;cursor:pointer;text-decoration:none}.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-desktop)}}.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-desktop)}}.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-desktop)}}.tedi-tab{font-size:var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-tab{font-size:var(--body-regular-size-desktop)}}.tedi-tab:active{--_tab-background: var(--tab-item-active-background);--_tab-color: var(--tab-item-active-text)}.tedi-tab:hover,.tedi-tab:focus{--_tab-background: var(--tab-item-hover-background);--_tab-color: var(--tab-item-hover-text)}.tedi-tab--selected,.tedi-tab--active{--_tab-background: var(--tab-item-selected-background);--_tab-color: var(--tab-item-selected-text)}.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-mobile)}@media (min-width: 576px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-tablet)}}@media (min-width: 992px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-desktop)}}.tedi-tab--selected:after,.tedi-tab--active:after{content:\"\";position:absolute;border-top:3px solid var(--_tab-selected-border);top:0;left:0;right:0}.tedi-tab--disabled{pointer-events:none}\n"] }]
|
|
2824
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
2825
|
+
|
|
2826
|
+
class TabsComponent {
|
|
2827
|
+
injector = inject(Injector);
|
|
2828
|
+
mobileTabsOpened = signal(false);
|
|
2829
|
+
tabs = contentChildren(TabComponent);
|
|
2830
|
+
tabContents = contentChildren(TabContentComponent);
|
|
2831
|
+
keyManager;
|
|
2832
|
+
activeTabId = computed(() => this.tabs()
|
|
2833
|
+
.find((tab) => tab.isTabActive())
|
|
2834
|
+
?.tabId());
|
|
2835
|
+
activeTabContent = computed(() => this.tabContents()
|
|
2836
|
+
.find((content) => content.tabId() === this.activeTabId())
|
|
2837
|
+
?.content());
|
|
2838
|
+
onActiveTabChanges(tabs) {
|
|
2839
|
+
tabs.forEach((tab) => {
|
|
2840
|
+
tab.tabSelected.subscribe(() => {
|
|
2841
|
+
this.mobileTabsOpened.set(false);
|
|
2842
|
+
tabs.forEach((otherTab) => {
|
|
2843
|
+
if (otherTab !== tab) {
|
|
2844
|
+
otherTab.selected.set(false);
|
|
2845
|
+
}
|
|
2846
|
+
});
|
|
2847
|
+
});
|
|
2848
|
+
});
|
|
2849
|
+
}
|
|
2850
|
+
onKeyDown(event) {
|
|
2851
|
+
this.keyManager?.onKeydown(event);
|
|
2852
|
+
}
|
|
2853
|
+
constructor() {
|
|
2854
|
+
effect(() => {
|
|
2855
|
+
const tabs = this.tabs();
|
|
2856
|
+
this.onActiveTabChanges(tabs);
|
|
2857
|
+
});
|
|
2858
|
+
}
|
|
2859
|
+
ngOnInit() {
|
|
2860
|
+
this.keyManager = new FocusKeyManager(this.tabs, this.injector)
|
|
2861
|
+
.withWrap()
|
|
2862
|
+
.withHorizontalOrientation("ltr");
|
|
2863
|
+
}
|
|
2864
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2865
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TabsComponent, isStandalone: true, selector: "tedi-tabs", host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.tedi-tabs": "true" } }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }, { propertyName: "tabContents", predicate: TabContentComponent, isSignal: true }], ngImport: i0, template: "<ng-template #tabsList><ng-content select=\"[tedi-tab]\" /></ng-template>\n\n<tedi-card padding=\"none\">\n <tedi-card-content>\n <div role=\"tablist\" class=\"tedi-tabs__tab-list\">\n @if (!mobileTabsOpened()) {\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n }\n <button\n aria-haspopup=\"menu\"\n (click)=\"mobileTabsOpened.set(true)\"\n class=\"tedi-tab tedi-tab--more-btn\"\n >\n {{ \"more\" | tediTranslate }}\n <tedi-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n </div>\n </tedi-card-content>\n\n <tedi-card-content role=\"tabpanel\" [attr.aria-labelledby]=\"activeTabId()\">\n @if (activeTabContent(); as activeContent) {\n <ng-container *ngTemplateOutlet=\"activeContent\" />\n }\n <ng-content></ng-content>\n </tedi-card-content>\n</tedi-card>\n\n@if (mobileTabsOpened()) {\n <tedi-card padding=\"none\" class=\"tedi-tabs__mobile-dropdown\">\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n size=\"small\"\n (click)=\"mobileTabsOpened.set(false)\"\n ></button>\n </tedi-card-content>\n <tedi-card-content class=\"tedi-tabs__mobile-list\">\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n </tedi-card-content>\n </tedi-card>\n}\n", styles: [".tedi-tabs{--_tab-list-background: var(--tab-background)}.tedi-tabs__tab-list{display:flex;justify-content:start;overflow:auto;border-top-left-radius:var(--tab-top-radius, 4px);border-top-right-radius:var(--tab-top-radius, 4px);background:var(--_tab-list-background)}@media (max-width: 575.98px){.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--more-btn){flex-grow:1}.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--active,.tedi-tab--selected,.tedi-tab--more-btn){display:none}}@media (min-width: 576px){.tedi-tabs .tedi-tab--more-btn{display:none}}.tedi-tabs__mobile-dropdown.tedi-card{position:fixed;inset:0;z-index:1050}.tedi-tabs__mobile-list.tedi-card-content{display:flex;flex-direction:column}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{--_tab-background: var(--dropdown-item-active-background);--_tab-color: var(--dropdown-item-active-text)}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-desktop)}}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected:after,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active:after{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2866
|
+
}
|
|
2867
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsComponent, decorators: [{
|
|
2868
|
+
type: Component,
|
|
2869
|
+
args: [{ selector: "tedi-tabs", imports: [
|
|
2870
|
+
CommonModule,
|
|
2871
|
+
CardComponent,
|
|
2872
|
+
CardContentComponent,
|
|
2873
|
+
ClosingButtonComponent,
|
|
2874
|
+
IconComponent,
|
|
2875
|
+
TediTranslationPipe,
|
|
2876
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2877
|
+
"[class.tedi-tabs]": "true",
|
|
2878
|
+
"(keydown)": "onKeyDown($event)",
|
|
2879
|
+
}, template: "<ng-template #tabsList><ng-content select=\"[tedi-tab]\" /></ng-template>\n\n<tedi-card padding=\"none\">\n <tedi-card-content>\n <div role=\"tablist\" class=\"tedi-tabs__tab-list\">\n @if (!mobileTabsOpened()) {\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n }\n <button\n aria-haspopup=\"menu\"\n (click)=\"mobileTabsOpened.set(true)\"\n class=\"tedi-tab tedi-tab--more-btn\"\n >\n {{ \"more\" | tediTranslate }}\n <tedi-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n </div>\n </tedi-card-content>\n\n <tedi-card-content role=\"tabpanel\" [attr.aria-labelledby]=\"activeTabId()\">\n @if (activeTabContent(); as activeContent) {\n <ng-container *ngTemplateOutlet=\"activeContent\" />\n }\n <ng-content></ng-content>\n </tedi-card-content>\n</tedi-card>\n\n@if (mobileTabsOpened()) {\n <tedi-card padding=\"none\" class=\"tedi-tabs__mobile-dropdown\">\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n size=\"small\"\n (click)=\"mobileTabsOpened.set(false)\"\n ></button>\n </tedi-card-content>\n <tedi-card-content class=\"tedi-tabs__mobile-list\">\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n </tedi-card-content>\n </tedi-card>\n}\n", styles: [".tedi-tabs{--_tab-list-background: var(--tab-background)}.tedi-tabs__tab-list{display:flex;justify-content:start;overflow:auto;border-top-left-radius:var(--tab-top-radius, 4px);border-top-right-radius:var(--tab-top-radius, 4px);background:var(--_tab-list-background)}@media (max-width: 575.98px){.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--more-btn){flex-grow:1}.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--active,.tedi-tab--selected,.tedi-tab--more-btn){display:none}}@media (min-width: 576px){.tedi-tabs .tedi-tab--more-btn{display:none}}.tedi-tabs__mobile-dropdown.tedi-card{position:fixed;inset:0;z-index:1050}.tedi-tabs__mobile-list.tedi-card-content{display:flex;flex-direction:column}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{--_tab-background: var(--dropdown-item-active-background);--_tab-color: var(--dropdown-item-active-text)}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-desktop)}}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected:after,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active:after{display:none}\n"] }]
|
|
2880
|
+
}], ctorParameters: () => [] });
|
|
2881
|
+
|
|
2882
|
+
class TableStylesComponent {
|
|
2883
|
+
size = input("default");
|
|
2884
|
+
verticalBorders = input(false, { transform: booleanAttribute });
|
|
2885
|
+
striped = input(false, { transform: booleanAttribute });
|
|
2886
|
+
clickable = input(false, { transform: booleanAttribute });
|
|
2887
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TableStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2888
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: TableStylesComponent, isStandalone: true, selector: "tedi-table-styles", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, verticalBorders: { classPropertyName: "verticalBorders", publicName: "verticalBorders", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-table-styles": "true", "class.tedi-table-styles--striped": "striped()", "class.tedi-table-styles--vertical-borders": "verticalBorders()", "class.tedi-table-styles--clickable": "clickable()", "class.tedi-table-styles--sm": "size() === 'small'" } }, ngImport: i0, template: "<div class=\"tedi-table-scroll\" cdkScrollable>\n <ng-content />\n</div>\n<ng-content select=\"tedi-pagination, [tedi-table-pagination]\" />\n", styles: [".tedi-table-styles{--_table-bg: var(--table-default);--_table-border: var(--table-border);--_table-contrast-border: var(--table-border-th);--_table-stripe: var(--table-striped);--_table-hover: var(--table-hover);--_table-color: var(--general-text-primary);--_table-header-color: var(--general-text-tertiary);display:block;background:var(--_table-bg);border-radius:var(--_table-radius);border:1px solid var(--_table-border);overflow:hidden}.tedi-table-styles{--_table-radius: var(--table-radius-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-radius: var(--table-radius-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-radius: var(--table-radius-desktop)}}.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-desktop)}}.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-desktop)}}.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-desktop)}}.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-desktop)}}.tedi-table-styles table{border-collapse:collapse;border-spacing:0;vertical-align:middle;width:100%;position:relative}.tedi-table-styles th,.tedi-table-styles td{text-align:left}.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-desktop)}}.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-desktop)}}.tedi-table-styles th{padding:var(--_table-header-padding-y) var(--_table-header-padding-x);border-bottom:1px solid var(--_table-contrast-border);color:var(--_table-header-color)}.tedi-table-styles td{padding:var(--_table-data-padding-y) var(--_table-data-padding-x);border-bottom:1px solid var(--_table-border);color:var(--_table-color)}.tedi-table-styles tr:last-child td{border-bottom:none}.tedi-table-styles .tedi-cell--align-center{text-align:center}.tedi-table-styles .tedi-cell--align-right{text-align:right}.tedi-table-styles .tedi-row--secondary{background-color:var(--_table-stripe)}.tedi-table-styles .tedi-table-scroll{overflow-x:auto}.tedi-table-styles--striped tbody tr:nth-child(2n){background-color:var(--_table-stripe)}.tedi-table-styles--clickable tbody tr:hover{cursor:pointer;background-color:var(--_table-hover)}.tedi-table-styles--vertical-borders :is(th,td):not(:last-child){border-right:1px solid var(--_table-border)}.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-desktop)}}\n"], dependencies: [{ kind: "directive", type: CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2889
|
+
}
|
|
2890
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TableStylesComponent, decorators: [{
|
|
2891
|
+
type: Component,
|
|
2892
|
+
args: [{ selector: "tedi-table-styles", imports: [CdkScrollable], host: {
|
|
2893
|
+
"[class.tedi-table-styles]": "true",
|
|
2894
|
+
"[class.tedi-table-styles--striped]": "striped()",
|
|
2895
|
+
"[class.tedi-table-styles--vertical-borders]": "verticalBorders()",
|
|
2896
|
+
"[class.tedi-table-styles--clickable]": "clickable()",
|
|
2897
|
+
"[class.tedi-table-styles--sm]": "size() === 'small'",
|
|
2898
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tedi-table-scroll\" cdkScrollable>\n <ng-content />\n</div>\n<ng-content select=\"tedi-pagination, [tedi-table-pagination]\" />\n", styles: [".tedi-table-styles{--_table-bg: var(--table-default);--_table-border: var(--table-border);--_table-contrast-border: var(--table-border-th);--_table-stripe: var(--table-striped);--_table-hover: var(--table-hover);--_table-color: var(--general-text-primary);--_table-header-color: var(--general-text-tertiary);display:block;background:var(--_table-bg);border-radius:var(--_table-radius);border:1px solid var(--_table-border);overflow:hidden}.tedi-table-styles{--_table-radius: var(--table-radius-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-radius: var(--table-radius-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-radius: var(--table-radius-desktop)}}.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-desktop)}}.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-desktop)}}.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-desktop)}}.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-desktop)}}.tedi-table-styles table{border-collapse:collapse;border-spacing:0;vertical-align:middle;width:100%;position:relative}.tedi-table-styles th,.tedi-table-styles td{text-align:left}.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-desktop)}}.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-desktop)}}.tedi-table-styles th{padding:var(--_table-header-padding-y) var(--_table-header-padding-x);border-bottom:1px solid var(--_table-contrast-border);color:var(--_table-header-color)}.tedi-table-styles td{padding:var(--_table-data-padding-y) var(--_table-data-padding-x);border-bottom:1px solid var(--_table-border);color:var(--_table-color)}.tedi-table-styles tr:last-child td{border-bottom:none}.tedi-table-styles .tedi-cell--align-center{text-align:center}.tedi-table-styles .tedi-cell--align-right{text-align:right}.tedi-table-styles .tedi-row--secondary{background-color:var(--_table-stripe)}.tedi-table-styles .tedi-table-scroll{overflow-x:auto}.tedi-table-styles--striped tbody tr:nth-child(2n){background-color:var(--_table-stripe)}.tedi-table-styles--clickable tbody tr:hover{cursor:pointer;background-color:var(--_table-hover)}.tedi-table-styles--vertical-borders :is(th,td):not(:last-child){border-right:1px solid var(--_table-border)}.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-desktop)}}\n"] }]
|
|
2899
|
+
}] });
|
|
2900
|
+
|
|
2901
|
+
/**
|
|
2902
|
+
* Generated bundle index. Do not edit.
|
|
2903
|
+
*/
|
|
2904
|
+
|
|
2905
|
+
export { AccordionComponent, AccordionIconComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, BreadcrumbsComponent, CardColorsDirective, CardComponent, CardContentComponent, CardHeaderComponent, CardPaddingDirective, CardRowComponent, CheckboxCardGroupComponent, CheckboxComponent, CheckboxGroupComponent, ChoiceGroupDirective, DropdownComponent, DropdownItemComponent, DropdownTriggerDirective, FileDropzoneComponent, FormFieldComponent, InputComponent, InputGroupComponent, ModalComponent, ModalFooterComponent, ModalHeaderComponent, MultiselectComponent, PaginationComponent, RadioCardGroupComponent, RadioComponent, RadioGroupComponent, SearchComponent, SelectComponent, SelectOptionComponent, StatusBadgeComponent, TabComponent, TabContentComponent, TableStylesComponent, TabsComponent, TagComponent, TextareaComponent, modalBreakpoints, specialOptionControls };
|
|
2906
|
+
//# sourceMappingURL=tedi-design-system-angular-community.mjs.map
|