@rivet-health/design-system 40.44.0 → 40.44.2
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/{esm2020 → esm2022}/lib/accessibility/sr-only/sr-only.component.mjs +4 -4
- package/esm2022/lib/download/download.service.mjs +47 -0
- package/{esm2020 → esm2022}/lib/format/pipes/common.mjs +5 -5
- package/{esm2020 → esm2022}/lib/format/pipes/date.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/days.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/dollars.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/number.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/percentage.pipe.mjs +4 -4
- package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +61 -0
- package/esm2022/lib/format/pipes/small-currency.pipe.mjs +24 -0
- package/esm2022/lib/format/pipes/small-number.pipe.mjs +29 -0
- package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +62 -0
- package/esm2022/lib/format/truncate/truncate.component.mjs +51 -0
- package/esm2022/lib/icon/dom-cache.mjs +32 -0
- package/esm2022/lib/icon/icon.component.mjs +86 -0
- package/{esm2020 → esm2022}/lib/icon/icons.mjs +1 -1
- package/{esm2020 → esm2022}/lib/input/alphabetic-field/alphabetic-field.component.mjs +4 -4
- package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +48 -0
- package/esm2022/lib/input/button/button.component.mjs +139 -0
- package/esm2022/lib/input/button-group/button-group.component.mjs +39 -0
- package/{esm2020 → esm2022}/lib/input/calendar/calendar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/card-checkbox/card-checkbox.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/checkbox/checkbox.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/currency-field/currency-field.component.mjs +4 -4
- package/esm2022/lib/input/date/date.component.mjs +279 -0
- package/esm2022/lib/input/date-range/date-range.component.mjs +477 -0
- package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +47 -0
- package/{esm2020 → esm2022}/lib/input/filter-dropdown/filter-dropdown.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/input/input-label/input-label.component.mjs +4 -4
- package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +745 -0
- package/esm2022/lib/input/number-field/number-field.component.mjs +125 -0
- package/{esm2020 → esm2022}/lib/input/percentage-field/percentage-field.component.mjs +4 -4
- package/esm2022/lib/input/phone-field/phone-field.component.mjs +74 -0
- package/{esm2020 → esm2022}/lib/input/radio/radio.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/search/search.component.mjs +4 -4
- package/esm2022/lib/input/search-select/search-select.component.mjs +189 -0
- package/esm2022/lib/input/select/select/select.component.mjs +178 -0
- package/{esm2020 → esm2022}/lib/input/select/select-node/select-node.component.mjs +4 -4
- package/esm2022/lib/input/select/state.mjs +882 -0
- package/{esm2020 → esm2022}/lib/input/simple-select/option-group.pipe.mjs +4 -4
- package/esm2022/lib/input/simple-select/simple-select.component.mjs +178 -0
- package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +33 -0
- package/esm2022/lib/input/text-field/text-field.component.mjs +115 -0
- package/{esm2020 → esm2022}/lib/input/textarea-field/textarea-field.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/validation-message/validation-message.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/layout/card/card-actions.component.mjs +4 -4
- package/esm2022/lib/layout/card/card-content.component.mjs +64 -0
- package/esm2022/lib/layout/card/card-header.component.mjs +201 -0
- package/{esm2020 → esm2022}/lib/layout/card/card-link.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/layout/card/card-media.component.mjs +4 -4
- package/esm2022/lib/layout/card/card.component.mjs +291 -0
- package/{esm2020 → esm2022}/lib/layout/setting-row/setting-row.component.mjs +4 -4
- package/esm2022/lib/load/loading/loading.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/load/loading-cover/loading-cover.component.mjs +4 -4
- package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +243 -0
- package/{esm2020 → esm2022}/lib/navigation/link/link.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/navigation/page-header/page-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/tabs/tab/tab.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/tabs/tabs/tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/views/edit-view/edit-view.component.mjs +9 -9
- package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +151 -0
- package/esm2022/lib/navigation/views/state.mjs +456 -0
- package/{esm2020 → esm2022}/lib/navigation/views/view-menu/view-menu.component.mjs +5 -5
- package/esm2022/lib/navigation/views/views/views.component.mjs +90 -0
- package/{esm2020 → esm2022}/lib/notification/badge/badge.component.mjs +4 -4
- package/esm2022/lib/notification/banner/banner-action.component.mjs +48 -0
- package/esm2022/lib/notification/banner/banner.component.mjs +61 -0
- package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +50 -0
- package/esm2022/lib/notification/map-indicator/map-indicators.mjs +15 -0
- package/{esm2020 → esm2022}/lib/notification/notification-badge/notification-badge.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/callout.component.mjs +130 -0
- package/esm2022/lib/overlay/callout/callout.helpers.mjs +113 -0
- package/{esm2020 → esm2022}/lib/overlay/callout/help/help.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +69 -0
- package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +30 -0
- package/{esm2020 → esm2022}/lib/overlay/callout/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +138 -0
- package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +47 -0
- package/{esm2020 → esm2022}/lib/overlay/modal/dialog-stack.service.mjs +4 -4
- package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +146 -0
- package/esm2022/lib/overlay/modal/modal.component.mjs +31 -0
- package/{esm2020 → esm2022}/lib/overlay/modal/side-sheet/side-sheet.component.mjs +4 -4
- package/esm2022/lib/overlay/overlay-outlet.component.mjs +98 -0
- package/{esm2020 → esm2022}/lib/overlay/overlay.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/overlay/overlay.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/overlay/toast/toast-action.component.mjs +4 -4
- package/esm2022/lib/overlay/toast/toast.component.mjs +41 -0
- package/{esm2020 → esm2022}/lib/riv.module.mjs +227 -227
- package/esm2022/lib/size/size.directive.mjs +33 -0
- package/esm2022/lib/table/simple-table/coordinate-helper.mjs +61 -0
- package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +36 -0
- package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +37 -0
- package/{esm2020 → esm2022}/lib/table/simple-table/simple-table-row.component.mjs +4 -4
- package/esm2022/lib/table/simple-table/simple-table.component.mjs +104 -0
- package/esm2022/lib/table/table/clipboard.mjs +182 -0
- package/esm2022/lib/table/table/state-helpers/collapse-helpers.mjs +116 -0
- package/esm2022/lib/table/table/state-helpers/column-helpers.mjs +383 -0
- package/{esm2020 → esm2022}/lib/table/table/state-helpers/display-helpers.mjs +1 -1
- package/esm2022/lib/table/table/state-helpers/nesting-helpers.mjs +123 -0
- package/esm2022/lib/table/table/state-helpers/order-helpers.mjs +164 -0
- package/esm2022/lib/table/table/state-helpers/pagination-helpers.mjs +139 -0
- package/esm2022/lib/table/table/state-helpers/result-helpers.mjs +70 -0
- package/esm2022/lib/table/table/state-helpers/search-helpers.mjs +72 -0
- package/esm2022/lib/table/table/state-helpers/selection-helpers.mjs +180 -0
- package/esm2022/lib/table/table/state.mjs +1035 -0
- package/esm2022/lib/table/table/table/table.component.mjs +367 -0
- package/{esm2020 → esm2022}/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +5 -5
- package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +227 -0
- package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +134 -0
- package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +35 -0
- package/{esm2020 → esm2022}/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +6 -6
- package/esm2022/lib/table/table/table-search/table-search.component.mjs +71 -0
- package/{esm2020 → esm2022}/lib/table/table/table-search-columns/table-search-columns.component.mjs +4 -4
- package/esm2022/lib/visibility/visibility.directive.mjs +34 -0
- package/esm2022/lib/visualization/chart/chart-scaling.mjs +380 -0
- package/esm2022/lib/visualization/chart/chart.component.mjs +626 -0
- package/esm2022/lib/visualization/chart/chart.mjs +3768 -0
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-cell.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-header-cell.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-row.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/donut/donut.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/funnel-chart/funnel-chart.component.mjs +5 -5
- package/esm2022/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +33 -0
- package/{esm2020 → esm2022}/lib/visualization/highlight/highlight.component.mjs +4 -4
- package/esm2022/lib/visualization/highlight/highlight.helpers.mjs +20 -0
- package/esm2022/lib/visualization/intervals.mjs +63 -0
- package/{esm2020 → esm2022}/lib/visualization/issue/issue.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/legend-item/legend-item.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/metric/metric.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/mini-pie/mini-pie.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/progress/progress.component.mjs +5 -5
- package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +377 -0
- package/esm2022/lib/visualization/stacked-column/stacked-column.helpers.mjs +18 -0
- package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +270 -0
- package/esm2022/lib/visualization/stacked-row/stacked-row.helpers.mjs +74 -0
- package/esm2022/lib/visualization/time-series/time-series.component.mjs +374 -0
- package/esm2022/lib/visualization/time-series/time-series.helpers.mjs +15 -0
- package/esm2022/lib/visualization/trend/trend.component.mjs +51 -0
- package/{esm2020 → esm2022}/lib/visualization/zero-state/zero-state.component.mjs +4 -4
- package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs +670 -670
- package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs.map +1 -1
- package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +1 -1
- package/lib/format/truncate/truncate.component.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/input/auto-focus/auto-focus.directive.d.ts +1 -1
- package/lib/input/button/button.component.d.ts +1 -1
- package/lib/input/calendar/calendar.component.d.ts +1 -1
- package/lib/input/checkbox/checkbox.component.d.ts +1 -1
- package/lib/input/currency-field/currency-field.component.d.ts +1 -1
- package/lib/input/date/date.component.d.ts +1 -1
- package/lib/input/date-range/date-range.component.d.ts +1 -1
- package/lib/input/filter-chip/filter-chip.component.d.ts +1 -1
- package/lib/input/filter-dropdown/filter-dropdown.component.d.ts +1 -1
- package/lib/input/input-label/input-label.component.d.ts +1 -1
- package/lib/input/mentions-input/mentions-input.component.d.ts +1 -1
- package/lib/input/number-field/number-field.component.d.ts +1 -1
- package/lib/input/percentage-field/percentage-field.component.d.ts +1 -1
- package/lib/input/phone-field/phone-field.component.d.ts +1 -1
- package/lib/input/radio/radio.component.d.ts +1 -1
- package/lib/input/search/search.component.d.ts +1 -1
- package/lib/input/search-select/search-select.component.d.ts +1 -1
- package/lib/input/select/select/select.component.d.ts +1 -1
- package/lib/input/select/select-node/select-node.component.d.ts +1 -1
- package/lib/input/simple-select/simple-select.component.d.ts +1 -1
- package/lib/input/switch-checkbox/switch-checkbox.component.d.ts +1 -1
- package/lib/input/text-field/text-field.component.d.ts +1 -1
- package/lib/input/textarea-field/textarea-field.component.d.ts +1 -1
- package/lib/input/validation-message/validation-message.component.d.ts +1 -1
- package/lib/layout/card/card-actions.component.d.ts +1 -1
- package/lib/layout/card/card-content.component.d.ts +1 -1
- package/lib/layout/card/card-header.component.d.ts +1 -1
- package/lib/layout/card/card-link.component.d.ts +1 -1
- package/lib/layout/card/card-media.component.d.ts +1 -1
- package/lib/layout/card/card.component.d.ts +1 -1
- package/lib/layout/setting-row/setting-row.component.d.ts +1 -1
- package/lib/load/loading/loading.component.d.ts +1 -1
- package/lib/load/loading-cover/loading-cover.component.d.ts +1 -1
- package/lib/navigation/editable-heading/editable-heading.component.d.ts +1 -1
- package/lib/navigation/link/link.component.d.ts +1 -1
- package/lib/navigation/page-header/page-header.component.d.ts +1 -1
- package/lib/navigation/simple-tabs/simple-tab/simple-tab.component.d.ts +1 -1
- package/lib/navigation/tabs/tab/tab.component.d.ts +1 -1
- package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +1 -1
- package/lib/navigation/views/edit-view/edit-view.component.d.ts +1 -1
- package/lib/navigation/views/permission-picker/permission-picker.component.d.ts +3 -3
- package/lib/navigation/views/view-menu/view-menu.component.d.ts +1 -1
- package/lib/navigation/views/views/views.component.d.ts +1 -1
- package/lib/notification/badge/badge.component.d.ts +1 -1
- package/lib/notification/banner/banner-action.component.d.ts +1 -1
- package/lib/notification/banner/banner.component.d.ts +1 -1
- package/lib/notification/map-indicator/map-indicator.component.d.ts +1 -1
- package/lib/notification/notification-badge/notification-badge.component.d.ts +1 -1
- package/lib/overlay/callout/callout.component.d.ts +1 -1
- package/lib/overlay/callout/help/help.component.d.ts +1 -1
- package/lib/overlay/callout/lock-scroll.directive.d.ts +1 -1
- package/lib/overlay/callout/menu/menu-item/menu-item.component.d.ts +1 -1
- package/lib/overlay/callout/menu/menu.component.d.ts +1 -1
- package/lib/overlay/callout/tooltip/locked-tooltip.directive.d.ts +1 -1
- package/lib/overlay/callout/tooltip/tooltip.component.d.ts +1 -1
- package/lib/overlay/callout/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/overlay/modal/dialog/dialog.component.d.ts +1 -1
- package/lib/overlay/modal/form-dialog/form-dialog.component.d.ts +1 -1
- package/lib/overlay/modal/modal.component.d.ts +1 -1
- package/lib/overlay/modal/side-sheet/side-sheet.component.d.ts +1 -1
- package/lib/overlay/toast/toast.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table-header-cell.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table-row.component.d.ts +1 -1
- package/lib/table/table/table/table.component.d.ts +1 -1
- package/lib/table/table/table-collapse-all/table-collapse-all.component.d.ts +1 -1
- package/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.d.ts +1 -1
- package/lib/table/table/table-column-settings/table-column-settings.component.d.ts +1 -1
- package/lib/table/table/table-csv-export/table-csv-export.component.d.ts +1 -1
- package/lib/table/table/table-search/table-search.component.d.ts +1 -1
- package/lib/table/table/table-search-columns/table-search-columns.component.d.ts +1 -1
- package/lib/visualization/chart/chart.component.d.ts +1 -1
- package/lib/visualization/data-table/data-table-row.component.d.ts +1 -1
- package/lib/visualization/donut/donut.component.d.ts +1 -1
- package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +1 -1
- package/lib/visualization/highlight/highlight.component.d.ts +1 -1
- package/lib/visualization/issue/issue.component.d.ts +1 -1
- package/lib/visualization/legend-item/legend-item.component.d.ts +1 -1
- package/lib/visualization/metric/metric.component.d.ts +1 -1
- package/lib/visualization/mini-pie/mini-pie.component.d.ts +1 -1
- package/lib/visualization/progress/progress.component.d.ts +1 -1
- package/lib/visualization/stacked-column/stacked-column.component.d.ts +3 -3
- package/lib/visualization/stacked-row/stacked-row.component.d.ts +1 -1
- package/lib/visualization/time-series/time-series.component.d.ts +3 -3
- package/lib/visualization/trend/trend.component.d.ts +1 -1
- package/lib/visualization/zero-state/zero-state.component.d.ts +1 -1
- package/package.json +5 -11
- package/esm2020/lib/download/download.service.mjs +0 -47
- package/esm2020/lib/format/pipes/sentence-case.pipe.mjs +0 -61
- package/esm2020/lib/format/pipes/small-currency.pipe.mjs +0 -24
- package/esm2020/lib/format/pipes/small-number.pipe.mjs +0 -29
- package/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +0 -62
- package/esm2020/lib/format/truncate/truncate.component.mjs +0 -51
- package/esm2020/lib/icon/dom-cache.mjs +0 -32
- package/esm2020/lib/icon/icon.component.mjs +0 -86
- package/esm2020/lib/input/auto-focus/auto-focus.directive.mjs +0 -48
- package/esm2020/lib/input/button/button.component.mjs +0 -139
- package/esm2020/lib/input/button-group/button-group.component.mjs +0 -39
- package/esm2020/lib/input/date/date.component.mjs +0 -279
- package/esm2020/lib/input/date-range/date-range.component.mjs +0 -477
- package/esm2020/lib/input/filter-chip/filter-chip.component.mjs +0 -47
- package/esm2020/lib/input/mentions-input/mentions-input.component.mjs +0 -745
- package/esm2020/lib/input/number-field/number-field.component.mjs +0 -125
- package/esm2020/lib/input/phone-field/phone-field.component.mjs +0 -74
- package/esm2020/lib/input/search-select/search-select.component.mjs +0 -189
- package/esm2020/lib/input/select/select/select.component.mjs +0 -178
- package/esm2020/lib/input/select/state.mjs +0 -882
- package/esm2020/lib/input/simple-select/simple-select.component.mjs +0 -178
- package/esm2020/lib/input/switch-checkbox/switch-checkbox.component.mjs +0 -33
- package/esm2020/lib/input/text-field/text-field.component.mjs +0 -115
- package/esm2020/lib/layout/card/card-content.component.mjs +0 -64
- package/esm2020/lib/layout/card/card-header.component.mjs +0 -201
- package/esm2020/lib/layout/card/card.component.mjs +0 -291
- package/esm2020/lib/load/loading/loading.component.mjs +0 -43
- package/esm2020/lib/navigation/editable-heading/editable-heading.component.mjs +0 -243
- package/esm2020/lib/navigation/views/permission-picker/permission-picker.component.mjs +0 -151
- package/esm2020/lib/navigation/views/state.mjs +0 -456
- package/esm2020/lib/navigation/views/views/views.component.mjs +0 -90
- package/esm2020/lib/notification/banner/banner-action.component.mjs +0 -48
- package/esm2020/lib/notification/banner/banner.component.mjs +0 -61
- package/esm2020/lib/notification/map-indicator/map-indicator.component.mjs +0 -50
- package/esm2020/lib/notification/map-indicator/map-indicators.mjs +0 -15
- package/esm2020/lib/overlay/callout/callout.component.mjs +0 -130
- package/esm2020/lib/overlay/callout/callout.helpers.mjs +0 -113
- package/esm2020/lib/overlay/callout/lock-scroll.directive.mjs +0 -69
- package/esm2020/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +0 -30
- package/esm2020/lib/overlay/callout/tooltip/tooltip.directive.mjs +0 -138
- package/esm2020/lib/overlay/modal/dialog/dialog.component.mjs +0 -47
- package/esm2020/lib/overlay/modal/form-dialog/form-dialog.component.mjs +0 -146
- package/esm2020/lib/overlay/modal/modal.component.mjs +0 -31
- package/esm2020/lib/overlay/overlay-outlet.component.mjs +0 -98
- package/esm2020/lib/overlay/toast/toast.component.mjs +0 -41
- package/esm2020/lib/size/size.directive.mjs +0 -33
- package/esm2020/lib/table/simple-table/coordinate-helper.mjs +0 -61
- package/esm2020/lib/table/simple-table/simple-table-cell.component.mjs +0 -36
- package/esm2020/lib/table/simple-table/simple-table-header-cell.component.mjs +0 -37
- package/esm2020/lib/table/simple-table/simple-table.component.mjs +0 -104
- package/esm2020/lib/table/table/clipboard.mjs +0 -182
- package/esm2020/lib/table/table/state-helpers/collapse-helpers.mjs +0 -116
- package/esm2020/lib/table/table/state-helpers/column-helpers.mjs +0 -383
- package/esm2020/lib/table/table/state-helpers/nesting-helpers.mjs +0 -123
- package/esm2020/lib/table/table/state-helpers/order-helpers.mjs +0 -164
- package/esm2020/lib/table/table/state-helpers/pagination-helpers.mjs +0 -139
- package/esm2020/lib/table/table/state-helpers/result-helpers.mjs +0 -70
- package/esm2020/lib/table/table/state-helpers/search-helpers.mjs +0 -72
- package/esm2020/lib/table/table/state-helpers/selection-helpers.mjs +0 -180
- package/esm2020/lib/table/table/state.mjs +0 -1035
- package/esm2020/lib/table/table/table/table.component.mjs +0 -367
- package/esm2020/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +0 -227
- package/esm2020/lib/table/table/table-column-settings/table-column-settings.component.mjs +0 -134
- package/esm2020/lib/table/table/table-csv-export/table-csv-export.component.mjs +0 -35
- package/esm2020/lib/table/table/table-search/table-search.component.mjs +0 -71
- package/esm2020/lib/visibility/visibility.directive.mjs +0 -34
- package/esm2020/lib/visualization/chart/chart-scaling.mjs +0 -380
- package/esm2020/lib/visualization/chart/chart.component.mjs +0 -626
- package/esm2020/lib/visualization/chart/chart.mjs +0 -3768
- package/esm2020/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +0 -33
- package/esm2020/lib/visualization/highlight/highlight.helpers.mjs +0 -20
- package/esm2020/lib/visualization/intervals.mjs +0 -63
- package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +0 -377
- package/esm2020/lib/visualization/stacked-column/stacked-column.helpers.mjs +0 -18
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +0 -270
- package/esm2020/lib/visualization/stacked-row/stacked-row.helpers.mjs +0 -74
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +0 -374
- package/esm2020/lib/visualization/time-series/time-series.helpers.mjs +0 -15
- package/esm2020/lib/visualization/trend/trend.component.mjs +0 -51
- package/fesm2015/rivet-health-design-system.mjs +0 -18370
- package/fesm2015/rivet-health-design-system.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/overlay/callout/select-callout-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/util/local-storage.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/rivet-health-design-system.mjs +0 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import Fuse from 'fuse.js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../button/button.component";
|
|
6
|
+
import * as i3 from "../../overlay/callout/callout.component";
|
|
7
|
+
import * as i4 from "../../icon/icon.component";
|
|
8
|
+
import * as i5 from "../input-label/input-label.component";
|
|
9
|
+
import * as i6 from "../../overlay/overlay.directive";
|
|
10
|
+
import * as i7 from "../../overlay/callout/tooltip/tooltip.directive";
|
|
11
|
+
export class SearchSelectComponent {
|
|
12
|
+
constructor(cdr) {
|
|
13
|
+
this.cdr = cdr;
|
|
14
|
+
this.options = [];
|
|
15
|
+
this.selected = [];
|
|
16
|
+
this.placeholder = 'Search';
|
|
17
|
+
this.addNewLabel = 'Add';
|
|
18
|
+
this.size = 'medium';
|
|
19
|
+
this.disabled = false;
|
|
20
|
+
this.required = false;
|
|
21
|
+
this.state = 'valid';
|
|
22
|
+
this.selectedChange = new EventEmitter();
|
|
23
|
+
this.addNew = new EventEmitter();
|
|
24
|
+
this.searchInput = null;
|
|
25
|
+
this.trigger = null;
|
|
26
|
+
this.searchText = '';
|
|
27
|
+
this.isOpen = false;
|
|
28
|
+
this.filteredOptions = [];
|
|
29
|
+
this.fuse = null;
|
|
30
|
+
}
|
|
31
|
+
ngOnChanges(changes) {
|
|
32
|
+
if (changes['options']) {
|
|
33
|
+
this.initializeFuse();
|
|
34
|
+
}
|
|
35
|
+
if (changes['selected']) {
|
|
36
|
+
this.updateFilteredOptions();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
initializeFuse() {
|
|
40
|
+
this.fuse = new Fuse(this.options, {
|
|
41
|
+
keys: ['title', 'subtitle'],
|
|
42
|
+
threshold: 0.3,
|
|
43
|
+
});
|
|
44
|
+
this.updateFilteredOptions();
|
|
45
|
+
}
|
|
46
|
+
onSearchInput(value) {
|
|
47
|
+
this.searchText = value;
|
|
48
|
+
this.updateFilteredOptions();
|
|
49
|
+
if (!this.isOpen && value) {
|
|
50
|
+
this.open();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
updateFilteredOptions() {
|
|
54
|
+
if (!this.searchText || !this.fuse) {
|
|
55
|
+
this.filteredOptions = this.getUnselectedOptions();
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const results = this.fuse.search(this.searchText);
|
|
59
|
+
this.filteredOptions = results
|
|
60
|
+
.map(result => result.item)
|
|
61
|
+
.filter(option => !this.isSelected(option));
|
|
62
|
+
}
|
|
63
|
+
this.cdr.markForCheck();
|
|
64
|
+
}
|
|
65
|
+
getUnselectedOptions() {
|
|
66
|
+
return this.options.filter(option => !this.isSelected(option));
|
|
67
|
+
}
|
|
68
|
+
isSelected(option) {
|
|
69
|
+
return this.selected.some(s => s.id === option.id);
|
|
70
|
+
}
|
|
71
|
+
open() {
|
|
72
|
+
if (this.disabled)
|
|
73
|
+
return;
|
|
74
|
+
this.isOpen = true;
|
|
75
|
+
this.updateFilteredOptions();
|
|
76
|
+
this.cdr.markForCheck();
|
|
77
|
+
}
|
|
78
|
+
close() {
|
|
79
|
+
this.isOpen = false;
|
|
80
|
+
this.cdr.markForCheck();
|
|
81
|
+
}
|
|
82
|
+
selectOption(option) {
|
|
83
|
+
if (this.isSelected(option))
|
|
84
|
+
return;
|
|
85
|
+
const newSelected = [...this.selected, option];
|
|
86
|
+
this.selectedChange.emit(newSelected);
|
|
87
|
+
this.searchText = '';
|
|
88
|
+
this.updateFilteredOptions();
|
|
89
|
+
this.focusInput();
|
|
90
|
+
}
|
|
91
|
+
removeOption(option) {
|
|
92
|
+
const newSelected = this.selected.filter(s => s.id !== option.id);
|
|
93
|
+
this.selectedChange.emit(newSelected);
|
|
94
|
+
}
|
|
95
|
+
onAddNew() {
|
|
96
|
+
if (!this.searchText.trim())
|
|
97
|
+
return;
|
|
98
|
+
this.addNew.emit(this.searchText.trim());
|
|
99
|
+
this.searchText = '';
|
|
100
|
+
this.close();
|
|
101
|
+
}
|
|
102
|
+
onInputFocus() {
|
|
103
|
+
this.open();
|
|
104
|
+
}
|
|
105
|
+
onInputBlur(event) {
|
|
106
|
+
setTimeout(() => {
|
|
107
|
+
if (!this.isClickInsideComponent(event.relatedTarget)) {
|
|
108
|
+
this.close();
|
|
109
|
+
}
|
|
110
|
+
}, 150);
|
|
111
|
+
}
|
|
112
|
+
isClickInsideComponent(target) {
|
|
113
|
+
if (!target)
|
|
114
|
+
return false;
|
|
115
|
+
return this.trigger?.nativeElement?.contains(target) ?? false;
|
|
116
|
+
}
|
|
117
|
+
focusInput() {
|
|
118
|
+
this.searchInput?.nativeElement?.focus();
|
|
119
|
+
}
|
|
120
|
+
onKeydown(event) {
|
|
121
|
+
if (event.key === 'Escape' && this.isOpen) {
|
|
122
|
+
this.close();
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
}
|
|
125
|
+
else if (event.key === 'Enter' && this.isOpen) {
|
|
126
|
+
// Enter belongs to the dropdown while it's open, even when it doesn't
|
|
127
|
+
// add anything, so it doesn't submit a surrounding form mid-search.
|
|
128
|
+
if (this.searchText && this.filteredOptions.length === 0) {
|
|
129
|
+
this.onAddNew();
|
|
130
|
+
}
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
trackByOption(_index, option) {
|
|
135
|
+
return option.id;
|
|
136
|
+
}
|
|
137
|
+
get showAddNew() {
|
|
138
|
+
return !!this.searchText.trim();
|
|
139
|
+
}
|
|
140
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
141
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchSelectComponent, selector: "riv-search-select", inputs: { options: "options", selected: "selected", placeholder: "placeholder", addNewLabel: "addNewLabel", newTooltip: "newTooltip", size: "size", disabled: "disabled", label: "label", help: "help", required: "required", state: "state", errorMessage: "errorMessage", optionTemplate: "optionTemplate", chipTemplate: "chipTemplate" }, outputs: { selectedChange: "selectedChange", addNew: "addNew" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage ?? ''\"\n>\n <div class=\"search-select\" [class.disabled]=\"disabled\">\n <div #trigger class=\"input-wrapper\">\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"searchText\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (input)=\"onSearchInput(searchInput.value)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div *ngIf=\"selected.length > 0\" class=\"chips\">\n <div\n *ngFor=\"let option of selected; trackBy: trackByOption\"\n class=\"chip\"\n [class.new]=\"option.new\"\n [class.existing]=\"!option.new\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [rivTooltip]=\"option.new && newTooltip ? newTooltip : undefined\"\n >\n <button\n type=\"button\"\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [size]=\"'xsmall'\"\n [disabled]=\"disabled\"\n (click)=\"removeOption(option)\"\n ></button>\n <ng-container *ngIf=\"chipTemplate; else defaultChip\">\n <ng-container\n *ngTemplateOutlet=\"chipTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultChip>\n <span class=\"chip-text\">{{ option.title }}</span>\n </ng-template>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'bottom-right'\"\n [allowedPositions]=\"['bottom-right']\"\n (close)=\"close()\"\n >\n <div class=\"dropdown\">\n <button\n *ngIf=\"showAddNew\"\n type=\"button\"\n class=\"dropdown-option add-new\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onAddNew()\"\n >\n <riv-icon [name]=\"'Plus'\" [size]=\"16\"></riv-icon>\n <span>{{ addNewLabel }} \"{{ searchText }}\"</span>\n </button>\n\n <div *ngIf=\"filteredOptions.length > 0\" class=\"options-list\">\n <button\n *ngFor=\"let option of filteredOptions; trackBy: trackByOption\"\n type=\"button\"\n class=\"dropdown-option\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(option)\"\n >\n <ng-container *ngIf=\"optionTemplate; else defaultOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultOption>\n <span class=\"option-title\">{{ option.title }}</span>\n <span *ngIf=\"option.subtitle\" class=\"option-subtitle\">{{\n option.subtitle\n }}</span>\n </ng-template>\n </button>\n </div>\n\n <div\n *ngIf=\"filteredOptions.length === 0 && !showAddNew\"\n class=\"no-results\"\n >\n No results found\n </div>\n </div>\n </riv-callout>\n </ng-container>\n</riv-input-label>\n", styles: [":host{display:block}.search-select{display:flex;flex-direction:column;gap:var(--size-small)}.search-select.disabled{opacity:.6;pointer-events:none}.input-wrapper{position:relative}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-medium);padding-right:calc(var(--size-xlarge) + var(--size-xsmall));height:var(--input-field-height-medium)}input::placeholder{color:var(--type-light-low-contrast)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}input.small{font:var(--input-small);padding:var(--size-small) var(--size-medium);height:var(--input-field-height-small)}input.large{font:var(--input-large);padding:var(--size-medium);height:var(--input-field-height-large)}.chips{display:flex;flex-wrap:wrap;gap:var(--size-small)}.chip{display:inline-flex;align-items:center;gap:var(--size-xsmall);border-radius:var(--border-radius-medium);padding:var(--size-xsmall) var(--size-medium) var(--size-xsmall) var(--size-small);font:var(--title-02);color:var(--type-light-high-contrast);max-width:100%}.chip.existing{background-color:var(--purp-10);border:var(--border-width) solid var(--border-light)}.chip.new{border:var(--border-width) dashed var(--border-light)}.chip.small{font:var(--input-small);padding:calc(var(--size-xsmall) / 2) var(--size-small)}.chip.large{font:var(--input-large);padding:var(--size-small) var(--size-medium)}.chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{min-width:200px;max-width:400px;max-height:300px;overflow-y:auto;padding:var(--size-large)}.dropdown-option{display:flex;align-items:center;gap:var(--size-small);width:100%;padding:var(--size-small) var(--size-xsmall);border-radius:var(--border-radius-medium);font:var(--input-medium);text-align:left;cursor:pointer;transition:background-color var(--short-transition)}.dropdown-option:hover{background-color:var(--surface-light-2)}.dropdown-option:active{background-color:var(--surface-light-3)}.dropdown-option.add-new{color:var(--purp-80);font-weight:var(--font-weight-heavy)}.dropdown-option.add-new riv-icon{color:var(--purp-80)}.options-list{display:flex;flex-direction:column;gap:var(--size-xsmall)}.option-title{color:var(--type-light-high-contrast);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-subtitle{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.no-results{padding:var(--size-medium);text-align:center;color:var(--type-light-low-contrast);font:var(--input-medium)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i5.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "directive", type: i6.OverlayDirective, selector: "[riv-overlay]" }, { kind: "directive", type: i7.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
142
|
+
}
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchSelectComponent, decorators: [{
|
|
144
|
+
type: Component,
|
|
145
|
+
args: [{ selector: 'riv-search-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage ?? ''\"\n>\n <div class=\"search-select\" [class.disabled]=\"disabled\">\n <div #trigger class=\"input-wrapper\">\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"searchText\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (input)=\"onSearchInput(searchInput.value)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div *ngIf=\"selected.length > 0\" class=\"chips\">\n <div\n *ngFor=\"let option of selected; trackBy: trackByOption\"\n class=\"chip\"\n [class.new]=\"option.new\"\n [class.existing]=\"!option.new\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [rivTooltip]=\"option.new && newTooltip ? newTooltip : undefined\"\n >\n <button\n type=\"button\"\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [size]=\"'xsmall'\"\n [disabled]=\"disabled\"\n (click)=\"removeOption(option)\"\n ></button>\n <ng-container *ngIf=\"chipTemplate; else defaultChip\">\n <ng-container\n *ngTemplateOutlet=\"chipTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultChip>\n <span class=\"chip-text\">{{ option.title }}</span>\n </ng-template>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'bottom-right'\"\n [allowedPositions]=\"['bottom-right']\"\n (close)=\"close()\"\n >\n <div class=\"dropdown\">\n <button\n *ngIf=\"showAddNew\"\n type=\"button\"\n class=\"dropdown-option add-new\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onAddNew()\"\n >\n <riv-icon [name]=\"'Plus'\" [size]=\"16\"></riv-icon>\n <span>{{ addNewLabel }} \"{{ searchText }}\"</span>\n </button>\n\n <div *ngIf=\"filteredOptions.length > 0\" class=\"options-list\">\n <button\n *ngFor=\"let option of filteredOptions; trackBy: trackByOption\"\n type=\"button\"\n class=\"dropdown-option\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(option)\"\n >\n <ng-container *ngIf=\"optionTemplate; else defaultOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultOption>\n <span class=\"option-title\">{{ option.title }}</span>\n <span *ngIf=\"option.subtitle\" class=\"option-subtitle\">{{\n option.subtitle\n }}</span>\n </ng-template>\n </button>\n </div>\n\n <div\n *ngIf=\"filteredOptions.length === 0 && !showAddNew\"\n class=\"no-results\"\n >\n No results found\n </div>\n </div>\n </riv-callout>\n </ng-container>\n</riv-input-label>\n", styles: [":host{display:block}.search-select{display:flex;flex-direction:column;gap:var(--size-small)}.search-select.disabled{opacity:.6;pointer-events:none}.input-wrapper{position:relative}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-medium);padding-right:calc(var(--size-xlarge) + var(--size-xsmall));height:var(--input-field-height-medium)}input::placeholder{color:var(--type-light-low-contrast)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}input.small{font:var(--input-small);padding:var(--size-small) var(--size-medium);height:var(--input-field-height-small)}input.large{font:var(--input-large);padding:var(--size-medium);height:var(--input-field-height-large)}.chips{display:flex;flex-wrap:wrap;gap:var(--size-small)}.chip{display:inline-flex;align-items:center;gap:var(--size-xsmall);border-radius:var(--border-radius-medium);padding:var(--size-xsmall) var(--size-medium) var(--size-xsmall) var(--size-small);font:var(--title-02);color:var(--type-light-high-contrast);max-width:100%}.chip.existing{background-color:var(--purp-10);border:var(--border-width) solid var(--border-light)}.chip.new{border:var(--border-width) dashed var(--border-light)}.chip.small{font:var(--input-small);padding:calc(var(--size-xsmall) / 2) var(--size-small)}.chip.large{font:var(--input-large);padding:var(--size-small) var(--size-medium)}.chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{min-width:200px;max-width:400px;max-height:300px;overflow-y:auto;padding:var(--size-large)}.dropdown-option{display:flex;align-items:center;gap:var(--size-small);width:100%;padding:var(--size-small) var(--size-xsmall);border-radius:var(--border-radius-medium);font:var(--input-medium);text-align:left;cursor:pointer;transition:background-color var(--short-transition)}.dropdown-option:hover{background-color:var(--surface-light-2)}.dropdown-option:active{background-color:var(--surface-light-3)}.dropdown-option.add-new{color:var(--purp-80);font-weight:var(--font-weight-heavy)}.dropdown-option.add-new riv-icon{color:var(--purp-80)}.options-list{display:flex;flex-direction:column;gap:var(--size-xsmall)}.option-title{color:var(--type-light-high-contrast);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-subtitle{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.no-results{padding:var(--size-medium);text-align:center;color:var(--type-light-low-contrast);font:var(--input-medium)}\n"] }]
|
|
146
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { options: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], selected: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], placeholder: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], addNewLabel: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], newTooltip: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], size: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], disabled: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}], label: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], help: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], required: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], state: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], errorMessage: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], optionTemplate: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], chipTemplate: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}], selectedChange: [{
|
|
175
|
+
type: Output
|
|
176
|
+
}], addNew: [{
|
|
177
|
+
type: Output
|
|
178
|
+
}], searchInput: [{
|
|
179
|
+
type: ViewChild,
|
|
180
|
+
args: ['searchInput']
|
|
181
|
+
}], trigger: [{
|
|
182
|
+
type: ViewChild,
|
|
183
|
+
args: ['trigger']
|
|
184
|
+
}] } });
|
|
185
|
+
(function (SearchSelectComponent) {
|
|
186
|
+
SearchSelectComponent.Sizes = ['small', 'medium', 'large'];
|
|
187
|
+
SearchSelectComponent.States = ['valid', 'warning', 'error'];
|
|
188
|
+
})(SearchSelectComponent || (SearchSelectComponent = {}));
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zZWFyY2gtc2VsZWN0L3NlYXJjaC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2VhcmNoLXNlbGVjdC9zZWFyY2gtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQVMzQixNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQTZCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBR25ELFlBQU8sR0FBUSxFQUFFLENBQUM7UUFHbEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUduQixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUcvQixnQkFBVyxHQUFXLEtBQUssQ0FBQztRQU01QixTQUFJLEdBQStCLFFBQVEsQ0FBQztRQUc1QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBUzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsVUFBSyxHQUFnQyxPQUFPLENBQUM7UUFZcEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRzdDLGdCQUFXLEdBQXdDLElBQUksQ0FBQztRQUd4RCxZQUFPLEdBQXNDLElBQUksQ0FBQztRQUVsRCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFD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S0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlHLGNBQWM7c0JBRHRCLE1BQU07Z0JBSUUsTUFBTTtzQkFEZCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQUl4QixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUzs7QUFrSXRCLFdBQWlCLHFCQUFxQjtJQUN2QiwyQkFBSyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQVUsQ0FBQztJQUc5Qyw0QkFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQVUsQ0FBQztBQUkvRCxDQUFDLEVBUmdCLHFCQUFxQixLQUFyQixxQkFBcUIsUUFRckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IEZ1c2UgZnJvbSAnZnVzZS5qcyc7XG5pbXBvcnQgeyBSaXZTZWxlY3QgfSBmcm9tICcuLi9zZWxlY3Qvc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2VhcmNoLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hTZWxlY3RDb21wb25lbnQ8VCBleHRlbmRzIFNlYXJjaFNlbGVjdENvbXBvbmVudC5PcHRpb24+XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzXG57XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBASW5wdXQoKVxuICBvcHRpb25zOiBUW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZDogVFtdID0gW107XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWFyY2gnO1xuXG4gIEBJbnB1dCgpXG4gIGFkZE5ld0xhYmVsOiBzdHJpbmcgPSAnQWRkJztcblxuICBASW5wdXQoKVxuICBuZXdUb29sdGlwPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6IFNlYXJjaFNlbGVjdENvbXBvbmVudC5TaXplID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBsYWJlbD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBoZWxwPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc3RhdGU6IFNlYXJjaFNlbGVjdENvbXBvbmVudC5TdGF0ZSA9ICd2YWxpZCc7XG5cbiAgQElucHV0KClcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG5cbiAgQElucHV0KClcbiAgY2hpcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGFkZE5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JylcbiAgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyJylcbiAgdHJpZ2dlcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlcmVkT3B0aW9uczogVFtdID0gW107XG4gIHByaXZhdGUgZnVzZTogRnVzZTxUPiB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVGdXNlKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZCddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZ1c2UoKTogdm9pZCB7XG4gICAgdGhpcy5mdXNlID0gbmV3IEZ1c2UodGhpcy5vcHRpb25zLCB7XG4gICAgICBrZXlzOiBbJ3RpdGxlJywgJ3N1YnRpdGxlJ10sXG4gICAgICB0aHJlc2hvbGQ6IDAuMyxcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICB9XG5cbiAgb25TZWFyY2hJbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgICBpZiAoIXRoaXMuaXNPcGVuICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dCB8fCAhdGhpcy5mdXNlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZ2V0VW5zZWxlY3RlZE9wdGlvbnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZnVzZS5zZWFyY2godGhpcy5zZWFyY2hUZXh0KTtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gcmVzdWx0c1xuICAgICAgICAubWFwKHJlc3VsdCA9PiByZXN1bHQuaXRlbSlcbiAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gIXRoaXMuaXNTZWxlY3RlZChvcHRpb24pKTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFVuc2VsZWN0ZWRPcHRpb25zKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIob3B0aW9uID0+ICF0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSk7XG4gIH1cblxuICBpc1NlbGVjdGVkKG9wdGlvbjogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLnNvbWUocyA9PiBzLmlkID09PSBvcHRpb24uaWQpO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHJldHVybjtcbiAgICBjb25zdCBuZXdTZWxlY3RlZCA9IFsuLi50aGlzLnNlbGVjdGVkLCBvcHRpb25dO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZCk7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIHJlbW92ZU9wdGlvbihvcHRpb246IFQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQuZmlsdGVyKHMgPT4gcy5pZCAhPT0gb3B0aW9uLmlkKTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWQpO1xuICB9XG5cbiAgb25BZGROZXcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHQudHJpbSgpKSByZXR1cm47XG4gICAgdGhpcy5hZGROZXcuZW1pdCh0aGlzLnNlYXJjaFRleHQudHJpbSgpKTtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvbklucHV0Qmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQ2xpY2tJbnNpZGVDb21wb25lbnQoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSwgMTUwKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDbGlja0luc2lkZUNvbXBvbmVudCh0YXJnZXQ6IEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0YXJnZXQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyh0YXJnZXQpID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0lucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgLy8gRW50ZXIgYmVsb25ncyB0byB0aGUgZHJvcGRvd24gd2hpbGUgaXQncyBvcGVuLCBldmVuIHdoZW4gaXQgZG9lc24ndFxuICAgICAgLy8gYWRkIGFueXRoaW5nLCBzbyBpdCBkb2Vzbid0IHN1Ym1pdCBhIHN1cnJvdW5kaW5nIGZvcm0gbWlkLXNlYXJjaC5cbiAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMub25BZGROZXcoKTtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeU9wdGlvbihfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBUKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xuICB9XG5cbiAgZ2V0IHNob3dBZGROZXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zZWFyY2hUZXh0LnRyaW0oKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFNlYXJjaFNlbGVjdENvbXBvbmVudCB7XG4gIGV4cG9ydCBjb25zdCBTaXplcyA9IFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNpemVzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBTdGF0ZXMgPSBbJ3ZhbGlkJywgJ3dhcm5pbmcnLCAnZXJyb3InXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgU3RhdGUgPSAodHlwZW9mIFN0YXRlcylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBPcHRpb24gPSBSaXZTZWxlY3QuQmFzZU9wdGlvbiAmIHsgbmV3OiBib29sZWFuIH07XG59XG4iLCI8cml2LWlucHV0LWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtoZWxwXT1cImhlbHBcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbc3RhdGVdPVwic3RhdGVcIlxuICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZSA/PyAnJ1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VsZWN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiAjdHJpZ2dlciBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGV4dFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgICBbY2xhc3MubGFyZ2VdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICAgIFtjbGFzcy53YXJuaW5nXT1cInN0YXRlID09PSAnd2FybmluZydcIlxuICAgICAgICBbY2xhc3MuZXJyb3JdPVwic3RhdGUgPT09ICdlcnJvcidcIlxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dChzZWFyY2hJbnB1dC52YWx1ZSlcIlxuICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIlxuICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZC5sZW5ndGggPiAwXCIgY2xhc3M9XCJjaGlwc1wiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNlbGVjdGVkOyB0cmFja0J5OiB0cmFja0J5T3B0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJjaGlwXCJcbiAgICAgICAgW2NsYXNzLm5ld109XCJvcHRpb24ubmV3XCJcbiAgICAgICAgW2NsYXNzLmV4aXN0aW5nXT1cIiFvcHRpb24ubmV3XCJcbiAgICAgICAgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgICBbY2xhc3MubGFyZ2VdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICAgIFtyaXZUb29sdGlwXT1cIm9wdGlvbi5uZXcgJiYgbmV3VG9vbHRpcCA/IG5ld1Rvb2x0aXAgOiB1bmRlZmluZWRcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgW2ljb25dPVwiJ1gnXCJcbiAgICAgICAgICBbc2l6ZV09XCIneHNtYWxsJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlT3B0aW9uKG9wdGlvbilcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlwVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENoaXBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNoaXBUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb246IG9wdGlvbiB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGlwPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcC10ZXh0XCI+e3sgb3B0aW9uLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW5cIj5cbiAgICA8cml2LWNhbGxvdXRcbiAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgW2FuY2hvcl09XCJ0cmlnZ2VyXCJcbiAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tcmlnaHQnXCJcbiAgICAgIFthbGxvd2VkUG9zaXRpb25zXT1cIlsnYm90dG9tLXJpZ2h0J11cIlxuICAgICAgKGNsb3NlKT1cImNsb3NlKClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93QWRkTmV3XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbiBhZGQtbmV3XCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BZGROZXcoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cml2LWljb24gW25hbWVdPVwiJ1BsdXMnXCIgW3NpemVdPVwiMTZcIj48L3Jpdi1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7IGFkZE5ld0xhYmVsIH19IFwie3sgc2VhcmNoVGV4dCB9fVwiPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm9wdGlvbnMtbGlzdFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zOyB0cmFja0J5OiB0cmFja0J5T3B0aW9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3B0aW9uKG9wdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0T3B0aW9uXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9wdGlvblRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogb3B0aW9uIH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb24tdGl0bGVcIj57eyBvcHRpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9uLnN1YnRpdGxlXCIgY2xhc3M9XCJvcHRpb24tc3VidGl0bGVcIj57e1xuICAgICAgICAgICAgICAgIG9wdGlvbi5zdWJ0aXRsZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDAgJiYgIXNob3dBZGROZXdcIlxuICAgICAgICAgIGNsYXNzPVwibm8tcmVzdWx0c1wiXG4gICAgICAgID5cbiAgICAgICAgICBObyByZXN1bHRzIGZvdW5kXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9yaXYtY2FsbG91dD5cbiAgPC9uZy1jb250YWluZXI+XG48L3Jpdi1pbnB1dC1sYWJlbD5cbiJdfQ==
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { debounce } from 'lodash';
|
|
3
|
+
import { distinctUntilChanged, map, skip } from 'rxjs';
|
|
4
|
+
import { InputLabelComponent } from '../../input-label/input-label.component';
|
|
5
|
+
import { RivSelect } from '../state';
|
|
6
|
+
import { defaultSelectAllowedCalloutPositions } from '../../../overlay/callout/select-callout-defaults';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "../../button/button.component";
|
|
10
|
+
import * as i3 from "../../../overlay/callout/callout.component";
|
|
11
|
+
import * as i4 from "../../../overlay/callout/help/help.component";
|
|
12
|
+
import * as i5 from "../../../icon/icon.component";
|
|
13
|
+
import * as i6 from "../../input-label/input-label.component";
|
|
14
|
+
import * as i7 from "../../../load/loading-cover/loading-cover.component";
|
|
15
|
+
import * as i8 from "../../../overlay/overlay.directive";
|
|
16
|
+
import * as i9 from "../../search/search.component";
|
|
17
|
+
import * as i10 from "../select-node/select-node.component";
|
|
18
|
+
import * as i11 from "../../../visualization/zero-state/zero-state.component";
|
|
19
|
+
import * as i12 from "../../../format/pipes/number.pipe";
|
|
20
|
+
export class SelectComponent extends InputLabelComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.size = 'medium';
|
|
24
|
+
this.disabled = false;
|
|
25
|
+
this.locked = false;
|
|
26
|
+
/** Stretches a custom trigger to fill the width of this component. */
|
|
27
|
+
this.grow = false;
|
|
28
|
+
this.allowedCalloutPositions = [
|
|
29
|
+
...defaultSelectAllowedCalloutPositions,
|
|
30
|
+
];
|
|
31
|
+
this.preferredCalloutPosition = 'bottom-right';
|
|
32
|
+
this.orderByOptionGroups = [
|
|
33
|
+
{
|
|
34
|
+
options: [
|
|
35
|
+
{
|
|
36
|
+
id: 'title',
|
|
37
|
+
title: 'A-Z',
|
|
38
|
+
help: 'Sorts values in alphanumeric order (A-Z, 0-9)',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'count',
|
|
42
|
+
title: 'Volume',
|
|
43
|
+
help: 'Sorts values by count (highest to lowest)',
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
this.searchChange = debounce((query) => {
|
|
49
|
+
this.manager?.actions?.next({ type: 'searchChange', payload: query });
|
|
50
|
+
}, 500);
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.orderByManager = RivSelect.createInMemoryManager(() => this.orderByOptionGroups, {
|
|
54
|
+
showSingleSelected: true,
|
|
55
|
+
initialState: {
|
|
56
|
+
selection: {
|
|
57
|
+
selected: new RivSelect.OptionSet([
|
|
58
|
+
this.orderByOptionGroups[0].options.find(({ id }) => id === 'title'),
|
|
59
|
+
]),
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
this.orderBySubscription = this.orderByManager.state
|
|
64
|
+
.pipe(map(s => [...s.selection.selected][0]?.id ?? null), distinctUntilChanged((prev, current) => prev === current), skip(1))
|
|
65
|
+
.subscribe(order => {
|
|
66
|
+
this.manager?.actions.next({
|
|
67
|
+
type: 'orderChange',
|
|
68
|
+
payload: order,
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
ngOnDestroy() {
|
|
73
|
+
this.orderBySubscription?.unsubscribe();
|
|
74
|
+
}
|
|
75
|
+
getTrigger() {
|
|
76
|
+
return (this.customTriggerButton?.nativeElement ??
|
|
77
|
+
this.standardTriggerButton?.nativeElement);
|
|
78
|
+
}
|
|
79
|
+
allowedOpen() {
|
|
80
|
+
if (!this.disabled && !this.locked) {
|
|
81
|
+
this.manager?.actions.next({
|
|
82
|
+
type: 'openChange',
|
|
83
|
+
open: true,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// preventDefault keeps a surrounding dialog from closing on the same Escape.
|
|
88
|
+
escapeClose(event, open) {
|
|
89
|
+
if (open && !event.defaultPrevented) {
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
this.manager?.actions.next({ type: 'openChange', open: false });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
selectChange(multi, id) {
|
|
95
|
+
if (multi) {
|
|
96
|
+
this.manager?.actions.next({
|
|
97
|
+
type: 'toggleOptionSelected',
|
|
98
|
+
id,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.manager?.actions.next({
|
|
103
|
+
type: 'setSelectedOption',
|
|
104
|
+
id,
|
|
105
|
+
});
|
|
106
|
+
this.manager?.actions.next({
|
|
107
|
+
type: 'openChange',
|
|
108
|
+
open: false,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
getSelectedOrderByOption(state) {
|
|
113
|
+
return (this.orderByOptionGroups[0].options.find(({ id }) => id === state.query.order) ?? null);
|
|
114
|
+
}
|
|
115
|
+
// trackBySymbol for our option groups that don't have a good identity.
|
|
116
|
+
// this lazily attaches a Javascript symbol to any value and returns it.
|
|
117
|
+
// Symbols are guaranteed unique and they do not exist in JSON, so they
|
|
118
|
+
// do not interfere with any types or serialization for API calls. The
|
|
119
|
+
// only purpose they serve is to tell ngFor which objects are still in
|
|
120
|
+
// the array. Note: this is only safe on an array of objects.
|
|
121
|
+
trackBySymbol(_, value) {
|
|
122
|
+
if (!value._trackingSymbol) {
|
|
123
|
+
value._trackingSymbol = Symbol();
|
|
124
|
+
}
|
|
125
|
+
return value._trackingSymbol;
|
|
126
|
+
}
|
|
127
|
+
trackByOption(_, option) {
|
|
128
|
+
return option.id;
|
|
129
|
+
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectComponent, selector: "riv-select", inputs: { manager: "manager", size: "size", disabled: "disabled", locked: "locked", grow: "grow", allowedCalloutPositions: "allowedCalloutPositions", preferredCalloutPosition: "preferredCalloutPosition" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "customSelectedOptionsTemplate", first: true, predicate: ["customSelectedOptions"], descendants: true }, { propertyName: "optionTemplate", first: true, predicate: ["option"], descendants: true }, { propertyName: "optionTitleTemplate", first: true, predicate: ["optionTitle"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "footerTemplate", first: true, predicate: ["footer"], descendants: true }], viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-template #content>\n <riv-loading-cover [loading]=\"s.load.loading\">\n <div\n class=\"content-body\"\n [class.inline]=\"s.display.inline\"\n (keydown.escape)=\"escapeClose($event, s.display.open)\"\n [ngStyle]=\"{\n 'max-height': s.display.maxHeight,\n 'max-width': s.display.maxWidth,\n 'min-height': s.display.minHeight,\n 'min-width': s.display.minWidth\n }\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <riv-search\n *ngIf=\"s.query.showSearch\"\n [value]=\"s.query.search\"\n [placeholder]=\"s.query.searchPlaceholder\"\n [autoFocus]=\"true\"\n (valueChange)=\"searchChange($event)\"\n ></riv-search>\n <div *ngIf=\"s.query.showOrder\">\n <span class=\"order-by\">Sort by:</span>\n <riv-select [manager]=\"orderByManager\">\n <ng-template #trigger let-state=\"state\">\n <span\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'small'\"\n [icon]=\"state.display.open ? 'ChevronUp' : 'ChevronDown'\"\n [iconPosition]=\"'last'\"\n >\n {{ getSelectedOrderByOption(s)?.title }}\n </span>\n </ng-template>\n </riv-select>\n </div>\n <div class=\"options\">\n <riv-select-node\n *ngIf=\"\n s.selection.allowMultiSelect &&\n s.selection.allowSelectAll &&\n !s.display.zeroStateMessage\n \"\n [mode]=\"'multi'\"\n [node]=\"{\n id: '__NOOP__',\n title: s.query.search ? 'Select all matching' : 'Select all',\n selected: s.selection.visibleSelectionState,\n selectable: true,\n expandable: false,\n expanded: false\n }\"\n (selectChange)=\"\n manager?.actions?.next({ type: 'visibleSelectedChange' })\n \"\n ></riv-select-node>\n <div\n *ngFor=\"let group of s.fullOptionGroups; trackBy: trackBySymbol\"\n class=\"group\"\n [class.divider]=\"s.display.dividers\"\n >\n <span *ngIf=\"group.header; let header\" class=\"header\">\n {{ header }}\n <riv-help\n *ngIf=\"group.help; let help\"\n [help]=\"help\"\n [size]=\"12\"\n ></riv-help>\n </span>\n <ng-container\n *ngFor=\"let option of group.options; trackBy: trackByOption\"\n >\n <ng-container *ngIf=\"optionTemplate; else standardTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ node: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #standardTemplate>\n <riv-select-node\n [mode]=\"s.selection.allowMultiSelect ? 'multi' : 'single'\"\n [node]=\"option\"\n [showSingleSelected]=\"s.display.showSingleSelected\"\n [titleTemplate]=\"optionTitleTemplate\"\n (selectChange)=\"\n selectChange(s.selection.allowMultiSelect, $event)\n \"\n (expandChange)=\"\n manager?.actions?.next({\n type: 'toggleOptionExpanded',\n id: $event\n })\n \"\n ></riv-select-node>\n </ng-template>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.display.displayLimitMessage; let message\"\n class=\"display-limit\"\n >\n {{ message }}\n </span>\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </div>\n <footer *ngIf=\"footerTemplate\" class=\"custom-footer\">\n <ng-container\n *ngTemplateOutlet=\"footerTemplate; context: { state: s }\"\n ></ng-container>\n </footer>\n </div>\n </riv-loading-cover>\n </ng-template>\n\n <ng-container *ngIf=\"!s.display.inline; else content\">\n <ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n (keydown.escape)=\"escapeClose($event, s.display.open)\"\n [disabled]=\"disabled || locked\"\n [attr.aria-disabled]=\"disabled || locked ? 'true' : null\"\n type=\"button\"\n class=\"custom-trigger-button\"\n [class.grow]=\"grow\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ state: s }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (click)=\"allowedOpen()\"\n (keydown.escape)=\"escapeClose($event, s.display.open)\"\n [disabled]=\"disabled || locked\"\n [attr.aria-disabled]=\"disabled || locked ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"s.selection.selected.size; else placeholderValue\"\n >\n <ng-container\n *ngIf=\"\n customSelectedOptionsTemplate;\n else standardSelectedOptionsTemplate\n \"\n >\n <span class=\"value\">\n <ng-container\n [ngTemplateOutlet]=\"customSelectedOptionsTemplate\"\n [ngTemplateOutletContext]=\"{ selected: s.selection.selected }\"\n ></ng-container>\n </span>\n </ng-container>\n <ng-template #standardSelectedOptionsTemplate>\n <span class=\"value\">{{\n s.display.formattedSelectedOptions\n }}</span>\n <span *ngIf=\"s.display.pillCount > 1\" class=\"selected-count\">\n {{ s.display.pillCount | rivNumber }}\n </span>\n </ng-template>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ s.display.placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon\n *ngIf=\"!locked\"\n [name]=\"s.display.open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"20\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n </ng-template>\n\n <ng-container *ngIf=\"s.display.open\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"allowedCalloutPositions\"\n [preferredPosition]=\"preferredCalloutPosition\"\n (close)=\"manager?.actions?.next({ type: 'openChange', open: false })\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);cursor:pointer;padding-left:var(--size-small)}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1);cursor:default}.selected-count{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);font-weight:var(--font-weight-normal);color:var(--type-dark-body);border-radius:calc(var(--base-grid-size) * 3);background-color:var(--brand);padding:calc(var(--base-grid-size) / 4) calc(var(--base-grid-size) * 2);align-self:center}.value{font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) 0;flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-low-contrast)}.trigger.small .value{font:var(--input-small)}.trigger.large .value{font:var(--input-large);padding:var(--size-medium) var(--size-xsmall)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5)}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.custom-trigger-button{max-width:100%}.custom-trigger-button.grow{display:flex;flex-direction:column;width:100%}.order-by{font:var(--input-medium);color:var(--type-light-low-contrast)}.content-body{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-large)}.content-body:not(.inline){max-height:50vh;min-width:calc(var(--base-grid-size) * 75);max-width:50vw}.options{flex-grow:1;overflow-y:auto;gap:var(--size-medium)}.options,.group{display:flex;flex-direction:column}.group{gap:var(--size-xsmall)}.group.divider:not(:last-child){padding-bottom:var(--size-medium);border-bottom:var(--border-width) solid var(--border-light)}.display-limit{font:var(--body-small);color:var(--type-light-disabled);padding:var(--size-small);text-align:center}.header{font:var(--input-medium);color:var(--type-light-low-contrast);padding:var(--size-xsmall) 0;display:flex;align-items:center;gap:var(--size-small)}.custom-footer{padding-top:var(--size-large);border-top:var(--border-width) solid var(--border-light)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i4.HelpComponent, selector: "riv-help", inputs: ["help", "size"] }, { kind: "component", type: i5.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i6.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "component", type: i7.LoadingCoverComponent, selector: "riv-loading-cover", inputs: ["loading", "loadingSize", "zIndexOverride", "errorMessage"] }, { kind: "directive", type: i8.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i9.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "component", type: SelectComponent, selector: "riv-select", inputs: ["manager", "size", "disabled", "locked", "grow", "allowedCalloutPositions", "preferredCalloutPosition"] }, { kind: "component", type: i10.SelectNodeComponent, selector: "riv-select-node", inputs: ["mode", "node", "showSingleSelected", "titleTemplate"], outputs: ["selectChange", "expandChange"] }, { kind: "component", type: i11.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
132
|
+
}
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ selector: 'riv-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-template #content>\n <riv-loading-cover [loading]=\"s.load.loading\">\n <div\n class=\"content-body\"\n [class.inline]=\"s.display.inline\"\n (keydown.escape)=\"escapeClose($event, s.display.open)\"\n [ngStyle]=\"{\n 'max-height': s.display.maxHeight,\n 'max-width': s.display.maxWidth,\n 'min-height': s.display.minHeight,\n 'min-width': s.display.minWidth\n }\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <riv-search\n *ngIf=\"s.query.showSearch\"\n [value]=\"s.query.search\"\n [placeholder]=\"s.query.searchPlaceholder\"\n [autoFocus]=\"true\"\n (valueChange)=\"searchChange($event)\"\n ></riv-search>\n <div *ngIf=\"s.query.showOrder\">\n <span class=\"order-by\">Sort by:</span>\n <riv-select [manager]=\"orderByManager\">\n <ng-template #trigger let-state=\"state\">\n <span\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'small'\"\n [icon]=\"state.display.open ? 'ChevronUp' : 'ChevronDown'\"\n [iconPosition]=\"'last'\"\n >\n {{ getSelectedOrderByOption(s)?.title }}\n </span>\n </ng-template>\n </riv-select>\n </div>\n <div class=\"options\">\n <riv-select-node\n *ngIf=\"\n s.selection.allowMultiSelect &&\n s.selection.allowSelectAll &&\n !s.display.zeroStateMessage\n \"\n [mode]=\"'multi'\"\n [node]=\"{\n id: '__NOOP__',\n title: s.query.search ? 'Select all matching' : 'Select all',\n selected: s.selection.visibleSelectionState,\n selectable: true,\n expandable: false,\n expanded: false\n }\"\n (selectChange)=\"\n manager?.actions?.next({ type: 'visibleSelectedChange' })\n \"\n ></riv-select-node>\n <div\n *ngFor=\"let group of s.fullOptionGroups; trackBy: trackBySymbol\"\n class=\"group\"\n [class.divider]=\"s.display.dividers\"\n >\n <span *ngIf=\"group.header; let header\" class=\"header\">\n {{ header }}\n <riv-help\n *ngIf=\"group.help; let help\"\n [help]=\"help\"\n [size]=\"12\"\n ></riv-help>\n </span>\n <ng-container\n *ngFor=\"let option of group.options; trackBy: trackByOption\"\n >\n <ng-container *ngIf=\"optionTemplate; else standardTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ node: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #standardTemplate>\n <riv-select-node\n [mode]=\"s.selection.allowMultiSelect ? 'multi' : 'single'\"\n [node]=\"option\"\n [showSingleSelected]=\"s.display.showSingleSelected\"\n [titleTemplate]=\"optionTitleTemplate\"\n (selectChange)=\"\n selectChange(s.selection.allowMultiSelect, $event)\n \"\n (expandChange)=\"\n manager?.actions?.next({\n type: 'toggleOptionExpanded',\n id: $event\n })\n \"\n ></riv-select-node>\n </ng-template>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.display.displayLimitMessage; let message\"\n class=\"display-limit\"\n >\n {{ message }}\n </span>\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </div>\n <footer *ngIf=\"footerTemplate\" class=\"custom-footer\">\n <ng-container\n *ngTemplateOutlet=\"footerTemplate; context: { state: s }\"\n ></ng-container>\n </footer>\n </div>\n </riv-loading-cover>\n </ng-template>\n\n <ng-container *ngIf=\"!s.display.inline; else content\">\n <ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n (keydown.escape)=\"escapeClose($event, s.display.open)\"\n [disabled]=\"disabled || locked\"\n [attr.aria-disabled]=\"disabled || locked ? 'true' : null\"\n type=\"button\"\n class=\"custom-trigger-button\"\n [class.grow]=\"grow\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ state: s }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (click)=\"allowedOpen()\"\n (keydown.escape)=\"escapeClose($event, s.display.open)\"\n [disabled]=\"disabled || locked\"\n [attr.aria-disabled]=\"disabled || locked ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"s.selection.selected.size; else placeholderValue\"\n >\n <ng-container\n *ngIf=\"\n customSelectedOptionsTemplate;\n else standardSelectedOptionsTemplate\n \"\n >\n <span class=\"value\">\n <ng-container\n [ngTemplateOutlet]=\"customSelectedOptionsTemplate\"\n [ngTemplateOutletContext]=\"{ selected: s.selection.selected }\"\n ></ng-container>\n </span>\n </ng-container>\n <ng-template #standardSelectedOptionsTemplate>\n <span class=\"value\">{{\n s.display.formattedSelectedOptions\n }}</span>\n <span *ngIf=\"s.display.pillCount > 1\" class=\"selected-count\">\n {{ s.display.pillCount | rivNumber }}\n </span>\n </ng-template>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ s.display.placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon\n *ngIf=\"!locked\"\n [name]=\"s.display.open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"20\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n </ng-template>\n\n <ng-container *ngIf=\"s.display.open\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"allowedCalloutPositions\"\n [preferredPosition]=\"preferredCalloutPosition\"\n (close)=\"manager?.actions?.next({ type: 'openChange', open: false })\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);cursor:pointer;padding-left:var(--size-small)}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1);cursor:default}.selected-count{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);font-weight:var(--font-weight-normal);color:var(--type-dark-body);border-radius:calc(var(--base-grid-size) * 3);background-color:var(--brand);padding:calc(var(--base-grid-size) / 4) calc(var(--base-grid-size) * 2);align-self:center}.value{font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) 0;flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-low-contrast)}.trigger.small .value{font:var(--input-small)}.trigger.large .value{font:var(--input-large);padding:var(--size-medium) var(--size-xsmall)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5)}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.custom-trigger-button{max-width:100%}.custom-trigger-button.grow{display:flex;flex-direction:column;width:100%}.order-by{font:var(--input-medium);color:var(--type-light-low-contrast)}.content-body{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-large)}.content-body:not(.inline){max-height:50vh;min-width:calc(var(--base-grid-size) * 75);max-width:50vw}.options{flex-grow:1;overflow-y:auto;gap:var(--size-medium)}.options,.group{display:flex;flex-direction:column}.group{gap:var(--size-xsmall)}.group.divider:not(:last-child){padding-bottom:var(--size-medium);border-bottom:var(--border-width) solid var(--border-light)}.display-limit{font:var(--body-small);color:var(--type-light-disabled);padding:var(--size-small);text-align:center}.header{font:var(--input-medium);color:var(--type-light-low-contrast);padding:var(--size-xsmall) 0;display:flex;align-items:center;gap:var(--size-small)}.custom-footer{padding-top:var(--size-large);border-top:var(--border-width) solid var(--border-light)}\n"] }]
|
|
136
|
+
}], propDecorators: { manager: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], size: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], disabled: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], locked: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], grow: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], allowedCalloutPositions: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], preferredCalloutPosition: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], triggerTemplate: [{
|
|
151
|
+
type: ContentChild,
|
|
152
|
+
args: ['trigger']
|
|
153
|
+
}], customSelectedOptionsTemplate: [{
|
|
154
|
+
type: ContentChild,
|
|
155
|
+
args: ['customSelectedOptions']
|
|
156
|
+
}], optionTemplate: [{
|
|
157
|
+
type: ContentChild,
|
|
158
|
+
args: ['option']
|
|
159
|
+
}], optionTitleTemplate: [{
|
|
160
|
+
type: ContentChild,
|
|
161
|
+
args: ['optionTitle']
|
|
162
|
+
}], headerTemplate: [{
|
|
163
|
+
type: ContentChild,
|
|
164
|
+
args: ['header']
|
|
165
|
+
}], footerTemplate: [{
|
|
166
|
+
type: ContentChild,
|
|
167
|
+
args: ['footer']
|
|
168
|
+
}], customTriggerButton: [{
|
|
169
|
+
type: ViewChild,
|
|
170
|
+
args: ['customTriggerButton']
|
|
171
|
+
}], standardTriggerButton: [{
|
|
172
|
+
type: ViewChild,
|
|
173
|
+
args: ['standardTriggerButton']
|
|
174
|
+
}] } });
|
|
175
|
+
(function (SelectComponent) {
|
|
176
|
+
SelectComponent.Sizes = ['small', 'medium', 'large'];
|
|
177
|
+
})(SelectComponent || (SelectComponent = {}));
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2lucHV0L3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2lucHV0L3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFckMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXhHLE1BQU0sT0FBTyxlQUNYLFNBQVEsbUJBQW1CO0lBUDdCOztRQWNFLFNBQUksR0FBeUIsUUFBUSxDQUFDO1FBR3RDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4QixzRUFBc0U7UUFFdEUsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUd0Qiw0QkFBdUIsR0FBd0M7WUFDN0QsR0FBRyxvQ0FBb0M7U0FDeEMsQ0FBQztRQUdGLDZCQUF3QixHQUFzQyxjQUFjLENBQUM7UUFnSHBFLHdCQUFtQixHQUMxQjtZQUNFO2dCQUNFLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxFQUFFLEVBQUUsT0FBTzt3QkFD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RG5NYSxlQUFlOzs0RkFBZixlQUFlO2tCQU4zQixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTTs4QkFPL0MsT0FBTztzQkFETixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBTU4sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxTQUFTO2dCQUl2Qiw2QkFBNkI7c0JBRDVCLFlBQVk7dUJBQUMsdUJBQXVCO2dCQU1yQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsUUFBUTtnQkFRdEIsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGFBQWE7Z0JBSTNCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUl0QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsUUFBUTtnQkFJdEIsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLHFCQUFxQjtnQkFJaEMscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLHVCQUF1Qjs7QUFxSXBDLFdBQWlCLGVBQWU7SUFPakIscUJBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFN0QsQ0FBQyxFQVRnQixlQUFlLEtBQWYsZUFBZSxRQVMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNraXAsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaXZTZWxlY3QgfSBmcm9tICcuLi9zdGF0ZSc7XG5pbXBvcnQgeyBDYWxsb3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vb3ZlcmxheS9jYWxsb3V0L2NhbGxvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IGRlZmF1bHRTZWxlY3RBbGxvd2VkQ2FsbG91dFBvc2l0aW9ucyB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXkvY2FsbG91dC9zZWxlY3QtY2FsbG91dC1kZWZhdWx0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudDxPIGV4dGVuZHMgUml2U2VsZWN0LkJhc2VPcHRpb24+XG4gIGV4dGVuZHMgSW5wdXRMYWJlbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZTZWxlY3QuTWFuYWdlcjxPPjtcblxuICBASW5wdXQoKVxuICBzaXplOiBTZWxlY3RDb21wb25lbnQuU2l6ZSA9ICdtZWRpdW0nO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbG9ja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFN0cmV0Y2hlcyBhIGN1c3RvbSB0cmlnZ2VyIHRvIGZpbGwgdGhlIHdpZHRoIG9mIHRoaXMgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKVxuICBncm93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWxsb3dlZENhbGxvdXRQb3NpdGlvbnM6IENhbGxvdXRDb21wb25lbnQuQW5jaG9yZWRQb3NpdGlvbltdID0gW1xuICAgIC4uLmRlZmF1bHRTZWxlY3RBbGxvd2VkQ2FsbG91dFBvc2l0aW9ucyxcbiAgXTtcblxuICBASW5wdXQoKVxuICBwcmVmZXJyZWRDYWxsb3V0UG9zaXRpb246IENhbGxvdXRDb21wb25lbnQuQW5jaG9yZWRQb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnO1xuXG4gIEBDb250ZW50Q2hpbGQoJ3RyaWdnZXInKVxuICB0cmlnZ2VyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IHN0YXRlOiBSaXZTZWxlY3QuRnVsbFN0YXRlPE8+IH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2N1c3RvbVNlbGVjdGVkT3B0aW9ucycpXG4gIGN1c3RvbVNlbGVjdGVkT3B0aW9uc1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8e1xuICAgIHNlbGVjdGVkOiBSaXZTZWxlY3QuT3B0aW9uU2V0PE8+O1xuICB9PjtcblxuICBAQ29udGVudENoaWxkKCdvcHRpb24nKVxuICBvcHRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgbm9kZTogUml2U2VsZWN0LkZ1bGxPcHRpb248Tz4gfT47XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIG9ubHkgYW4gb3B0aW9uJ3MgdGl0bGUsIGtlZXBpbmcgdGhlIHN0YW5kYXJkIHJvdydzIGNoZWNrYm94LFxuICAgKiBjb3VudCwgaGVscCwgYW5kIGV4cGFuZCBjb250cm9scy4gSWdub3JlZCB3aGVuIGAjb3B0aW9uYCBpcyBzZXQuXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdvcHRpb25UaXRsZScpXG4gIG9wdGlvblRpdGxlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG5vZGU6IFJpdlNlbGVjdC5GdWxsT3B0aW9uPE8+IH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicpXG4gIGhlYWRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBzdGF0ZTogUml2U2VsZWN0LkZ1bGxTdGF0ZTxPPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdmb290ZXInKVxuICBmb290ZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlNlbGVjdC5GdWxsU3RhdGU8Tz4gfT47XG5cbiAgQFZpZXdDaGlsZCgnY3VzdG9tVHJpZ2dlckJ1dHRvbicpXG4gIGN1c3RvbVRyaWdnZXJCdXR0b24/OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3N0YW5kYXJkVHJpZ2dlckJ1dHRvbicpXG4gIHN0YW5kYXJkVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG5cbiAgb3JkZXJCeU1hbmFnZXI/OiBSaXZTZWxlY3QuTWFuYWdlcjxTZWxlY3RDb21wb25lbnQuT3JkZXJCeU9wdGlvbj47XG4gIHByaXZhdGUgb3JkZXJCeVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9yZGVyQnlNYW5hZ2VyID0gUml2U2VsZWN0LmNyZWF0ZUluTWVtb3J5TWFuYWdlcihcbiAgICAgICgpID0+IHRoaXMub3JkZXJCeU9wdGlvbkdyb3VwcyxcbiAgICAgIHtcbiAgICAgICAgc2hvd1NpbmdsZVNlbGVjdGVkOiB0cnVlLFxuICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiBuZXcgUml2U2VsZWN0Lk9wdGlvblNldChbXG4gICAgICAgICAgICAgIHRoaXMub3JkZXJCeU9wdGlvbkdyb3Vwc1swXS5vcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKHsgaWQgfSkgPT4gaWQgPT09ICd0aXRsZScsXG4gICAgICAgICAgICAgICkhLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMub3JkZXJCeVN1YnNjcmlwdGlvbiA9IHRoaXMub3JkZXJCeU1hbmFnZXIuc3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocyA9PiBbLi4ucy5zZWxlY3Rpb24uc2VsZWN0ZWRdWzBdPy5pZCA/PyBudWxsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnJlbnQpID0+IHByZXYgPT09IGN1cnJlbnQpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShvcmRlciA9PiB7XG4gICAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnb3JkZXJDaGFuZ2UnLFxuICAgICAgICAgIHBheWxvYWQ6IG9yZGVyLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vcmRlckJ5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0VHJpZ2dlcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VzdG9tVHJpZ2dlckJ1dHRvbj8ubmF0aXZlRWxlbWVudCA/P1xuICAgICAgdGhpcy5zdGFuZGFyZFRyaWdnZXJCdXR0b24/Lm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgYWxsb3dlZE9wZW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmxvY2tlZCkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICB0eXBlOiAnb3BlbkNoYW5nZScsXG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBwcmV2ZW50RGVmYXVsdCBrZWVwcyBhIHN1cnJvdW5kaW5nIGRpYWxvZyBmcm9tIGNsb3Npbmcgb24gdGhlIHNhbWUgRXNjYXBlLlxuICBlc2NhcGVDbG9zZShldmVudDogRXZlbnQsIG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAob3BlbiAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHsgdHlwZTogJ29wZW5DaGFuZ2UnLCBvcGVuOiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDaGFuZ2UobXVsdGk6IGJvb2xlYW4sIGlkOiBPWydpZCddKSB7XG4gICAgaWYgKG11bHRpKSB7XG4gICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgIHR5cGU6ICd0b2dnbGVPcHRpb25TZWxlY3RlZCcsXG4gICAgICAgIGlkLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgdHlwZTogJ3NldFNlbGVjdGVkT3B0aW9uJyxcbiAgICAgICAgaWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgdHlwZTogJ29wZW5DaGFuZ2UnLFxuICAgICAgICBvcGVuOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IG9yZGVyQnlPcHRpb25Hcm91cHM6IFJpdlNlbGVjdC5PcHRpb25Hcm91cDxTZWxlY3RDb21wb25lbnQuT3JkZXJCeU9wdGlvbj5bXSA9XG4gICAgW1xuICAgICAge1xuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICd0aXRsZScsXG4gICAgICAgICAgICB0aXRsZTogJ0EtWicsXG4gICAgICAgICAgICBoZWxwOiAnU29ydHMgdmFsdWVzIGluIGFscGhhbnVtZXJpYyBvcmRlciAoQS1aLCAwLTkpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnY291bnQnLFxuICAgICAgICAgICAgdGl0bGU6ICdWb2x1bWUnLFxuICAgICAgICAgICAgaGVscDogJ1NvcnRzIHZhbHVlcyBieSBjb3VudCAoaGlnaGVzdCB0byBsb3dlc3QpJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdO1xuXG4gIGdldFNlbGVjdGVkT3JkZXJCeU9wdGlvbihcbiAgICBzdGF0ZTogUml2U2VsZWN0LkZ1bGxTdGF0ZTxPPixcbiAgKTogU2VsZWN0Q29tcG9uZW50Lk9yZGVyQnlPcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcmRlckJ5T3B0aW9uR3JvdXBzWzBdLm9wdGlvbnMuZmluZChcbiAgICAgICAgKHsgaWQgfSkgPT4gaWQgPT09IHN0YXRlLnF1ZXJ5Lm9yZGVyLFxuICAgICAgKSA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaENoYW5nZSA9IGRlYm91bmNlKChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NlYXJjaENoYW5nZScsIHBheWxvYWQ6IHF1ZXJ5IH0pO1xuICB9LCA1MDApO1xuXG4gIC8vIHRyYWNrQnlTeW1ib2wgZm9yIG91ciBvcHRpb24gZ3JvdXBzIHRoYXQgZG9uJ3QgaGF2ZSBhIGdvb2QgaWRlbnRpdHkuXG4gIC8vIHRoaXMgbGF6aWx5IGF0dGFjaGVzIGEgSmF2YXNjcmlwdCBzeW1ib2wgdG8gYW55IHZhbHVlIGFuZCByZXR1cm5zIGl0LlxuICAvLyBTeW1ib2xzIGFyZSBndWFyYW50ZWVkIHVuaXF1ZSBhbmQgdGhleSBkbyBub3QgZXhpc3QgaW4gSlNPTiwgc28gdGhleVxuICAvLyBkbyBub3QgaW50ZXJmZXJlIHdpdGggYW55IHR5cGVzIG9yIHNlcmlhbGl6YXRpb24gZm9yIEFQSSBjYWxscy4gVGhlXG4gIC8vIG9ubHkgcHVycG9zZSB0aGV5IHNlcnZlIGlzIHRvIHRlbGwgbmdGb3Igd2hpY2ggb2JqZWN0cyBhcmUgc3RpbGwgaW5cbiAgLy8gdGhlIGFycmF5LiBOb3RlOiB0aGlzIGlzIG9ubHkgc2FmZSBvbiBhbiBhcnJheSBvZiBvYmplY3RzLlxuICB0cmFja0J5U3ltYm9sKF86IG51bWJlciwgdmFsdWU6IGFueSkge1xuICAgIGlmICghdmFsdWUuX3RyYWNraW5nU3ltYm9sKSB7XG4gICAgICB2YWx1ZS5fdHJhY2tpbmdTeW1ib2wgPSBTeW1ib2woKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLl90cmFja2luZ1N5bWJvbDtcbiAgfVxuXG4gIHRyYWNrQnlPcHRpb24oXzogbnVtYmVyLCBvcHRpb246IFJpdlNlbGVjdC5GdWxsT3B0aW9uPE8+KTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU2VsZWN0Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgT3JkZXJCeU9wdGlvbiA9IHtcbiAgICBpZDogUml2U2VsZWN0Lk9yZGVyQnk7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBoZWxwOiBzdHJpbmc7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IFNpemVzID0gWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU2l6ZXMpW251bWJlcl07XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibWFuYWdlcj8uc3RhdGUgfCBhc3luYzsgbGV0IHNcIj5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxyaXYtbG9hZGluZy1jb3ZlciBbbG9hZGluZ109XCJzLmxvYWQubG9hZGluZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnQtYm9keVwiXG4gICAgICAgIFtjbGFzcy5pbmxpbmVdPVwicy5kaXNwbGF5LmlubGluZVwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJlc2NhcGVDbG9zZSgkZXZlbnQsIHMuZGlzcGxheS5vcGVuKVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAnbWF4LWhlaWdodCc6IHMuZGlzcGxheS5tYXhIZWlnaHQsXG4gICAgICAgICAgJ21heC13aWR0aCc6IHMuZGlzcGxheS5tYXhXaWR0aCxcbiAgICAgICAgICAnbWluLWhlaWdodCc6IHMuZGlzcGxheS5taW5IZWlnaHQsXG4gICAgICAgICAgJ21pbi13aWR0aCc6IHMuZGlzcGxheS5taW5XaWR0aFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlciAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyBzdGF0ZTogcyB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8cml2LXNlYXJjaFxuICAgICAgICAgICpuZ0lmPVwicy5xdWVyeS5zaG93U2VhcmNoXCJcbiAgICAgICAgICBbdmFsdWVdPVwicy5xdWVyeS5zZWFyY2hcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzLnF1ZXJ5LnNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbYXV0b0ZvY3VzXT1cInRydWVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3Jpdi1zZWFyY2g+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzLnF1ZXJ5LnNob3dPcmRlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JkZXItYnlcIj5Tb3J0IGJ5Ojwvc3Bhbj5cbiAgICAgICAgICA8cml2LXNlbGVjdCBbbWFuYWdlcl09XCJvcmRlckJ5TWFuYWdlclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0cmlnZ2VyIGxldC1zdGF0ZT1cInN0YXRlXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwic3RhdGUuZGlzcGxheS5vcGVuID8gJ0NoZXZyb25VcCcgOiAnQ2hldnJvbkRvd24nXCJcbiAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidsYXN0J1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBnZXRTZWxlY3RlZE9yZGVyQnlPcHRpb24ocyk/LnRpdGxlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9yaXYtc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICA8cml2LXNlbGVjdC1ub2RlXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzLnNlbGVjdGlvbi5hbGxvd011bHRpU2VsZWN0ICYmXG4gICAgICAgICAgICAgIHMuc2VsZWN0aW9uLmFsbG93U2VsZWN0QWxsICYmXG4gICAgICAgICAgICAgICFzLmRpc3BsYXkuemVyb1N0YXRlTWVzc2FnZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFttb2RlXT1cIidtdWx0aSdcIlxuICAgICAgICAgICAgW25vZGVdPVwie1xuICAgICAgICAgICAgICBpZDogJ19fTk9PUF9fJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHMucXVlcnkuc2VhcmNoID8gJ1NlbGVjdCBhbGwgbWF0Y2hpbmcnIDogJ1NlbGVjdCBhbGwnLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogcy5zZWxlY3Rpb24udmlzaWJsZVNlbGVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICBzZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgZXhwYW5kZWQ6IGZhbHNlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChzZWxlY3RDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAndmlzaWJsZVNlbGVjdGVkQ2hhbmdlJyB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9yaXYtc2VsZWN0LW5vZGU+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHMuZnVsbE9wdGlvbkdyb3VwczsgdHJhY2tCeTogdHJhY2tCeVN5bWJvbFwiXG4gICAgICAgICAgICBjbGFzcz1cImdyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXZpZGVyXT1cInMuZGlzcGxheS5kaXZpZGVyc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJncm91cC5oZWFkZXI7IGxldCBoZWFkZXJcIiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgICAgICAgICAgPHJpdi1oZWxwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5oZWxwOyBsZXQgaGVscFwiXG4gICAgICAgICAgICAgICAgW2hlbHBdPVwiaGVscFwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMTJcIlxuICAgICAgICAgICAgICA+PC9yaXYtaGVscD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBncm91cC5vcHRpb25zOyB0cmFja0J5OiB0cmFja0J5T3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblRlbXBsYXRlOyBlbHNlIHN0YW5kYXJkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBub2RlOiBvcHRpb24gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxyaXYtc2VsZWN0LW5vZGVcbiAgICAgICAgICAgICAgICAgIFttb2RlXT1cInMuc2VsZWN0aW9uLmFsbG93TXVsdGlTZWxlY3QgPyAnbXVsdGknIDogJ3NpbmdsZSdcIlxuICAgICAgICAgICAgICAgICAgW25vZGVdPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtzaG93U2luZ2xlU2VsZWN0ZWRdPVwicy5kaXNwbGF5LnNob3dTaW5nbGVTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVUZW1wbGF0ZV09XCJvcHRpb25UaXRsZVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIChzZWxlY3RDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdENoYW5nZShzLnNlbGVjdGlvbi5hbGxvd011bHRpU2VsZWN0LCAkZXZlbnQpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgKGV4cGFuZENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RvZ2dsZU9wdGlvbkV4cGFuZGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJGV2ZW50XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L3Jpdi1zZWxlY3Qtbm9kZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cInMuZGlzcGxheS5kaXNwbGF5TGltaXRNZXNzYWdlOyBsZXQgbWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImRpc3BsYXktbGltaXRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG1lc3NhZ2UgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHJpdi16ZXJvLXN0YXRlXG4gICAgICAgICAgICAqbmdJZj1cInMuZGlzcGxheS56ZXJvU3RhdGVNZXNzYWdlOyBsZXQgbWVzc2FnZVwiXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICA+PC9yaXYtemVyby1zdGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxmb290ZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZVwiIGNsYXNzPVwiY3VzdG9tLWZvb3RlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgc3RhdGU6IHMgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcml2LWxvYWRpbmctY292ZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzLmRpc3BsYXkuaW5saW5lOyBlbHNlIGNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJpZ2dlclRlbXBsYXRlOyBlbHNlIHN0YW5kYXJkVHJpZ2dlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAjY3VzdG9tVHJpZ2dlckJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiYWxsb3dlZE9wZW4oKVwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJlc2NhcGVDbG9zZSgkZXZlbnQsIHMuZGlzcGxheS5vcGVuKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsb2NrZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvY2tlZCA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJjdXN0b20tdHJpZ2dlci1idXR0b25cIlxuICAgICAgICBbY2xhc3MuZ3Jvd109XCJncm93XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc3RhdGU6IHMgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRUcmlnZ2VyPlxuICAgICAgPHJpdi1pbnB1dC1sYWJlbFxuICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICBbaGVscF09XCJoZWxwXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2VcIlxuICAgICAgICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gICAgICAgIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgI3N0YW5kYXJkVHJpZ2dlckJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwidHJpZ2dlclwiXG4gICAgICAgICAgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgICAgIFtjbGFzcy5sYXJnZV09XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICAgICAgICBbY2xhc3Mud2FybmluZ109XCJzdGF0ZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwic3RhdGUgPT09ICdlcnJvcidcIlxuICAgICAgICAgIChjbGljayk9XCJhbGxvd2VkT3BlbigpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiZXNjYXBlQ2xvc2UoJGV2ZW50LCBzLmRpc3BsYXkub3BlbilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsb2NrZWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbG9ja2VkID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cInMuc2VsZWN0aW9uLnNlbGVjdGVkLnNpemU7IGVsc2UgcGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGN1c3RvbVNlbGVjdGVkT3B0aW9uc1RlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGVsc2Ugc3RhbmRhcmRTZWxlY3RlZE9wdGlvbnNUZW1wbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tU2VsZWN0ZWRPcHRpb25zVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc2VsZWN0ZWQ6IHMuc2VsZWN0aW9uLnNlbGVjdGVkIH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N0YW5kYXJkU2VsZWN0ZWRPcHRpb25zVGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e1xuICAgICAgICAgICAgICAgIHMuZGlzcGxheS5mb3JtYXR0ZWRTZWxlY3RlZE9wdGlvbnNcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicy5kaXNwbGF5LnBpbGxDb3VudCA+IDFcIiBjbGFzcz1cInNlbGVjdGVkLWNvdW50XCI+XG4gICAgICAgICAgICAgICAge3sgcy5kaXNwbGF5LnBpbGxDb3VudCB8IHJpdk51bWJlciB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcGxhY2Vob2xkZXJcIj57eyBzLmRpc3BsYXkucGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb25cIj5cbiAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAqbmdJZj1cIiFsb2NrZWRcIlxuICAgICAgICAgICAgICBbbmFtZV09XCJzLmRpc3BsYXkub3BlbiA/ICdDaGV2cm9uVXAnIDogJ0NoZXZyb25Eb3duJ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cIjIwXCJcbiAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgPHJpdi1pY29uICpuZ0lmPVwibG9ja2VkXCIgW25hbWVdPVwiJ0xvY2snXCIgW3NpemVdPVwiMjBcIj48L3Jpdi1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3Jpdi1pbnB1dC1sYWJlbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInMuZGlzcGxheS5vcGVuXCI+XG4gICAgICA8cml2LWNhbGxvdXRcbiAgICAgICAgKnJpdi1vdmVybGF5XG4gICAgICAgIFthbmNob3JdPVwiZ2V0VHJpZ2dlcigpXCJcbiAgICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiYWxsb3dlZENhbGxvdXRQb3NpdGlvbnNcIlxuICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwicHJlZmVycmVkQ2FsbG91dFBvc2l0aW9uXCJcbiAgICAgICAgKGNsb3NlKT1cIm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnb3BlbkNoYW5nZScsIG9wZW46IGZhbHNlIH0pXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3Jpdi1jYWxsb3V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|