@danske/sapphire-angular 1.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -0
- package/README.md +25 -0
- package/esm2020/danske-sapphire-angular.mjs +5 -0
- package/esm2020/lib/badge/public_api.mjs +3 -0
- package/esm2020/lib/badge/src/badge.component.mjs +66 -0
- package/esm2020/lib/badge/src/badge.module.mjs +18 -0
- package/esm2020/lib/button/public_api.mjs +12 -0
- package/esm2020/lib/button/src/button-group.component.mjs +57 -0
- package/esm2020/lib/button/src/button-icon.directive.mjs +13 -0
- package/esm2020/lib/button/src/button.component.mjs +100 -0
- package/esm2020/lib/button/src/button.module.mjs +48 -0
- package/esm2020/lib/button/src/icon-button.component.mjs +95 -0
- package/esm2020/lib/button/src/toggle-button-required-validator.mjs +27 -0
- package/esm2020/lib/button/src/toggle-button.component.mjs +124 -0
- package/esm2020/lib/checkbox/public_api.mjs +8 -0
- package/esm2020/lib/checkbox/src/checkbox-required-validator.mjs +26 -0
- package/esm2020/lib/checkbox/src/checkbox.component.mjs +264 -0
- package/esm2020/lib/checkbox/src/checkbox.module.mjs +21 -0
- package/esm2020/lib/common/auto-id.decorator.mjs +24 -0
- package/esm2020/lib/common/coerce-boolean.decorator.mjs +32 -0
- package/esm2020/lib/common/constructor.mjs +2 -0
- package/esm2020/lib/common/disabled.mjs +16 -0
- package/esm2020/lib/common/focused.directive.mjs +64 -0
- package/esm2020/lib/common/placement.mjs +60 -0
- package/esm2020/lib/common/platform.mjs +45 -0
- package/esm2020/lib/common/pressed.directive.mjs +55 -0
- package/esm2020/lib/common/public_api.mjs +4 -0
- package/esm2020/lib/common/sapphire-view-encapsulation.mjs +83 -0
- package/esm2020/lib/common/scroll-monitor.directive.mjs +63 -0
- package/esm2020/lib/common/tabindex.mjs +19 -0
- package/esm2020/lib/common/visually-hidden.directive.mjs +32 -0
- package/esm2020/lib/contextual-help/public_api.mjs +3 -0
- package/esm2020/lib/contextual-help/src/contextual-help.component.mjs +112 -0
- package/esm2020/lib/contextual-help/src/contextual-help.module.mjs +33 -0
- package/esm2020/lib/core.module.mjs +179 -0
- package/esm2020/lib/field/public_api.mjs +8 -0
- package/esm2020/lib/field/src/field-control.mjs +17 -0
- package/esm2020/lib/field/src/field-error.directive.mjs +20 -0
- package/esm2020/lib/field/src/field-label.directive.mjs +17 -0
- package/esm2020/lib/field/src/field-note-suffix.directive.mjs +28 -0
- package/esm2020/lib/field/src/field-note.directive.mjs +17 -0
- package/esm2020/lib/field/src/field.component.mjs +153 -0
- package/esm2020/lib/field/src/field.module.mjs +49 -0
- package/esm2020/lib/icon/public_api.mjs +4 -0
- package/esm2020/lib/icon/src/icon-size-provider.mjs +18 -0
- package/esm2020/lib/icon/src/icon.component.mjs +67 -0
- package/esm2020/lib/icon/src/icon.module.mjs +18 -0
- package/esm2020/lib/label/public_api.mjs +6 -0
- package/esm2020/lib/label/src/label.component.mjs +61 -0
- package/esm2020/lib/link/public_api.mjs +7 -0
- package/esm2020/lib/link/src/link.component.mjs +62 -0
- package/esm2020/lib/link/src/link.module.mjs +16 -0
- package/esm2020/lib/listbox/public_api.mjs +10 -0
- package/esm2020/lib/listbox/src/cdk-option-scroll-issue-patch.mjs +30 -0
- package/esm2020/lib/listbox/src/listbox-child.mjs +7 -0
- package/esm2020/lib/listbox/src/listbox-input.directive.mjs +42 -0
- package/esm2020/lib/listbox/src/listbox-item.component.mjs +49 -0
- package/esm2020/lib/listbox/src/listbox.component.mjs +273 -0
- package/esm2020/lib/listbox/src/listbox.module.mjs +81 -0
- package/esm2020/lib/listbox/src/option-icon.directive.mjs +22 -0
- package/esm2020/lib/listbox/src/option-primary-text.directive.mjs +25 -0
- package/esm2020/lib/listbox/src/option-secondary-text.directive.mjs +22 -0
- package/esm2020/lib/listbox/src/option.component.mjs +58 -0
- package/esm2020/lib/listbox/src/section.directive.mjs +46 -0
- package/esm2020/lib/menu/public_api.mjs +10 -0
- package/esm2020/lib/menu/src/menu-item.component.mjs +45 -0
- package/esm2020/lib/menu/src/menu-section.component.mjs +27 -0
- package/esm2020/lib/menu/src/menu-trigger.directive.mjs +149 -0
- package/esm2020/lib/menu/src/menu.component.mjs +33 -0
- package/esm2020/lib/menu/src/menu.module.mjs +39 -0
- package/esm2020/lib/modal/public_api.mjs +19 -0
- package/esm2020/lib/modal/src/dialog/confirmation-dialog.component.mjs +61 -0
- package/esm2020/lib/modal/src/dialog/danger-dialog.component.mjs +62 -0
- package/esm2020/lib/modal/src/dialog/dialog-close-button.directive.mjs +18 -0
- package/esm2020/lib/modal/src/dialog/dialog-content.directive.mjs +29 -0
- package/esm2020/lib/modal/src/dialog/dialog-footer.component.mjs +43 -0
- package/esm2020/lib/modal/src/dialog/dialog-header.component.mjs +65 -0
- package/esm2020/lib/modal/src/dialog/dialog-trigger.directive.mjs +37 -0
- package/esm2020/lib/modal/src/dialog/dialog.component.mjs +60 -0
- package/esm2020/lib/modal/src/modal-base.component.mjs +89 -0
- package/esm2020/lib/modal/src/modal-close-button.directive.mjs +28 -0
- package/esm2020/lib/modal/src/modal-trigger.directive.mjs +42 -0
- package/esm2020/lib/modal/src/modal.module.mjs +143 -0
- package/esm2020/lib/modal/src/modal.service.mjs +58 -0
- package/esm2020/lib/modal/src/panel/inline-panel.component.mjs +15 -0
- package/esm2020/lib/modal/src/panel/panel-back-button.directive.mjs +13 -0
- package/esm2020/lib/modal/src/panel/panel-close-button.directive.mjs +16 -0
- package/esm2020/lib/modal/src/panel/panel-content.component.mjs +38 -0
- package/esm2020/lib/modal/src/panel/panel-footer.component.mjs +38 -0
- package/esm2020/lib/modal/src/panel/panel-header.component.mjs +68 -0
- package/esm2020/lib/modal/src/panel/panel-trigger.directive.mjs +37 -0
- package/esm2020/lib/modal/src/panel/panel.component.mjs +37 -0
- package/esm2020/lib/notification-badge/public_api.mjs +3 -0
- package/esm2020/lib/notification-badge/src/notification-badge.component.mjs +28 -0
- package/esm2020/lib/notification-badge/src/notification-badge.module.mjs +18 -0
- package/esm2020/lib/pagination/public_api.mjs +3 -0
- package/esm2020/lib/pagination/src/pagination.component.mjs +85 -0
- package/esm2020/lib/pagination/src/pagination.module.mjs +36 -0
- package/esm2020/lib/popover/public_api.mjs +10 -0
- package/esm2020/lib/popover/src/popover-close-button.directive.mjs +32 -0
- package/esm2020/lib/popover/src/popover-title.directive.mjs +24 -0
- package/esm2020/lib/popover/src/popover-trigger.directive.mjs +301 -0
- package/esm2020/lib/popover/src/popover.component.mjs +88 -0
- package/esm2020/lib/popover/src/popover.module.mjs +38 -0
- package/esm2020/lib/radio/public_api.mjs +8 -0
- package/esm2020/lib/radio/src/radio-group.component.mjs +195 -0
- package/esm2020/lib/radio/src/radio.component.mjs +279 -0
- package/esm2020/lib/radio/src/radio.module.mjs +22 -0
- package/esm2020/lib/segmented-tabs/public_api.mjs +6 -0
- package/esm2020/lib/segmented-tabs/src/segmented-tab-content.directive.mjs +15 -0
- package/esm2020/lib/segmented-tabs/src/segmented-tab-label.directive.mjs +20 -0
- package/esm2020/lib/segmented-tabs/src/segmented-tab.component.mjs +69 -0
- package/esm2020/lib/segmented-tabs/src/segmented-tabs.component.mjs +215 -0
- package/esm2020/lib/segmented-tabs/src/segmented-tabs.module.mjs +39 -0
- package/esm2020/lib/select/public_api.mjs +10 -0
- package/esm2020/lib/select/src/basic-select/basic-select.component.mjs +127 -0
- package/esm2020/lib/select/src/common/hidden-select.component.mjs +33 -0
- package/esm2020/lib/select/src/common/select-component-base.mjs +267 -0
- package/esm2020/lib/select/src/common/select-value-holder.mjs +86 -0
- package/esm2020/lib/select/src/select/searchable-select.directive.mjs +90 -0
- package/esm2020/lib/select/src/select/select.component.mjs +351 -0
- package/esm2020/lib/select/src/select/select.module.mjs +113 -0
- package/esm2020/lib/select/src/select/selection-text.directive.mjs +19 -0
- package/esm2020/lib/skeleton/public_api.mjs +6 -0
- package/esm2020/lib/skeleton/src/skeleton-block.directive.mjs +16 -0
- package/esm2020/lib/skeleton/src/skeleton-circle.directive.mjs +16 -0
- package/esm2020/lib/skeleton/src/skeleton-text.directive.mjs +43 -0
- package/esm2020/lib/skeleton/src/skeleton.component.mjs +29 -0
- package/esm2020/lib/skeleton/src/skeleton.module.mjs +37 -0
- package/esm2020/lib/skeleton/src/util.mjs +2 -0
- package/esm2020/lib/surface/public_api.mjs +7 -0
- package/esm2020/lib/surface/src/surface.component.mjs +25 -0
- package/esm2020/lib/surface/src/surface.module.mjs +16 -0
- package/esm2020/lib/switch/public_api.mjs +4 -0
- package/esm2020/lib/switch/src/switch-required-validator.mjs +27 -0
- package/esm2020/lib/switch/src/switch.component.mjs +216 -0
- package/esm2020/lib/switch/src/switch.module.mjs +19 -0
- package/esm2020/lib/table/public_api.mjs +15 -0
- package/esm2020/lib/table/src/table-body.directive.mjs +20 -0
- package/esm2020/lib/table/src/table-cell.directive.mjs +87 -0
- package/esm2020/lib/table/src/table-head-cell.component.mjs +57 -0
- package/esm2020/lib/table/src/table-head.directive.mjs +32 -0
- package/esm2020/lib/table/src/table-row.directive.mjs +48 -0
- package/esm2020/lib/table/src/table-sort-header.directive.mjs +44 -0
- package/esm2020/lib/table/src/table-sort.directive.mjs +26 -0
- package/esm2020/lib/table/src/table.component.mjs +82 -0
- package/esm2020/lib/table/src/table.directive.mjs +20 -0
- package/esm2020/lib/table/src/table.module.mjs +74 -0
- package/esm2020/lib/text-field/public_api.mjs +12 -0
- package/esm2020/lib/text-field/src/text-field-affix.directive.mjs +26 -0
- package/esm2020/lib/text-field/src/text-field-input.directive.mjs +51 -0
- package/esm2020/lib/text-field/src/text-field-postfix.directive.mjs +13 -0
- package/esm2020/lib/text-field/src/text-field-prefix.directive.mjs +13 -0
- package/esm2020/lib/text-field/src/text-field-textarea-autosize.directive.mjs +73 -0
- package/esm2020/lib/text-field/src/text-field.component.mjs +78 -0
- package/esm2020/lib/text-field/src/text-field.module.mjs +67 -0
- package/esm2020/lib/theme/public_api.mjs +34 -0
- package/esm2020/lib/theme/src/sapphire-overlay-container.service.mjs +38 -0
- package/esm2020/lib/theme/src/theme-base.directive.mjs +87 -0
- package/esm2020/lib/theme/src/theme-check.directive.mjs +29 -0
- package/esm2020/lib/theme/src/theme-root.directive.mjs +23 -0
- package/esm2020/lib/theme/src/theme.module.mjs +32 -0
- package/esm2020/lib/theme/src/themes.mjs +27 -0
- package/esm2020/lib/theme/src/top-level-theme-ref.service.mjs +21 -0
- package/esm2020/lib/tooltip/public_api.mjs +5 -0
- package/esm2020/lib/tooltip/src/tooltip.component.mjs +47 -0
- package/esm2020/lib/tooltip/src/tooltip.directive.mjs +223 -0
- package/esm2020/lib/tooltip/src/tooltip.module.mjs +30 -0
- package/esm2020/lib/tooltip/src/truncated-with-tooltip.directive.mjs +56 -0
- package/esm2020/lib/typography/public_api.mjs +8 -0
- package/esm2020/lib/typography/src/heading.component.mjs +44 -0
- package/esm2020/lib/typography/src/paragraph.component.mjs +24 -0
- package/esm2020/lib/typography/src/typography.module.mjs +19 -0
- package/esm2020/public-api.mjs +30 -0
- package/fesm2015/danske-sapphire-angular.mjs +8010 -0
- package/fesm2015/danske-sapphire-angular.mjs.map +1 -0
- package/fesm2020/danske-sapphire-angular.mjs +7890 -0
- package/fesm2020/danske-sapphire-angular.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/badge/public_api.d.ts +2 -0
- package/lib/badge/src/badge.component.d.ts +35 -0
- package/lib/badge/src/badge.module.d.ts +8 -0
- package/lib/button/public_api.d.ts +7 -0
- package/lib/button/src/button-group.component.d.ts +26 -0
- package/lib/button/src/button-icon.directive.d.ts +5 -0
- package/lib/button/src/button.component.d.ts +31 -0
- package/lib/button/src/button.module.d.ts +14 -0
- package/lib/button/src/icon-button.component.d.ts +26 -0
- package/lib/button/src/toggle-button-required-validator.d.ts +10 -0
- package/lib/button/src/toggle-button.component.d.ts +39 -0
- package/lib/checkbox/public_api.d.ts +3 -0
- package/lib/checkbox/src/checkbox-required-validator.d.ts +10 -0
- package/lib/checkbox/src/checkbox.component.d.ts +112 -0
- package/lib/checkbox/src/checkbox.module.d.ts +11 -0
- package/lib/common/auto-id.decorator.d.ts +7 -0
- package/lib/common/coerce-boolean.decorator.d.ts +7 -0
- package/lib/common/constructor.d.ts +2 -0
- package/lib/common/disabled.d.ts +9 -0
- package/lib/common/focused.directive.d.ts +30 -0
- package/lib/common/placement.d.ts +11 -0
- package/lib/common/platform.d.ts +9 -0
- package/lib/common/pressed.directive.d.ts +27 -0
- package/lib/common/public_api.d.ts +2 -0
- package/lib/common/sapphire-view-encapsulation.d.ts +37 -0
- package/lib/common/scroll-monitor.directive.d.ts +23 -0
- package/lib/common/tabindex.d.ts +12 -0
- package/lib/common/visually-hidden.directive.d.ts +11 -0
- package/lib/contextual-help/public_api.d.ts +2 -0
- package/lib/contextual-help/src/contextual-help.component.d.ts +50 -0
- package/lib/contextual-help/src/contextual-help.module.d.ts +7 -0
- package/lib/core.module.d.ts +30 -0
- package/lib/field/public_api.d.ts +7 -0
- package/lib/field/src/field-control.d.ts +16 -0
- package/lib/field/src/field-error.directive.d.ts +8 -0
- package/lib/field/src/field-label.directive.d.ts +8 -0
- package/lib/field/src/field-note-suffix.directive.d.ts +15 -0
- package/lib/field/src/field-note.directive.d.ts +8 -0
- package/lib/field/src/field.component.d.ts +77 -0
- package/lib/field/src/field.module.d.ts +14 -0
- package/lib/icon/public_api.d.ts +3 -0
- package/lib/icon/src/icon-size-provider.d.ts +23 -0
- package/lib/icon/src/icon.component.d.ts +18 -0
- package/lib/icon/src/icon.module.d.ts +8 -0
- package/lib/label/public_api.d.ts +5 -0
- package/lib/label/src/label.component.d.ts +43 -0
- package/lib/link/public_api.d.ts +2 -0
- package/lib/link/src/link.component.d.ts +13 -0
- package/lib/link/src/link.module.d.ts +7 -0
- package/lib/listbox/public_api.d.ts +9 -0
- package/lib/listbox/src/cdk-option-scroll-issue-patch.d.ts +17 -0
- package/lib/listbox/src/listbox-child.d.ts +6 -0
- package/lib/listbox/src/listbox-input.directive.d.ts +16 -0
- package/lib/listbox/src/listbox-item.component.d.ts +21 -0
- package/lib/listbox/src/listbox.component.d.ts +127 -0
- package/lib/listbox/src/listbox.module.d.ts +22 -0
- package/lib/listbox/src/option-icon.directive.d.ts +10 -0
- package/lib/listbox/src/option-primary-text.directive.d.ts +14 -0
- package/lib/listbox/src/option-secondary-text.directive.d.ts +10 -0
- package/lib/listbox/src/option.component.d.ts +21 -0
- package/lib/listbox/src/section.directive.d.ts +14 -0
- package/lib/menu/public_api.d.ts +5 -0
- package/lib/menu/src/menu-item.component.d.ts +12 -0
- package/lib/menu/src/menu-section.component.d.ts +12 -0
- package/lib/menu/src/menu-trigger.directive.d.ts +34 -0
- package/lib/menu/src/menu.component.d.ts +10 -0
- package/lib/menu/src/menu.module.d.ts +13 -0
- package/lib/modal/public_api.d.ts +18 -0
- package/lib/modal/src/dialog/confirmation-dialog.component.d.ts +43 -0
- package/lib/modal/src/dialog/danger-dialog.component.d.ts +44 -0
- package/lib/modal/src/dialog/dialog-close-button.directive.d.ts +7 -0
- package/lib/modal/src/dialog/dialog-content.directive.d.ts +13 -0
- package/lib/modal/src/dialog/dialog-footer.component.d.ts +20 -0
- package/lib/modal/src/dialog/dialog-header.component.d.ts +25 -0
- package/lib/modal/src/dialog/dialog-trigger.directive.d.ts +13 -0
- package/lib/modal/src/dialog/dialog.component.d.ts +33 -0
- package/lib/modal/src/modal-base.component.d.ts +33 -0
- package/lib/modal/src/modal-close-button.directive.d.ts +9 -0
- package/lib/modal/src/modal-trigger.directive.d.ts +24 -0
- package/lib/modal/src/modal.module.d.ts +30 -0
- package/lib/modal/src/modal.service.d.ts +26 -0
- package/lib/modal/src/panel/inline-panel.component.d.ts +6 -0
- package/lib/modal/src/panel/panel-back-button.directive.d.ts +5 -0
- package/lib/modal/src/panel/panel-close-button.directive.d.ts +6 -0
- package/lib/modal/src/panel/panel-content.component.d.ts +14 -0
- package/lib/modal/src/panel/panel-footer.component.d.ts +21 -0
- package/lib/modal/src/panel/panel-header.component.d.ts +26 -0
- package/lib/modal/src/panel/panel-trigger.directive.d.ts +13 -0
- package/lib/modal/src/panel/panel.component.d.ts +18 -0
- package/lib/notification-badge/public_api.d.ts +2 -0
- package/lib/notification-badge/src/notification-badge.component.d.ts +10 -0
- package/lib/notification-badge/src/notification-badge.module.d.ts +8 -0
- package/lib/pagination/public_api.d.ts +2 -0
- package/lib/pagination/src/pagination.component.d.ts +32 -0
- package/lib/pagination/src/pagination.module.d.ts +12 -0
- package/lib/popover/public_api.d.ts +5 -0
- package/lib/popover/src/popover-close-button.directive.d.ts +13 -0
- package/lib/popover/src/popover-title.directive.d.ts +11 -0
- package/lib/popover/src/popover-trigger.directive.d.ts +86 -0
- package/lib/popover/src/popover.component.d.ts +32 -0
- package/lib/popover/src/popover.module.d.ts +12 -0
- package/lib/radio/public_api.d.ts +3 -0
- package/lib/radio/src/radio-group.component.d.ts +65 -0
- package/lib/radio/src/radio.component.d.ts +99 -0
- package/lib/radio/src/radio.module.d.ts +12 -0
- package/lib/segmented-tabs/public_api.d.ts +5 -0
- package/lib/segmented-tabs/src/segmented-tab-content.directive.d.ts +6 -0
- package/lib/segmented-tabs/src/segmented-tab-label.directive.d.ts +6 -0
- package/lib/segmented-tabs/src/segmented-tab.component.d.ts +27 -0
- package/lib/segmented-tabs/src/segmented-tabs.component.d.ts +48 -0
- package/lib/segmented-tabs/src/segmented-tabs.module.d.ts +13 -0
- package/lib/select/public_api.d.ts +5 -0
- package/lib/select/src/basic-select/basic-select.component.d.ts +50 -0
- package/lib/select/src/common/hidden-select.component.d.ts +19 -0
- package/lib/select/src/common/select-component-base.d.ts +109 -0
- package/lib/select/src/common/select-value-holder.d.ts +54 -0
- package/lib/select/src/select/searchable-select.directive.d.ts +40 -0
- package/lib/select/src/select/select.component.d.ts +80 -0
- package/lib/select/src/select/select.module.d.ts +26 -0
- package/lib/select/src/select/selection-text.directive.d.ts +11 -0
- package/lib/skeleton/public_api.d.ts +5 -0
- package/lib/skeleton/src/skeleton-block.directive.d.ts +5 -0
- package/lib/skeleton/src/skeleton-circle.directive.d.ts +5 -0
- package/lib/skeleton/src/skeleton-text.directive.d.ts +13 -0
- package/lib/skeleton/src/skeleton.component.d.ts +13 -0
- package/lib/skeleton/src/skeleton.module.d.ts +11 -0
- package/lib/skeleton/src/util.d.ts +1 -0
- package/lib/surface/public_api.d.ts +2 -0
- package/lib/surface/src/surface.component.d.ts +11 -0
- package/lib/surface/src/surface.module.d.ts +7 -0
- package/lib/switch/public_api.d.ts +3 -0
- package/lib/switch/src/switch-required-validator.d.ts +10 -0
- package/lib/switch/src/switch.component.d.ts +91 -0
- package/lib/switch/src/switch.module.d.ts +9 -0
- package/lib/table/public_api.d.ts +10 -0
- package/lib/table/src/table-body.directive.d.ts +7 -0
- package/lib/table/src/table-cell.directive.d.ts +30 -0
- package/lib/table/src/table-head-cell.component.d.ts +19 -0
- package/lib/table/src/table-head.directive.d.ts +10 -0
- package/lib/table/src/table-row.directive.d.ts +16 -0
- package/lib/table/src/table-sort-header.directive.d.ts +11 -0
- package/lib/table/src/table-sort.directive.d.ts +13 -0
- package/lib/table/src/table.component.d.ts +37 -0
- package/lib/table/src/table.directive.d.ts +7 -0
- package/lib/table/src/table.module.d.ts +19 -0
- package/lib/text-field/public_api.d.ts +7 -0
- package/lib/text-field/src/text-field-affix.directive.d.ts +10 -0
- package/lib/text-field/src/text-field-input.directive.d.ts +16 -0
- package/lib/text-field/src/text-field-postfix.directive.d.ts +5 -0
- package/lib/text-field/src/text-field-prefix.directive.d.ts +5 -0
- package/lib/text-field/src/text-field-textarea-autosize.directive.d.ts +20 -0
- package/lib/text-field/src/text-field.component.d.ts +23 -0
- package/lib/text-field/src/text-field.module.d.ts +17 -0
- package/lib/theme/public_api.d.ts +24 -0
- package/lib/theme/src/sapphire-overlay-container.service.d.ts +14 -0
- package/lib/theme/src/theme-base.directive.d.ts +14 -0
- package/lib/theme/src/theme-check.directive.d.ts +14 -0
- package/lib/theme/src/theme-root.directive.d.ts +13 -0
- package/lib/theme/src/theme.module.d.ts +14 -0
- package/lib/theme/src/themes.d.ts +16 -0
- package/lib/theme/src/top-level-theme-ref.service.d.ts +13 -0
- package/lib/tooltip/public_api.d.ts +4 -0
- package/lib/tooltip/src/tooltip.component.d.ts +10 -0
- package/lib/tooltip/src/tooltip.directive.d.ts +39 -0
- package/lib/tooltip/src/tooltip.module.d.ts +11 -0
- package/lib/tooltip/src/truncated-with-tooltip.directive.d.ts +26 -0
- package/lib/typography/public_api.d.ts +3 -0
- package/lib/typography/src/heading.component.d.ts +17 -0
- package/lib/typography/src/paragraph.component.d.ts +8 -0
- package/lib/typography/src/typography.module.d.ts +9 -0
- package/package.json +45 -0
- package/public-api.d.ts +26 -0
- package/src/lib/listbox/src/README.md +67 -0
- package/theme-assets/default-dark.css +1 -0
- package/theme-assets/default.css +1 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Content will be displayed as label within the tab button */
|
|
4
|
+
export class SegmentedTabLabelDirective {
|
|
5
|
+
constructor() { }
|
|
6
|
+
}
|
|
7
|
+
SegmentedTabLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
SegmentedTabLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabLabelDirective, selector: "sp-segmented-tab-label", host: { properties: { "style.display": "\"flex\"", "style.align-items": "\"center\"" } }, ngImport: i0 });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabLabelDirective, decorators: [{
|
|
10
|
+
type: Directive,
|
|
11
|
+
args: [{
|
|
12
|
+
selector: 'sp-segmented-tab-label',
|
|
13
|
+
host: {
|
|
14
|
+
// Angular specific styles that are needed due to extra dom elements added by angular
|
|
15
|
+
'[style.display]': '"flex"',
|
|
16
|
+
'[style.align-items]': '"center"',
|
|
17
|
+
},
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYi1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnRlZC10YWJzL3NyYy9zZWdtZW50ZWQtdGFiLWxhYmVsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVUxQywrREFBK0Q7QUFDL0QsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxnQkFBZSxDQUFDOzt1SEFETCwwQkFBMEI7MkdBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQVR0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLElBQUksRUFBRTt3QkFDSixxRkFBcUY7d0JBQ3JGLGlCQUFpQixFQUFFLFFBQVE7d0JBQzNCLHFCQUFxQixFQUFFLFVBQVU7cUJBQ2xDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NwLXNlZ21lbnRlZC10YWItbGFiZWwnLFxuICBob3N0OiB7XG4gICAgLy8gQW5ndWxhciBzcGVjaWZpYyBzdHlsZXMgdGhhdCBhcmUgbmVlZGVkIGR1ZSB0byBleHRyYSBkb20gZWxlbWVudHMgYWRkZWQgYnkgYW5ndWxhclxuICAgICdbc3R5bGUuZGlzcGxheV0nOiAnXCJmbGV4XCInLFxuICAgICdbc3R5bGUuYWxpZ24taXRlbXNdJzogJ1wiY2VudGVyXCInLFxuICB9LFxufSlcbi8qKiBDb250ZW50IHdpbGwgYmUgZGlzcGxheWVkIGFzIGxhYmVsIHdpdGhpbiB0aGUgdGFiIGJ1dHRvbiAqL1xuZXhwb3J0IGNsYXNzIFNlZ21lbnRlZFRhYkxhYmVsRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, forwardRef, Inject, Input, TemplateRef, ViewChild, } from '@angular/core';
|
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
+
import { AutoId } from '../../common/auto-id.decorator';
|
|
5
|
+
import { SegmentedTabsComponent } from './segmented-tabs.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../common/sapphire-view-encapsulation";
|
|
8
|
+
import * as i2 from "./segmented-tabs.component";
|
|
9
|
+
export class SegmentedTabComponent {
|
|
10
|
+
/** Whether the tab should be disabled */
|
|
11
|
+
get disabled() {
|
|
12
|
+
return Boolean(this.tabs.disabled) || this._disabled;
|
|
13
|
+
}
|
|
14
|
+
set disabled(value) {
|
|
15
|
+
this._disabled = coerceBooleanProperty(value);
|
|
16
|
+
}
|
|
17
|
+
constructor(tabs) {
|
|
18
|
+
this.tabs = tabs;
|
|
19
|
+
this._disabled = false;
|
|
20
|
+
/**
|
|
21
|
+
* auto generated id applied on the tab element
|
|
22
|
+
*/
|
|
23
|
+
this.id = '';
|
|
24
|
+
this._contentTemplate = null;
|
|
25
|
+
}
|
|
26
|
+
select() {
|
|
27
|
+
if (this.disabled)
|
|
28
|
+
return;
|
|
29
|
+
this.tabs.selectTab(this);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether this tab is currently selected
|
|
33
|
+
*/
|
|
34
|
+
isSelected() {
|
|
35
|
+
return this.tabs?.isSelected(this);
|
|
36
|
+
}
|
|
37
|
+
getTabIndex() {
|
|
38
|
+
return this.tabs.getFocusedTab() === this && !this.tabs.disabled
|
|
39
|
+
? '0'
|
|
40
|
+
: '-1';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
SegmentedTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabComponent, deps: [{ token: forwardRef(() => SegmentedTabsComponent) }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
SegmentedTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabComponent, selector: "sp-segmented-tab", inputs: { disabled: "disabled", label: "label" }, host: { properties: { "style.flex": "'1 1 auto'", "style.display": "'inline-flex'" } }, viewQueries: [{ propertyName: "_contentTemplate", first: true, predicate: TemplateRef, descendants: true }, { propertyName: "_button", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<button\n #button\n class=\"sapphire-segmented-control__button\"\n _spUseComponentStyles\n [class.sapphire-segmented-control__button--disabled]=\"disabled\"\n [class.sapphire-segmented-control__button--active]=\"isSelected()\"\n role=\"tab\"\n (click)=\"select()\"\n [id]=\"id\"\n [tabIndex]=\"getTabIndex()\"\n [attr.aria-disabled]=\"disabled\"\n>\n {{ label }}\n <ng-content select=\"sp-segmented-tab-label\"></ng-content>\n</button>\n<ng-template>\n <div\n class=\"sapphire-tab-panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [id]=\"id + '-panel'\"\n [attr.aria-labelledby]=\"id\"\n >\n <ng-content select=\"sp-segmented-tab-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sapphire-tabs-scroll-container{-ms-overflow-style:none;scrollbar-width:none;overflow-x:scroll;overflow-y:hidden;white-space:nowrap;position:relative;scroll-padding:0 calc(2 * var(--sapphire-tabs-size-spacing-arrows-horizontal) + 1px);min-width:0;flex:1;overscroll-behavior-x:contain}.sapphire-tabs-scroll-container::-webkit-scrollbar{display:none}.sapphire-tabs-overflow-arrows{display:flex;align-items:center;min-width:0;flex:1;position:relative}.sapphire-tabs-overflow-arrows--inline{display:inline-flex}.sapphire-tabs-overflow-arrows__arrow{position:absolute;z-index:10;pointer-events:none}.sapphire-tabs-overflow-arrows__arrow--left{left:0;padding-right:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-opaque) 0%,var(--sapphire-tabs-color-gradient-opaque) 40%,var(--sapphire-tabs-color-gradient-transparent) 100%)}.sapphire-tabs-overflow-arrows__arrow--right{right:0;padding-left:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-transparent) 0%,var(--sapphire-tabs-color-gradient-opaque) 60%,var(--sapphire-tabs-color-gradient-opaque) 100%)}.sapphire-tabs{display:inline-flex;box-sizing:border-box;height:var(--sapphire-tabs-size-height-m);gap:var(--sapphire-tabs-size-gap-m);overflow:hidden;position:relative;min-width:100%;flex:1;padding:0 var(--sapphire-tabs-size-focus-ring-offset)}.sapphire-tabs:after{content:\"\";display:block;position:absolute;bottom:0;width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-default);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--no-border:after{display:none}.sapphire-tabs__tab{display:flex;align-items:center;position:relative;font-family:var(--sapphire-tabs-font-name);font-weight:var(--sapphire-tabs-font-weight);font-size:var(--sapphire-tabs-size-font-m);text-decoration:none;background:none;color:var(--sapphire-tabs-color-content-inactive-default);box-sizing:border-box;white-space:nowrap;border-width:0;padding:0;margin:var(--sapphire-tabs-size-focus-ring-offset) 0 var(--sapphire-tabs-size-focus-ring-offset) 0;cursor:pointer;outline:none;border-radius:var(--sapphire-tabs-size-focus-ring-radius);z-index:1}.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active):not(.js-hover):hover,.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active).is-hover{color:var(--sapphire-tabs-color-content-inactive-hover)}.sapphire-tabs__tab.js-focus.is-focus,.sapphire-tabs__tab:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring)}.sapphire-tabs__tab:disabled,.sapphire-tabs__tab.is-disabled{cursor:not-allowed}.sapphire-tabs__tab:disabled .sapphire-tabs__label,.sapphire-tabs__tab.is-disabled .sapphire-tabs__label{opacity:var(--sapphire-tabs-opacity-disabled)}.sapphire-tabs__label{padding:0 1px}.sapphire-tabs__tab--active{color:var(--sapphire-tabs-color-content-active-default)}.sapphire-tabs__tab--active.js-focus:not(.is-focus):after,.sapphire-tabs__tab--active:not(.js-focus):not(:focus-visible):after{content:\"\";display:block;position:absolute;bottom:calc(-1 * var(--sapphire-tabs-size-focus-ring-offset));width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-active);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--small{height:var(--sapphire-tabs-size-height-s);gap:var(--sapphire-tabs-size-gap-s)}.sapphire-tabs--small .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-s)}.sapphire-tabs--large{height:var(--sapphire-tabs-size-height-l);gap:var(--sapphire-tabs-size-gap-l)}.sapphire-tabs--large .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-l)}.sapphire-tab-panel{min-height:0;flex-grow:1}.sapphire-tab-panel.js-focus.is-focus,.sapphire-tab-panel:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring);outline-offset:var(--sapphire-tabs-size-focus-ring-offset)}\n"], dependencies: [{ kind: "directive", type: i1.UseComponentStyles, selector: "[_spUseComponentStyles]" }] });
|
|
45
|
+
__decorate([
|
|
46
|
+
AutoId()
|
|
47
|
+
], SegmentedTabComponent.prototype, "id", void 0);
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'sp-segmented-tab', host: {
|
|
51
|
+
// Angular specific styles that are needed due to extra dom elements added by angular
|
|
52
|
+
'[style.flex]': "'1 1 auto'",
|
|
53
|
+
'[style.display]': "'inline-flex'",
|
|
54
|
+
}, template: "<button\n #button\n class=\"sapphire-segmented-control__button\"\n _spUseComponentStyles\n [class.sapphire-segmented-control__button--disabled]=\"disabled\"\n [class.sapphire-segmented-control__button--active]=\"isSelected()\"\n role=\"tab\"\n (click)=\"select()\"\n [id]=\"id\"\n [tabIndex]=\"getTabIndex()\"\n [attr.aria-disabled]=\"disabled\"\n>\n {{ label }}\n <ng-content select=\"sp-segmented-tab-label\"></ng-content>\n</button>\n<ng-template>\n <div\n class=\"sapphire-tab-panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [id]=\"id + '-panel'\"\n [attr.aria-labelledby]=\"id\"\n >\n <ng-content select=\"sp-segmented-tab-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sapphire-tabs-scroll-container{-ms-overflow-style:none;scrollbar-width:none;overflow-x:scroll;overflow-y:hidden;white-space:nowrap;position:relative;scroll-padding:0 calc(2 * var(--sapphire-tabs-size-spacing-arrows-horizontal) + 1px);min-width:0;flex:1;overscroll-behavior-x:contain}.sapphire-tabs-scroll-container::-webkit-scrollbar{display:none}.sapphire-tabs-overflow-arrows{display:flex;align-items:center;min-width:0;flex:1;position:relative}.sapphire-tabs-overflow-arrows--inline{display:inline-flex}.sapphire-tabs-overflow-arrows__arrow{position:absolute;z-index:10;pointer-events:none}.sapphire-tabs-overflow-arrows__arrow--left{left:0;padding-right:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-opaque) 0%,var(--sapphire-tabs-color-gradient-opaque) 40%,var(--sapphire-tabs-color-gradient-transparent) 100%)}.sapphire-tabs-overflow-arrows__arrow--right{right:0;padding-left:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-transparent) 0%,var(--sapphire-tabs-color-gradient-opaque) 60%,var(--sapphire-tabs-color-gradient-opaque) 100%)}.sapphire-tabs{display:inline-flex;box-sizing:border-box;height:var(--sapphire-tabs-size-height-m);gap:var(--sapphire-tabs-size-gap-m);overflow:hidden;position:relative;min-width:100%;flex:1;padding:0 var(--sapphire-tabs-size-focus-ring-offset)}.sapphire-tabs:after{content:\"\";display:block;position:absolute;bottom:0;width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-default);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--no-border:after{display:none}.sapphire-tabs__tab{display:flex;align-items:center;position:relative;font-family:var(--sapphire-tabs-font-name);font-weight:var(--sapphire-tabs-font-weight);font-size:var(--sapphire-tabs-size-font-m);text-decoration:none;background:none;color:var(--sapphire-tabs-color-content-inactive-default);box-sizing:border-box;white-space:nowrap;border-width:0;padding:0;margin:var(--sapphire-tabs-size-focus-ring-offset) 0 var(--sapphire-tabs-size-focus-ring-offset) 0;cursor:pointer;outline:none;border-radius:var(--sapphire-tabs-size-focus-ring-radius);z-index:1}.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active):not(.js-hover):hover,.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active).is-hover{color:var(--sapphire-tabs-color-content-inactive-hover)}.sapphire-tabs__tab.js-focus.is-focus,.sapphire-tabs__tab:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring)}.sapphire-tabs__tab:disabled,.sapphire-tabs__tab.is-disabled{cursor:not-allowed}.sapphire-tabs__tab:disabled .sapphire-tabs__label,.sapphire-tabs__tab.is-disabled .sapphire-tabs__label{opacity:var(--sapphire-tabs-opacity-disabled)}.sapphire-tabs__label{padding:0 1px}.sapphire-tabs__tab--active{color:var(--sapphire-tabs-color-content-active-default)}.sapphire-tabs__tab--active.js-focus:not(.is-focus):after,.sapphire-tabs__tab--active:not(.js-focus):not(:focus-visible):after{content:\"\";display:block;position:absolute;bottom:calc(-1 * var(--sapphire-tabs-size-focus-ring-offset));width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-active);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--small{height:var(--sapphire-tabs-size-height-s);gap:var(--sapphire-tabs-size-gap-s)}.sapphire-tabs--small .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-s)}.sapphire-tabs--large{height:var(--sapphire-tabs-size-height-l);gap:var(--sapphire-tabs-size-gap-l)}.sapphire-tabs--large .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-l)}.sapphire-tab-panel{min-height:0;flex-grow:1}.sapphire-tab-panel.js-focus.is-focus,.sapphire-tab-panel:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring);outline-offset:var(--sapphire-tabs-size-focus-ring-offset)}\n"] }]
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i2.SegmentedTabsComponent, decorators: [{
|
|
56
|
+
type: Inject,
|
|
57
|
+
args: [forwardRef(() => SegmentedTabsComponent)]
|
|
58
|
+
}] }]; }, propDecorators: { disabled: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], label: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], id: [], _contentTemplate: [{
|
|
63
|
+
type: ViewChild,
|
|
64
|
+
args: [TemplateRef]
|
|
65
|
+
}], _button: [{
|
|
66
|
+
type: ViewChild,
|
|
67
|
+
args: ['button']
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnRlZC10YWJzL3NyYy9zZWdtZW50ZWQtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudGVkLXRhYnMvc3JjL3NlZ21lbnRlZC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBWXBFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMseUNBQXlDO0lBQ3pDLElBQ0ksUUFBUTtRQUNWLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBa0JELFlBRVMsSUFBNEI7UUFBNUIsU0FBSSxHQUFKLElBQUksQ0FBd0I7UUFuQjdCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFLMUI7O1dBRUc7UUFFSCxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBR1IscUJBQWdCLEdBQTRCLElBQUksQ0FBQztJQVE5QyxDQUFDO0lBRUosTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUM5RCxDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDOztrSEEvQ1UscUJBQXFCLGtCQTJCdEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO3NHQTNCdkMscUJBQXFCLG9QQW9CckIsV0FBVyxvSUM1Q3hCLHdzQkEwQkE7QURnQkU7SUFEQyxNQUFNLEVBQUU7aURBQ0Q7MkZBbEJHLHFCQUFxQjtrQkFWakMsU0FBUzsrQkFDRSxrQkFBa0IsUUFHdEI7d0JBQ0oscUZBQXFGO3dCQUNyRixjQUFjLEVBQUUsWUFBWTt3QkFDNUIsaUJBQWlCLEVBQUUsZUFBZTtxQkFDbkM7OzBCQTZCRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0F4QjlDLFFBQVE7c0JBRFgsS0FBSztnQkFVTixLQUFLO3NCQURKLEtBQUs7Z0JBT04sRUFBRSxNQUdGLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLFdBQVc7Z0JBSXRCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgQXV0b0lkIH0gZnJvbSAnLi4vLi4vY29tbW9uL2F1dG8taWQuZGVjb3JhdG9yJztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWJzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLXNlZ21lbnRlZC10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIC8vIEFuZ3VsYXIgc3BlY2lmaWMgc3R5bGVzIHRoYXQgYXJlIG5lZWRlZCBkdWUgdG8gZXh0cmEgZG9tIGVsZW1lbnRzIGFkZGVkIGJ5IGFuZ3VsYXJcbiAgICAnW3N0eWxlLmZsZXhdJzogXCInMSAxIGF1dG8nXCIsXG4gICAgJ1tzdHlsZS5kaXNwbGF5XSc6IFwiJ2lubGluZS1mbGV4J1wiLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50ZWRUYWJDb21wb25lbnQge1xuICAvKiogV2hldGhlciB0aGUgdGFiIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy50YWJzLmRpc2FibGVkKSB8fCB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhdXRvIGdlbmVyYXRlZCBpZCBhcHBsaWVkIG9uIHRoZSB0YWIgZWxlbWVudFxuICAgKi9cbiAgQEF1dG9JZCgpXG4gIGlkID0gJyc7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZilcbiAgX2NvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbicpXG4gIF9idXR0b24/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gU2VnbWVudGVkVGFic0NvbXBvbmVudCkpXG4gICAgcHVibGljIHRhYnM6IFNlZ21lbnRlZFRhYnNDb21wb25lbnRcbiAgKSB7fVxuXG4gIHNlbGVjdCgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMudGFicy5zZWxlY3RUYWIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHRhYiBpcyBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICovXG4gIGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicz8uaXNTZWxlY3RlZCh0aGlzKTtcbiAgfVxuXG4gIGdldFRhYkluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLnRhYnMuZ2V0Rm9jdXNlZFRhYigpID09PSB0aGlzICYmICF0aGlzLnRhYnMuZGlzYWJsZWRcbiAgICAgID8gJzAnXG4gICAgICA6ICctMSc7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgI2J1dHRvblxuICBjbGFzcz1cInNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b25cIlxuICBfc3BVc2VDb21wb25lbnRTdHlsZXNcbiAgW2NsYXNzLnNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b24tLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b24tLWFjdGl2ZV09XCJpc1NlbGVjdGVkKClcIlxuICByb2xlPVwidGFiXCJcbiAgKGNsaWNrKT1cInNlbGVjdCgpXCJcbiAgW2lkXT1cImlkXCJcbiAgW3RhYkluZGV4XT1cImdldFRhYkluZGV4KClcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAge3sgbGFiZWwgfX1cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3Atc2VnbWVudGVkLXRhYi1sYWJlbFwiPjwvbmctY29udGVudD5cbjwvYnV0dG9uPlxuPG5nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzYXBwaGlyZS10YWItcGFuZWxcIlxuICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbaWRdPVwiaWQgKyAnLXBhbmVsJ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNwLXNlZ21lbnRlZC10YWItY29udGVudFwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList, } from '@angular/core';
|
|
3
|
+
import { coerceNumberProperty, } from '@angular/cdk/coercion';
|
|
4
|
+
import { CoerceBoolean } from '../../common/coerce-boolean.decorator';
|
|
5
|
+
import { SegmentedTabComponent } from './segmented-tab.component';
|
|
6
|
+
import { ViewEncapsulationProvider } from '../../common/sapphire-view-encapsulation';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@angular/cdk/a11y";
|
|
10
|
+
export class SegmentedTabsComponent {
|
|
11
|
+
/** Index of the selected tab */
|
|
12
|
+
get selectedIndex() {
|
|
13
|
+
return this._selectedIndex || 0;
|
|
14
|
+
}
|
|
15
|
+
set selectedIndex(value) {
|
|
16
|
+
this._selectedIndex = coerceNumberProperty(value);
|
|
17
|
+
this._focusedIndex = this._selectedIndex;
|
|
18
|
+
}
|
|
19
|
+
constructor(host, zone, changeDetector) {
|
|
20
|
+
this.host = host;
|
|
21
|
+
this.zone = zone;
|
|
22
|
+
this.changeDetector = changeDetector;
|
|
23
|
+
/** Size of tabs */
|
|
24
|
+
this.size = 'medium';
|
|
25
|
+
/** Whether tabs are activated automatically on focus or manually. */
|
|
26
|
+
this.keyboardActivation = 'automatic';
|
|
27
|
+
this._focusedIndex = 0;
|
|
28
|
+
this.selectedIndexChange = new EventEmitter();
|
|
29
|
+
this.tabs = new QueryList();
|
|
30
|
+
this._tabIds = [];
|
|
31
|
+
this._activeTabPosition = { left: '0px', width: '0px' };
|
|
32
|
+
this._animationEnabled = false;
|
|
33
|
+
this._focusVisible = false;
|
|
34
|
+
this.skipAnimationFrame();
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
38
|
+
// zonejs doesn't monkey-patch resize observer (yet)
|
|
39
|
+
this.zone.run(() => {
|
|
40
|
+
this.setActiveTabPosition();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
this.resizeObserver.observe(this.host.nativeElement);
|
|
44
|
+
this.selectedIndexChange.subscribe(() => {
|
|
45
|
+
this.setActiveTabPosition();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
ngAfterContentInit() {
|
|
49
|
+
this._tabIds = this.tabs.map((tab) => tab.id);
|
|
50
|
+
this.tabs.changes.subscribe(() => {
|
|
51
|
+
this.onTabsChange();
|
|
52
|
+
});
|
|
53
|
+
if (this._selectedIndex === undefined) {
|
|
54
|
+
this.selectedIndex = this.findFocusableIndex(0, 'right') || 0;
|
|
55
|
+
this.selectedIndexChange.emit(this.selectedIndex);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
ngAfterViewInit() {
|
|
59
|
+
// The value of "_getTabContentTemplate", which is bound in the
|
|
60
|
+
// template, changes after the view has been checked. This
|
|
61
|
+
// "detectChanges()" avoids the "NG0100: Expression has
|
|
62
|
+
// changed after it was checked" angular error.
|
|
63
|
+
//
|
|
64
|
+
// https://angular.io/errors/NG0100
|
|
65
|
+
this.setActiveTabPosition();
|
|
66
|
+
this.changeDetector.detectChanges();
|
|
67
|
+
}
|
|
68
|
+
ngOnDestroy() {
|
|
69
|
+
this.resizeObserver?.unobserve(this.host.nativeElement);
|
|
70
|
+
this.selectedIndexChange.unsubscribe();
|
|
71
|
+
}
|
|
72
|
+
getFocusedTab() {
|
|
73
|
+
return this.tabs.toArray()[this._focusedIndex];
|
|
74
|
+
}
|
|
75
|
+
selectTab(selectedTab) {
|
|
76
|
+
this.selectedIndex = this.tabs
|
|
77
|
+
.toArray()
|
|
78
|
+
.findIndex((tab) => tab === selectedTab);
|
|
79
|
+
this.selectedIndexChange.emit(this.selectedIndex);
|
|
80
|
+
}
|
|
81
|
+
isSelected(tab) {
|
|
82
|
+
return this.tabs?.toArray().indexOf(tab) === this.selectedIndex;
|
|
83
|
+
}
|
|
84
|
+
_getTabContentTemplate() {
|
|
85
|
+
return this.tabs.toArray()[this.selectedIndex]?._contentTemplate || null;
|
|
86
|
+
}
|
|
87
|
+
_onFocusChange(origin) {
|
|
88
|
+
this._focusVisible = origin === 'keyboard';
|
|
89
|
+
if (!origin) {
|
|
90
|
+
this._focusedIndex = this.selectedIndex;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_onKeyDown(event) {
|
|
94
|
+
const focusNextValidTab = (targetIndex, direction) => {
|
|
95
|
+
if (this.tabs.toArray().every((tab) => tab.disabled))
|
|
96
|
+
return;
|
|
97
|
+
const index = this.findFocusableIndex(targetIndex, direction);
|
|
98
|
+
if (index === null)
|
|
99
|
+
return;
|
|
100
|
+
const button = this.tabs.toArray()[index]._button?.nativeElement;
|
|
101
|
+
if (!button)
|
|
102
|
+
return;
|
|
103
|
+
button.focus();
|
|
104
|
+
if (this.keyboardActivation === 'automatic') {
|
|
105
|
+
this.selectedIndex = index;
|
|
106
|
+
this.selectedIndexChange.emit(this.selectedIndex);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this._focusedIndex = index;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
switch (event.key) {
|
|
113
|
+
case 'ArrowLeft': {
|
|
114
|
+
event.stopPropagation();
|
|
115
|
+
focusNextValidTab(this._focusedIndex - 1, 'left');
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case 'ArrowRight': {
|
|
119
|
+
event.stopPropagation();
|
|
120
|
+
focusNextValidTab(this._focusedIndex + 1, 'right');
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case 'Home': {
|
|
124
|
+
event.stopPropagation();
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
focusNextValidTab(0, 'right');
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'End': {
|
|
130
|
+
event.stopPropagation();
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
focusNextValidTab(this.tabs.length - 1, 'left');
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
default:
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
setActiveTabPosition() {
|
|
140
|
+
const tab = this.tabs.toArray()[this.selectedIndex]?._button?.nativeElement;
|
|
141
|
+
this._activeTabPosition = {
|
|
142
|
+
left: `${tab?.offsetLeft || 0}px`,
|
|
143
|
+
width: `${tab?.clientWidth || 0}px`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
onTabsChange() {
|
|
147
|
+
// Ensure the current tab doesn't change if tabs change
|
|
148
|
+
// and tab with currently selected id still exists
|
|
149
|
+
const previousTabId = this._tabIds[this.selectedIndex];
|
|
150
|
+
this._tabIds = this.tabs.map((tab) => tab.id);
|
|
151
|
+
if (this._tabIds.includes(previousTabId)) {
|
|
152
|
+
this.selectedIndex = this._tabIds.findIndex((tabId) => tabId === previousTabId);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
const maxIndex = this.tabs.length - 1;
|
|
156
|
+
if (this.selectedIndex > maxIndex) {
|
|
157
|
+
this.selectedIndex = maxIndex;
|
|
158
|
+
this.selectedIndexChange.emit(this.selectedIndex);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
this.skipAnimationFrame();
|
|
162
|
+
}
|
|
163
|
+
skipAnimationFrame() {
|
|
164
|
+
// We want to avoid animation on first render and whenever tab content changes
|
|
165
|
+
this._animationEnabled = false;
|
|
166
|
+
requestAnimationFrame(() => {
|
|
167
|
+
this._animationEnabled = true;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
findFocusableIndex(index, direction) {
|
|
171
|
+
if (this.tabs.toArray().every((tab) => tab.disabled))
|
|
172
|
+
return null;
|
|
173
|
+
const constrainIndex = (index) => {
|
|
174
|
+
if (index >= this.tabs.length) {
|
|
175
|
+
return 0;
|
|
176
|
+
}
|
|
177
|
+
else if (index < 0) {
|
|
178
|
+
return this.tabs.length - 1;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return index;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const constrainedIndex = constrainIndex(index);
|
|
185
|
+
if (this.tabs.toArray()[constrainedIndex].disabled) {
|
|
186
|
+
return this.findFocusableIndex(constrainedIndex + (direction === 'left' ? -1 : 1), direction);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
return constrainedIndex;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
SegmentedTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
+
SegmentedTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabsComponent, selector: "sp-segmented-tabs", inputs: { size: "size", keyboardActivation: "keyboardActivation", disabled: "disabled", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, providers: [ViewEncapsulationProvider], queries: [{ propertyName: "tabs", predicate: i0.forwardRef(function () { return SegmentedTabComponent; }) }], exportAs: ["spSegmentedTabs"], ngImport: i0, template: "<div\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }] });
|
|
195
|
+
__decorate([
|
|
196
|
+
CoerceBoolean
|
|
197
|
+
], SegmentedTabsComponent.prototype, "disabled", void 0);
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, decorators: [{
|
|
199
|
+
type: Component,
|
|
200
|
+
args: [{ selector: 'sp-segmented-tabs', providers: [ViewEncapsulationProvider], exportAs: 'spSegmentedTabs', template: "<div\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"] }]
|
|
201
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], keyboardActivation: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], disabled: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], selectedIndex: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], selectedIndexChange: [{
|
|
210
|
+
type: Output
|
|
211
|
+
}], tabs: [{
|
|
212
|
+
type: ContentChildren,
|
|
213
|
+
args: [forwardRef(() => SegmentedTabComponent)]
|
|
214
|
+
}] } });
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG9CQUFvQixHQUVyQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQVNyRixNQUFNLE9BQU8sc0JBQXNCO0lBZ0JqQyxnQ0FBZ0M7SUFDaEMsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsS0FBa0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDM0MsQ0FBQztJQWdCRCxZQUNVLElBQWdCLEVBQ2hCLElBQVksRUFDWixjQUFpQztRQUZqQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUF4QzNDLG1CQUFt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UGxDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUMseUJBQXlCLENBQUMsWUFDNUIsaUJBQWlCO3NKQU8zQixJQUFJO3NCQURILEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU1OLFFBQVE7c0JBRlAsS0FBSztnQkFNRixhQUFhO3NCQURoQixLQUFLO2dCQVdhLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFJRSxJQUFJO3NCQURaLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCb29sZWFuSW5wdXQsXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxuICBOdW1iZXJJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdFbmNhcHN1bGF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9jb21tb24vc2FwcGhpcmUtdmlldy1lbmNhcHN1bGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Atc2VnbWVudGVkLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWdtZW50ZWQtdGFicy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyXSxcbiAgZXhwb3J0QXM6ICdzcFNlZ21lbnRlZFRhYnMnLFxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50ZWRUYWJzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqIFNpemUgb2YgdGFicyAqL1xuICBASW5wdXQoKVxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cbiAgLyoqIFdoZXRoZXIgdGFicyBhcmUgYWN0aXZhdGVkIGF1dG9tYXRpY2FsbHkgb24gZm9jdXMgb3IgbWFudWFsbHkuICovXG4gIEBJbnB1dCgpXG4gIGtleWJvYXJkQWN0aXZhdGlvbj86ICdtYW51YWwnIHwgJ2F1dG9tYXRpYycgPSAnYXV0b21hdGljJztcblxuICAvKiogV2hldGhlciB0aGUgZW50aXJlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcblxuICAvKiogSW5kZXggb2YgdGhlIHNlbGVjdGVkIHRhYiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4IHx8IDA7XG4gIH1cbiAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICB9XG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXg/OiBudW1iZXI7XG4gIHByaXZhdGUgX2ZvY3VzZWRJbmRleDogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBTZWdtZW50ZWRUYWJDb21wb25lbnQpKVxuICByZWFkb25seSB0YWJzOiBRdWVyeUxpc3Q8U2VnbWVudGVkVGFiQ29tcG9uZW50PiA9IG5ldyBRdWVyeUxpc3QoKTtcbiAgcHJpdmF0ZSBfdGFiSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgdW5kZWZpbmVkO1xuICBfYWN0aXZlVGFiUG9zaXRpb24gPSB7IGxlZnQ6ICcwcHgnLCB3aWR0aDogJzBweCcgfTtcbiAgX2FuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgX2ZvY3VzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyB6b25lanMgZG9lc24ndCBtb25rZXktcGF0Y2ggcmVzaXplIG9ic2VydmVyICh5ZXQpXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICB0aGlzLnRhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblRhYnNDaGFuZ2UoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRGb2N1c2FibGVJbmRleCgwLCAncmlnaHQnKSB8fCAwO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gVGhlIHZhbHVlIG9mIFwiX2dldFRhYkNvbnRlbnRUZW1wbGF0ZVwiLCB3aGljaCBpcyBib3VuZCBpbiB0aGVcbiAgICAvLyB0ZW1wbGF0ZSwgY2hhbmdlcyBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBjaGVja2VkLiBUaGlzXG4gICAgLy8gXCJkZXRlY3RDaGFuZ2VzKClcIiBhdm9pZHMgdGhlIFwiTkcwMTAwOiBFeHByZXNzaW9uIGhhc1xuICAgIC8vIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWRcIiBhbmd1bGFyIGVycm9yLlxuICAgIC8vXG4gICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzAxMDBcbiAgICB0aGlzLnNldEFjdGl2ZVRhYlBvc2l0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0Rm9jdXNlZFRhYigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKVt0aGlzLl9mb2N1c2VkSW5kZXhdO1xuICB9XG5cbiAgc2VsZWN0VGFiKHNlbGVjdGVkVGFiOiBTZWdtZW50ZWRUYWJDb21wb25lbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnRhYnNcbiAgICAgIC50b0FycmF5KClcbiAgICAgIC5maW5kSW5kZXgoKHRhYikgPT4gdGFiID09PSBzZWxlY3RlZFRhYik7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQodGFiOiBTZWdtZW50ZWRUYWJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJzPy50b0FycmF5KCkuaW5kZXhPZih0YWIpID09PSB0aGlzLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBfZ2V0VGFiQ29udGVudFRlbXBsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0/Ll9jb250ZW50VGVtcGxhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIF9vbkZvY3VzQ2hhbmdlKG9yaWdpbjogRm9jdXNPcmlnaW4pIHtcbiAgICB0aGlzLl9mb2N1c1Zpc2libGUgPSBvcmlnaW4gPT09ICdrZXlib2FyZCc7XG4gICAgaWYgKCFvcmlnaW4pIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICB9XG4gIH1cblxuICBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgZm9jdXNOZXh0VmFsaWRUYWIgPSAoXG4gICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICAgKSA9PiB7XG4gICAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKS5ldmVyeSgodGFiKSA9PiB0YWIuZGlzYWJsZWQpKSByZXR1cm47XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEZvY3VzYWJsZUluZGV4KHRhcmdldEluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm47XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLnRhYnMudG9BcnJheSgpW2luZGV4XS5fYnV0dG9uPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFidXR0b24pIHJldHVybjtcbiAgICAgIGJ1dHRvbi5mb2N1cygpO1xuICAgICAgaWYgKHRoaXMua2V5Ym9hcmRBY3RpdmF0aW9uID09PSAnYXV0b21hdGljJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgfVxuICAgIH07XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzTmV4dFZhbGlkVGFiKHRoaXMuX2ZvY3VzZWRJbmRleCAtIDEsICdsZWZ0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzTmV4dFZhbGlkVGFiKHRoaXMuX2ZvY3VzZWRJbmRleCArIDEsICdyaWdodCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0hvbWUnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYigwLCAncmlnaHQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYih0aGlzLnRhYnMubGVuZ3RoIC0gMSwgJ2xlZnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVUYWJQb3NpdGlvbigpIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0/Ll9idXR0b24/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fYWN0aXZlVGFiUG9zaXRpb24gPSB7XG4gICAgICBsZWZ0OiBgJHt0YWI/Lm9mZnNldExlZnQgfHwgMH1weGAsXG4gICAgICB3aWR0aDogYCR7dGFiPy5jbGllbnRXaWR0aCB8fCAwfXB4YCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvblRhYnNDaGFuZ2UoKSB7XG4gICAgLy8gRW5zdXJlIHRoZSBjdXJyZW50IHRhYiBkb2Vzbid0IGNoYW5nZSBpZiB0YWJzIGNoYW5nZVxuICAgIC8vIGFuZCB0YWIgd2l0aCBjdXJyZW50bHkgc2VsZWN0ZWQgaWQgc3RpbGwgZXhpc3RzXG4gICAgY29uc3QgcHJldmlvdXNUYWJJZCA9IHRoaXMuX3RhYklkc1t0aGlzLnNlbGVjdGVkSW5kZXhdO1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICBpZiAodGhpcy5fdGFiSWRzLmluY2x1ZGVzKHByZXZpb3VzVGFiSWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl90YWJJZHMuZmluZEluZGV4KFxuICAgICAgICAodGFiSWQpID0+IHRhYklkID09PSBwcmV2aW91c1RhYklkXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IG1heEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG1heEluZGV4O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBza2lwQW5pbWF0aW9uRnJhbWUoKSB7XG4gICAgLy8gV2Ugd2FudCB0byBhdm9pZCBhbmltYXRpb24gb24gZmlyc3QgcmVuZGVyIGFuZCB3aGVuZXZlciB0YWIgY29udGVudCBjaGFuZ2VzXG4gICAgdGhpcy5fYW5pbWF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9hbmltYXRpb25FbmFibGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEZvY3VzYWJsZUluZGV4KFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnRhYnMudG9BcnJheSgpLmV2ZXJ5KCh0YWIpID0+IHRhYi5kaXNhYmxlZCkpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGNvbnN0cmFpbkluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChpbmRleCA+PSB0aGlzLnRhYnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgY29uc3RyYWluZWRJbmRleCA9IGNvbnN0cmFpbkluZGV4KGluZGV4KTtcbiAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKVtjb25zdHJhaW5lZEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEZvY3VzYWJsZUluZGV4KFxuICAgICAgICBjb25zdHJhaW5lZEluZGV4ICsgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gLTEgOiAxKSxcbiAgICAgICAgZGlyZWN0aW9uXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29uc3RyYWluZWRJbmRleDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbFwiXG4gIFtjbGFzcy5zYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbC0tbGFyZ2VdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gIFtjbGFzcy5zYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbC0tc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gIFtjbGFzcy5mb2N1cy12aXNpYmxlXT1cIl9mb2N1c1Zpc2libGVcIlxuICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2wtLW1hbnVhbC1rZXlib2FyZC1hY3RpdmF0aW9uXT1cIlxuICAgIGtleWJvYXJkQWN0aXZhdGlvbiA9PT0gJ21hbnVhbCdcbiAgXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2J1dHRvbi1jb250YWluZXJcIlxuICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICBhcmlhLW9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgY2RrTW9uaXRvclN1YnRyZWVGb2N1c1xuICAgIChjZGtGb2N1c0NoYW5nZSk9XCJfb25Gb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJfb25LZXlEb3duKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3Atc2VnbWVudGVkLXRhYlwiPjwvbmctY29udGVudD5cbiAgICA8c3BhblxuICAgICAgW3N0eWxlLmxlZnRdPVwiX2FjdGl2ZVRhYlBvc2l0aW9uLmxlZnRcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIl9hY3RpdmVUYWJQb3NpdGlvbi53aWR0aFwiXG4gICAgICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2dsaWRlci0td2l0aC10cmFuc2l0aW9uXT1cIlxuICAgICAgICBfYW5pbWF0aW9uRW5hYmxlZFxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2dsaWRlclwiXG4gICAgICByb2xlPVwibm9uZVwiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfZ2V0VGFiQ29udGVudFRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SegmentedTabsComponent } from './segmented-tabs.component';
|
|
4
|
+
import { SegmentedTabComponent } from './segmented-tab.component';
|
|
5
|
+
import { SegmentedTabLabelDirective } from './segmented-tab-label.directive';
|
|
6
|
+
import { SegmentedTabContentDirective } from './segmented-tab-content.directive';
|
|
7
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
8
|
+
import { UseComponentStyles } from '../../common/sapphire-view-encapsulation';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class SapphireSegmentedTabsModule {
|
|
11
|
+
}
|
|
12
|
+
SapphireSegmentedTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
SapphireSegmentedTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, declarations: [SegmentedTabsComponent,
|
|
14
|
+
SegmentedTabComponent,
|
|
15
|
+
SegmentedTabLabelDirective,
|
|
16
|
+
SegmentedTabContentDirective], imports: [CommonModule, A11yModule, UseComponentStyles], exports: [SegmentedTabsComponent,
|
|
17
|
+
SegmentedTabComponent,
|
|
18
|
+
SegmentedTabLabelDirective,
|
|
19
|
+
SegmentedTabContentDirective] });
|
|
20
|
+
SapphireSegmentedTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, imports: [CommonModule, A11yModule] });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, decorators: [{
|
|
22
|
+
type: NgModule,
|
|
23
|
+
args: [{
|
|
24
|
+
declarations: [
|
|
25
|
+
SegmentedTabsComponent,
|
|
26
|
+
SegmentedTabComponent,
|
|
27
|
+
SegmentedTabLabelDirective,
|
|
28
|
+
SegmentedTabContentDirective,
|
|
29
|
+
],
|
|
30
|
+
imports: [CommonModule, A11yModule, UseComponentStyles],
|
|
31
|
+
exports: [
|
|
32
|
+
SegmentedTabsComponent,
|
|
33
|
+
SegmentedTabComponent,
|
|
34
|
+
SegmentedTabLabelDirective,
|
|
35
|
+
SegmentedTabContentDirective,
|
|
36
|
+
],
|
|
37
|
+
}]
|
|
38
|
+
}] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTywyQkFBMkI7O3dIQUEzQiwyQkFBMkI7eUhBQTNCLDJCQUEyQixpQkFicEMsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQiwwQkFBMEI7UUFDMUIsNEJBQTRCLGFBRXBCLFlBQVksRUFBRSxVQUFVLEVBQUUsa0JBQWtCLGFBRXBELHNCQUFzQjtRQUN0QixxQkFBcUI7UUFDckIsMEJBQTBCO1FBQzFCLDRCQUE0Qjt5SEFHbkIsMkJBQTJCLFlBUjVCLFlBQVksRUFBRSxVQUFVOzJGQVF2QiwyQkFBMkI7a0JBZnZDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQztvQkFDdkQsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLDRCQUE0QjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYkxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWdtZW50ZWQtdGFiLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9zZWdtZW50ZWQtdGFiLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBVc2VDb21wb25lbnRTdHlsZXMgfSBmcm9tICcuLi8uLi9jb21tb24vc2FwcGhpcmUtdmlldy1lbmNhcHN1bGF0aW9uJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2VnbWVudGVkVGFic0NvbXBvbmVudCxcbiAgICBTZWdtZW50ZWRUYWJDb21wb25lbnQsXG4gICAgU2VnbWVudGVkVGFiTGFiZWxEaXJlY3RpdmUsXG4gICAgU2VnbWVudGVkVGFiQ29udGVudERpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZSwgVXNlQ29tcG9uZW50U3R5bGVzXSxcbiAgZXhwb3J0czogW1xuICAgIFNlZ21lbnRlZFRhYnNDb21wb25lbnQsXG4gICAgU2VnbWVudGVkVGFiQ29tcG9uZW50LFxuICAgIFNlZ21lbnRlZFRhYkxhYmVsRGlyZWN0aXZlLFxuICAgIFNlZ21lbnRlZFRhYkNvbnRlbnREaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNhcHBoaXJlU2VnbWVudGVkVGFic01vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// We have separate public_api.ts file for each angular module, to have them
|
|
2
|
+
// exposed as separate entry points. The build is still not emitting separate
|
|
3
|
+
// entry points, which will be addressed in this task:
|
|
4
|
+
// WCCJ-838
|
|
5
|
+
export { SelectComponent, MultiSelectDirective, SingleSelectDirective, } from './src/select/select.component';
|
|
6
|
+
export { SapphireSelectModule } from './src/select/select.module';
|
|
7
|
+
export { SelectionTextDirective } from './src/select/selection-text.directive';
|
|
8
|
+
export { SearchableSelectDirective } from './src/select/searchable-select.directive';
|
|
9
|
+
export { BasicSelectComponent, BasicSingleSelectDirective, } from './src/basic-select/basic-select.component';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBQzVFLDZFQUE2RTtBQUM3RSxzREFBc0Q7QUFDdEQsV0FBVztBQUNYLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEdBQzNCLE1BQU0sMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXZSBoYXZlIHNlcGFyYXRlIHB1YmxpY19hcGkudHMgZmlsZSBmb3IgZWFjaCBhbmd1bGFyIG1vZHVsZSwgdG8gaGF2ZSB0aGVtXG4vLyBleHBvc2VkIGFzIHNlcGFyYXRlIGVudHJ5IHBvaW50cy4gVGhlIGJ1aWxkIGlzIHN0aWxsIG5vdCBlbWl0dGluZyBzZXBhcmF0ZVxuLy8gZW50cnkgcG9pbnRzLCB3aGljaCB3aWxsIGJlIGFkZHJlc3NlZCBpbiB0aGlzIHRhc2s6XG4vLyBXQ0NKLTgzOFxuZXhwb3J0IHtcbiAgU2VsZWN0Q29tcG9uZW50LFxuICBNdWx0aVNlbGVjdERpcmVjdGl2ZSxcbiAgU2luZ2xlU2VsZWN0RGlyZWN0aXZlLFxufSBmcm9tICcuL3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBTYXBwaGlyZVNlbGVjdE1vZHVsZSB9IGZyb20gJy4vc3JjL3NlbGVjdC9zZWxlY3QubW9kdWxlJztcbmV4cG9ydCB7IFNlbGVjdGlvblRleHREaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9zZWxlY3Qvc2VsZWN0aW9uLXRleHQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFNlYXJjaGFibGVTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9zZWxlY3Qvc2VhcmNoYWJsZS1zZWxlY3QuZGlyZWN0aXZlJztcbmV4cG9ydCB7XG4gIEJhc2ljU2VsZWN0Q29tcG9uZW50LFxuICBCYXNpY1NpbmdsZVNlbGVjdERpcmVjdGl2ZSxcbn0gZnJvbSAnLi9zcmMvYmFzaWMtc2VsZWN0L2Jhc2ljLXNlbGVjdC5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Component, Directive, ElementRef, forwardRef, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { ListboxComponent } from '../../../listbox/src/listbox.component';
|
|
4
|
+
import { SelectComponentBase } from '../common/select-component-base';
|
|
5
|
+
import { SelectValueHolder, SingleSelectDirectiveBase, } from '../common/select-value-holder';
|
|
6
|
+
import { ViewEncapsulationProvider } from '../../../common/sapphire-view-encapsulation';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../common/select-value-holder";
|
|
9
|
+
import * as i2 from "@angular/cdk/a11y";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "../../../icon/src/icon.component";
|
|
12
|
+
import * as i5 from "../../../listbox/src/listbox.component";
|
|
13
|
+
import * as i6 from "../../../popover/src/popover.component";
|
|
14
|
+
import * as i7 from "../../../popover/src/popover-trigger.directive";
|
|
15
|
+
import * as i8 from "../../../button/src/button.component";
|
|
16
|
+
import * as i9 from "../../../button/src/button-icon.directive";
|
|
17
|
+
import * as i10 from "../common/hidden-select.component";
|
|
18
|
+
/**
|
|
19
|
+
* NOTE: Support for multiple selection in basic select is removed, based on
|
|
20
|
+
* a UX decision. See commit message for more details.
|
|
21
|
+
*/
|
|
22
|
+
export class BasicSingleSelectDirective extends SingleSelectDirectiveBase {
|
|
23
|
+
}
|
|
24
|
+
BasicSingleSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSingleSelectDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
25
|
+
BasicSingleSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: BasicSingleSelectDirective, selector: "sp-basic-select:not([multiple])", providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: SelectValueHolder,
|
|
28
|
+
useExisting: forwardRef(() => BasicSingleSelectDirective),
|
|
29
|
+
},
|
|
30
|
+
], usesInheritance: true, ngImport: i0 });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSingleSelectDirective, decorators: [{
|
|
32
|
+
type: Directive,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: 'sp-basic-select:not([multiple])',
|
|
35
|
+
providers: [
|
|
36
|
+
{
|
|
37
|
+
provide: SelectValueHolder,
|
|
38
|
+
useExisting: forwardRef(() => BasicSingleSelectDirective),
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
}]
|
|
42
|
+
}] });
|
|
43
|
+
/**
|
|
44
|
+
* Allows user to select a single option from a list, similar to native select
|
|
45
|
+
* component.
|
|
46
|
+
*
|
|
47
|
+
* Example:
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <sp-basic-select
|
|
50
|
+
* placeholder="Select an option"
|
|
51
|
+
* size="small"
|
|
52
|
+
* variant="contained"
|
|
53
|
+
* >
|
|
54
|
+
* <sp-option value="option1">First Option</sp-option>
|
|
55
|
+
* <sp-option value="option2">Second Option</sp-option>
|
|
56
|
+
* <sp-option value="option3">Third Option</sp-option>
|
|
57
|
+
* </sp-basic-select>
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export class BasicSelectComponent extends SelectComponentBase {
|
|
61
|
+
constructor(valueHolder, focusMonitor) {
|
|
62
|
+
super(valueHolder);
|
|
63
|
+
this.focusMonitor = focusMonitor;
|
|
64
|
+
/**
|
|
65
|
+
* Size of the button
|
|
66
|
+
*/
|
|
67
|
+
this.size = 'medium';
|
|
68
|
+
this.variant = 'uncontained';
|
|
69
|
+
this.focused = false;
|
|
70
|
+
}
|
|
71
|
+
focus(focusOrigin = 'program') {
|
|
72
|
+
if (this.triggerElementRef) {
|
|
73
|
+
this.focusMonitor.focusVia(this.triggerElementRef.nativeElement, focusOrigin);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
isFocused() {
|
|
77
|
+
return this.focused;
|
|
78
|
+
}
|
|
79
|
+
_onFocusChange(focusOrigin) {
|
|
80
|
+
this.focused = Boolean(focusOrigin);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
BasicSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSelectComponent, deps: [{ token: i1.SelectValueHolder }, { token: i2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
+
BasicSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: BasicSelectComponent, selector: "sp-basic-select", inputs: { size: "size", variant: "variant" }, host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null" } }, providers: [
|
|
85
|
+
{
|
|
86
|
+
provide: NG_VALUE_ACCESSOR,
|
|
87
|
+
useExisting: forwardRef(() => BasicSelectComponent),
|
|
88
|
+
multi: true,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
provide: SelectComponentBase,
|
|
92
|
+
useExisting: forwardRef(() => BasicSelectComponent),
|
|
93
|
+
},
|
|
94
|
+
ViewEncapsulationProvider,
|
|
95
|
+
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true }, { propertyName: "triggerElementRef", first: true, predicate: ["triggerElementRef"], descendants: true, read: ElementRef }, { propertyName: "listbox", first: true, predicate: ListboxComponent, descendants: true }], exportAs: ["spBasicSelect"], usesInheritance: true, ngImport: i0, template: "<div style=\"position: relative\">\n <sp-hidden-select></sp-hidden-select>\n <button\n sp-button\n [variant]=\"variant === 'primary' ? 'primary' : 'secondary'\"\n [appearance]=\"variant === 'uncontained' ? 'ghost' : 'fill'\"\n [size]=\"size\"\n iconAlign=\"right\"\n [spPopoverTriggerFor]=\"popover\"\n spPopoverPlacement=\"bottom start\"\n #triggerElementRef\n #triggerRef=\"spPopoverTrigger\"\n (keydown)=\"handleKeyDown($event)\"\n (spPopoverTriggerOpened)=\"_onOpen()\"\n (spPopoverTriggerClosed)=\"_onClose()\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [disabled]=\"disabled\"\n >\n <span *ngIf=\"selectedOptions.length === 0\">\n {{ placeholder }}\n </span>\n <ng-container *ngIf=\"selectedOptions.length > 0\">\n <ng-container *ngIf=\"!selectionText\">{{\n getSelectionText()\n }}</ng-container>\n <ng-content select=\"sp-selection-text\"></ng-content>\n </ng-container>\n <sp-icon spButtonIcon name=\"chevronDown\"></sp-icon>\n </button>\n <ng-template #popover>\n <sp-popover noPadding>\n <sp-listbox\n [spListboxItems]=\"listboxChildren\"\n navigationWrapDisabled\n [multiple]=\"multiple\"\n [(selectedValues)]=\"listboxValue\"\n (selected)=\"_handleSelected()\"\n [size]=\"size\"\n >\n </sp-listbox>\n </sp-popover>\n </ng-template>\n</div>\n", styles: [".sapphire-select{position:relative;display:inline-block;color:var(--sapphire-select-color-content);width:var(--sapphire-select-size-width-control);font-family:var(--sapphire-select-font-name);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-select__button{display:flex;align-items:center;height:var(--sapphire-select-size-height-field-l);box-sizing:border-box;cursor:pointer;padding:0 var(--sapphire-select-size-spacing-control-horizontal-l);border:none;background-color:var(--sapphire-select-color-background-field);width:100%;outline:0;text-align:left;color:inherit;font-family:inherit;box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-default);border-radius:var(--sapphire-select-size-radius-field)}.sapphire-select--medium .sapphire-select__button{height:var(--sapphire-select-size-height-field-m);padding:0 var(--sapphire-select-size-spacing-control-horizontal-m)}.sapphire-select__value{flex:1 0 0;min-width:0;font-size:var(--sapphire-select-size-font-content-l);width:100%;font-weight:var(--sapphire-select-size-font-weight-item);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapphire-select--medium .sapphire-select__value{font-size:var(--sapphire-select-size-font-content-m)}.sapphire-select__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sapphire-select-color-placeholder)}.sapphire-select__icon-container{line-height:0;width:var(--sapphire-select-size-width-icon-l);height:var(--sapphire-select-size-height-icon-l)}.sapphire-select--medium .sapphire-select__icon-container{width:var(--sapphire-select-size-width-icon-m);height:var(--sapphire-select-size-height-icon-m)}.sapphire-select__search-input:not([data-hidden=true]){all:inherit}.sapphire-select__search-input::placeholder{color:var(--sapphire-select-color-placeholder)}.sapphire-select__native-select{position:absolute;inset:0;opacity:.01;width:100%;z-index:1}.sapphire-select--error:not(.is-disabled) .sapphire-select__button{box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-error)}.sapphire-select:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-focus-ring)}.sapphire-select--error:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-border-field-error)}.sapphire-select.is-disabled .sapphire-select__button{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "sp-icon", inputs: ["name", "size"] }, { kind: "component", type: i5.ListboxComponent, selector: "sp-listbox", inputs: ["selectedValues", "spListboxItems", "disabled", "multiple", "navigationWrapDisabled", "aria-label", "aria-labelledby", "size"], outputs: ["selectedValuesChange", "selected"], exportAs: ["spListbox"] }, { kind: "component", type: i6.PopoverComponent, selector: "sp-popover", inputs: ["noPadding", "noMaxWidth"] }, { kind: "directive", type: i7.PopoverTriggerDirective, selector: "[spPopoverTriggerFor]", inputs: ["spPopoverPlacement", "spPopoverTriggerFor", "spPopoverNonModal", "spPopoverTriggerOpenOnPressStart", "spPopoverTriggerCloseOnScroll", "spPopoverTriggerDisabled"], outputs: ["spPopoverTriggerOpened", "spPopoverTriggerClosed"], exportAs: ["spPopoverTrigger"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: i8.ButtonComponent, selector: "button[sp-button], a[sp-button]", inputs: ["variant", "appearance", "surface", "size", "disabled", "iconAlign", "type"] }, { kind: "directive", type: i9.ButtonIconDirective, selector: "[spButtonIcon]" }, { kind: "component", type: i10.HiddenSelectComponent, selector: "sp-hidden-select" }] });
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSelectComponent, decorators: [{
|
|
97
|
+
type: Component,
|
|
98
|
+
args: [{ selector: 'sp-basic-select', exportAs: 'spBasicSelect', providers: [
|
|
99
|
+
{
|
|
100
|
+
provide: NG_VALUE_ACCESSOR,
|
|
101
|
+
useExisting: forwardRef(() => BasicSelectComponent),
|
|
102
|
+
multi: true,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
provide: SelectComponentBase,
|
|
106
|
+
useExisting: forwardRef(() => BasicSelectComponent),
|
|
107
|
+
},
|
|
108
|
+
ViewEncapsulationProvider,
|
|
109
|
+
], host: {
|
|
110
|
+
'[attr.aria-label]': 'null',
|
|
111
|
+
'[attr.aria-labelledby]': 'null',
|
|
112
|
+
}, template: "<div style=\"position: relative\">\n <sp-hidden-select></sp-hidden-select>\n <button\n sp-button\n [variant]=\"variant === 'primary' ? 'primary' : 'secondary'\"\n [appearance]=\"variant === 'uncontained' ? 'ghost' : 'fill'\"\n [size]=\"size\"\n iconAlign=\"right\"\n [spPopoverTriggerFor]=\"popover\"\n spPopoverPlacement=\"bottom start\"\n #triggerElementRef\n #triggerRef=\"spPopoverTrigger\"\n (keydown)=\"handleKeyDown($event)\"\n (spPopoverTriggerOpened)=\"_onOpen()\"\n (spPopoverTriggerClosed)=\"_onClose()\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [disabled]=\"disabled\"\n >\n <span *ngIf=\"selectedOptions.length === 0\">\n {{ placeholder }}\n </span>\n <ng-container *ngIf=\"selectedOptions.length > 0\">\n <ng-container *ngIf=\"!selectionText\">{{\n getSelectionText()\n }}</ng-container>\n <ng-content select=\"sp-selection-text\"></ng-content>\n </ng-container>\n <sp-icon spButtonIcon name=\"chevronDown\"></sp-icon>\n </button>\n <ng-template #popover>\n <sp-popover noPadding>\n <sp-listbox\n [spListboxItems]=\"listboxChildren\"\n navigationWrapDisabled\n [multiple]=\"multiple\"\n [(selectedValues)]=\"listboxValue\"\n (selected)=\"_handleSelected()\"\n [size]=\"size\"\n >\n </sp-listbox>\n </sp-popover>\n </ng-template>\n</div>\n", styles: [".sapphire-select{position:relative;display:inline-block;color:var(--sapphire-select-color-content);width:var(--sapphire-select-size-width-control);font-family:var(--sapphire-select-font-name);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-select__button{display:flex;align-items:center;height:var(--sapphire-select-size-height-field-l);box-sizing:border-box;cursor:pointer;padding:0 var(--sapphire-select-size-spacing-control-horizontal-l);border:none;background-color:var(--sapphire-select-color-background-field);width:100%;outline:0;text-align:left;color:inherit;font-family:inherit;box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-default);border-radius:var(--sapphire-select-size-radius-field)}.sapphire-select--medium .sapphire-select__button{height:var(--sapphire-select-size-height-field-m);padding:0 var(--sapphire-select-size-spacing-control-horizontal-m)}.sapphire-select__value{flex:1 0 0;min-width:0;font-size:var(--sapphire-select-size-font-content-l);width:100%;font-weight:var(--sapphire-select-size-font-weight-item);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapphire-select--medium .sapphire-select__value{font-size:var(--sapphire-select-size-font-content-m)}.sapphire-select__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sapphire-select-color-placeholder)}.sapphire-select__icon-container{line-height:0;width:var(--sapphire-select-size-width-icon-l);height:var(--sapphire-select-size-height-icon-l)}.sapphire-select--medium .sapphire-select__icon-container{width:var(--sapphire-select-size-width-icon-m);height:var(--sapphire-select-size-height-icon-m)}.sapphire-select__search-input:not([data-hidden=true]){all:inherit}.sapphire-select__search-input::placeholder{color:var(--sapphire-select-color-placeholder)}.sapphire-select__native-select{position:absolute;inset:0;opacity:.01;width:100%;z-index:1}.sapphire-select--error:not(.is-disabled) .sapphire-select__button{box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-error)}.sapphire-select:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-focus-ring)}.sapphire-select--error:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-border-field-error)}.sapphire-select.is-disabled .sapphire-select__button{cursor:not-allowed}\n"] }]
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i1.SelectValueHolder }, { type: i2.FocusMonitor }]; }, propDecorators: { size: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], variant: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], triggerRef: [{
|
|
118
|
+
type: ViewChild,
|
|
119
|
+
args: ['triggerRef']
|
|
120
|
+
}], triggerElementRef: [{
|
|
121
|
+
type: ViewChild,
|
|
122
|
+
args: ['triggerElementRef', { read: ElementRef }]
|
|
123
|
+
}], listbox: [{
|
|
124
|
+
type: ViewChild,
|
|
125
|
+
args: [ListboxComponent]
|
|
126
|
+
}] } });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3NyYy9iYXNpYy1zZWxlY3QvYmFzaWMtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3NyYy9iYXNpYy1zZWxlY3QvYmFzaWMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHlCQUF5QixHQUMxQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFFeEY7OztHQUdHO0FBVUgsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHlCQUF5Qjs7dUhBQTVELDBCQUEwQjsyR0FBMUIsMEJBQTBCLDBEQVAxQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO1NBQzFEO0tBQ0Y7MkZBRVUsMEJBQTBCO2tCQVR0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQ0FBaUM7b0JBQzNDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzt5QkFDMUQ7cUJBQ0Y7aUJBQ0Y7O0FBR0Q7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUF1QkgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQXFCM0QsWUFDRSxXQUE4QixFQUN0QixZQUEwQjtRQUVsQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFGWCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXRCcEM7O1dBRUc7UUFFSCxTQUFJLEdBQWlDLFFBQVEsQ0FBQztRQUc5QyxZQUFPLEdBQTRDLGFBQWEsQ0FBQztRQVd6RCxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBT3hCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBMkIsU0FBUztRQUN4QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFDcEMsV0FBVyxDQUNaLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBd0I7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7aUhBM0NVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDZLQWpCcEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuRCxLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDcEQ7UUFDRCx5QkFBeUI7S0FDMUIsd05BbUJ1QyxVQUFVLHVEQUd2QyxnQkFBZ0Isb0dDekY3QixxaERBK0NBOzJGRDBCYSxvQkFBb0I7a0JBdEJoQyxTQUFTOytCQUNFLGlCQUFpQixZQUdqQixlQUFlLGFBQ2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO3lCQUNwRDt3QkFDRCx5QkFBeUI7cUJBQzFCLFFBQ0s7d0JBQ0osbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0Isd0JBQXdCLEVBQUUsTUFBTTtxQkFDakM7bUlBT0QsSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJSSxVQUFVO3NCQURuQixTQUFTO3VCQUFDLFlBQVk7Z0JBSWIsaUJBQWlCO3NCQUQxQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJMUMsT0FBTztzQkFEaEIsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaXN0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbGlzdGJveC9zcmMvbGlzdGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9jb21tb24vc2VsZWN0LWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7XG4gIFNlbGVjdFZhbHVlSG9sZGVyLFxuICBTaW5nbGVTZWxlY3REaXJlY3RpdmVCYXNlLFxufSBmcm9tICcuLi9jb21tb24vc2VsZWN0LXZhbHVlLWhvbGRlcic7XG5pbXBvcnQgeyBWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NhcHBoaXJlLXZpZXctZW5jYXBzdWxhdGlvbic7XG5cbi8qKlxuICogTk9URTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VsZWN0aW9uIGluIGJhc2ljIHNlbGVjdCBpcyByZW1vdmVkLCBiYXNlZCBvblxuICogYSBVWCBkZWNpc2lvbi4gU2VlIGNvbW1pdCBtZXNzYWdlIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NwLWJhc2ljLXNlbGVjdDpub3QoW211bHRpcGxlXSknLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTZWxlY3RWYWx1ZUhvbGRlcixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJhc2ljU2luZ2xlU2VsZWN0RGlyZWN0aXZlKSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1NpbmdsZVNlbGVjdERpcmVjdGl2ZSBleHRlbmRzIFNpbmdsZVNlbGVjdERpcmVjdGl2ZUJhc2Uge31cblxuLyoqXG4gKiBBbGxvd3MgdXNlciB0byBzZWxlY3QgYSBzaW5nbGUgb3B0aW9uIGZyb20gYSBsaXN0LCBzaW1pbGFyIHRvIG5hdGl2ZSBzZWxlY3RcbiAqIGNvbXBvbmVudC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHN4XG4gKiA8c3AtYmFzaWMtc2VsZWN0XG4gKiAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBvcHRpb25cIlxuICogICAgc2l6ZT1cInNtYWxsXCJcbiAqICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICogPlxuICogICA8c3Atb3B0aW9uIHZhbHVlPVwib3B0aW9uMVwiPkZpcnN0IE9wdGlvbjwvc3Atb3B0aW9uPlxuICogICA8c3Atb3B0aW9uIHZhbHVlPVwib3B0aW9uMlwiPlNlY29uZCBPcHRpb248L3NwLW9wdGlvbj5cbiAqICAgPHNwLW9wdGlvbiB2YWx1ZT1cIm9wdGlvbjNcIj5UaGlyZCBPcHRpb248L3NwLW9wdGlvbj5cbiAqIDwvc3AtYmFzaWMtc2VsZWN0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLWJhc2ljLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNpYy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXNpYy1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdzcEJhc2ljU2VsZWN0JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYXNpY1NlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNlbGVjdENvbXBvbmVudEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYXNpY1NlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ251bGwnLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ251bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1NlbGVjdENvbXBvbmVudCBleHRlbmRzIFNlbGVjdENvbXBvbmVudEJhc2Uge1xuICAvKipcbiAgICogU2l6ZSBvZiB0aGUgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKVxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KClcbiAgdmFyaWFudDogJ3ByaW1hcnknIHwgJ2NvbnRhaW5lZCcgfCAndW5jb250YWluZWQnID0gJ3VuY29udGFpbmVkJztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyUmVmJylcbiAgcHJvdGVjdGVkIHRyaWdnZXJSZWY6IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJFbGVtZW50UmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByb3RlY3RlZCB0cmlnZ2VyRWxlbWVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKExpc3Rib3hDb21wb25lbnQpXG4gIHByb3RlY3RlZCBsaXN0Ym94OiBMaXN0Ym94Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgZm9jdXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHZhbHVlSG9sZGVyOiBTZWxlY3RWYWx1ZUhvbGRlcixcbiAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yXG4gICkge1xuICAgIHN1cGVyKHZhbHVlSG9sZGVyKTtcbiAgfVxuXG4gIGZvY3VzKGZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJykge1xuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50UmVmKSB7XG4gICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYShcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBmb2N1c09yaWdpblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpc0ZvY3VzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcbiAgfVxuXG4gIF9vbkZvY3VzQ2hhbmdlKGZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbikge1xuICAgIHRoaXMuZm9jdXNlZCA9IEJvb2xlYW4oZm9jdXNPcmlnaW4pO1xuICB9XG59XG4iLCI8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XG4gIDxzcC1oaWRkZW4tc2VsZWN0Pjwvc3AtaGlkZGVuLXNlbGVjdD5cbiAgPGJ1dHRvblxuICAgIHNwLWJ1dHRvblxuICAgIFt2YXJpYW50XT1cInZhcmlhbnQgPT09ICdwcmltYXJ5JyA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICBbYXBwZWFyYW5jZV09XCJ2YXJpYW50ID09PSAndW5jb250YWluZWQnID8gJ2dob3N0JyA6ICdmaWxsJ1wiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4gICAgaWNvbkFsaWduPVwicmlnaHRcIlxuICAgIFtzcFBvcG92ZXJUcmlnZ2VyRm9yXT1cInBvcG92ZXJcIlxuICAgIHNwUG9wb3ZlclBsYWNlbWVudD1cImJvdHRvbSBzdGFydFwiXG4gICAgI3RyaWdnZXJFbGVtZW50UmVmXG4gICAgI3RyaWdnZXJSZWY9XCJzcFBvcG92ZXJUcmlnZ2VyXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgIChzcFBvcG92ZXJUcmlnZ2VyT3BlbmVkKT1cIl9vbk9wZW4oKVwiXG4gICAgKHNwUG9wb3ZlclRyaWdnZXJDbG9zZWQpPVwiX29uQ2xvc2UoKVwiXG4gICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgIChjZGtGb2N1c0NoYW5nZSk9XCJfb25Gb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgPlxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICA8L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGlvblRleHRcIj57e1xuICAgICAgICBnZXRTZWxlY3Rpb25UZXh0KClcbiAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzcC1zZWxlY3Rpb24tdGV4dFwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c3AtaWNvbiBzcEJ1dHRvbkljb24gbmFtZT1cImNoZXZyb25Eb3duXCI+PC9zcC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG5nLXRlbXBsYXRlICNwb3BvdmVyPlxuICAgIDxzcC1wb3BvdmVyIG5vUGFkZGluZz5cbiAgICAgIDxzcC1saXN0Ym94XG4gICAgICAgIFtzcExpc3Rib3hJdGVtc109XCJsaXN0Ym94Q2hpbGRyZW5cIlxuICAgICAgICBuYXZpZ2F0aW9uV3JhcERpc2FibGVkXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgIFsoc2VsZWN0ZWRWYWx1ZXMpXT1cImxpc3Rib3hWYWx1ZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJfaGFuZGxlU2VsZWN0ZWQoKVwiXG4gICAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgPlxuICAgICAgPC9zcC1saXN0Ym94PlxuICAgIDwvc3AtcG9wb3Zlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|