@impartner/design-components 2.1.2 → 2.2.0
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/esm2022/lib/alert/alert.component.mjs +11 -4
- package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs +10 -10
- package/esm2022/lib/datetime-picker/constants/datetime-picker-defaults.mjs +2 -2
- package/esm2022/lib/file-upload/file-upload.module.mjs +14 -6
- package/esm2022/lib/modal/modal.component.mjs +9 -3
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +19 -3
- package/esm2022/lib/table/components/bulk-actions/bulk-actions.component.mjs +6 -1
- package/esm2022/lib/table/constants/table.constants.mjs +1 -2
- package/esm2022/lib/table/containers/table.component.mjs +91 -20
- package/esm2022/lib/table/directives/collapse-monitor.directive.mjs +42 -0
- package/esm2022/lib/table/directives/index.mjs +2 -1
- package/esm2022/lib/table/directives/table-inject-component.directive.mjs +1 -1
- package/esm2022/lib/table/directives/table.directive.mjs +24 -4
- package/esm2022/lib/table/index.mjs +2 -2
- package/esm2022/lib/table/interfaces/cell-renderer.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/collapsible-row-content-context.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/index.mjs +3 -1
- package/esm2022/lib/table/interfaces/sort-by-payload.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-event-payload.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-row-collapse-change.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-row-item.interface.mjs +1 -1
- package/esm2022/lib/table/table.module.mjs +12 -7
- package/fesm2022/impartner-design-components.mjs +215 -42
- package/fesm2022/impartner-design-components.mjs.map +1 -1
- package/lib/alert/alert.component.d.ts +5 -1
- package/lib/datetime-picker/components/datetime-picker/datetime-picker.component.d.ts +3 -3
- package/lib/datetime-picker/constants/datetime-picker-defaults.d.ts +1 -1
- package/lib/file-upload/file-upload.module.d.ts +1 -1
- package/lib/modal/modal.component.d.ts +5 -1
- package/lib/progress-bar/progress-bar.component.d.ts +10 -1
- package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +5 -0
- package/lib/table/constants/table.constants.d.ts +0 -1
- package/lib/table/containers/table.component.d.ts +58 -13
- package/lib/table/directives/collapse-monitor.directive.d.ts +12 -0
- package/lib/table/directives/index.d.ts +1 -0
- package/lib/table/directives/table-inject-component.directive.d.ts +2 -2
- package/lib/table/directives/table.directive.d.ts +11 -3
- package/lib/table/index.d.ts +1 -1
- package/lib/table/interfaces/cell-renderer.interface.d.ts +10 -3
- package/lib/table/interfaces/collapsible-row-content-context.interface.d.ts +39 -0
- package/lib/table/interfaces/index.d.ts +2 -0
- package/lib/table/interfaces/sort-by-payload.interface.d.ts +6 -0
- package/lib/table/interfaces/table-column-defs.type.d.ts +30 -6
- package/lib/table/interfaces/table-event-payload.interface.d.ts +8 -1
- package/lib/table/interfaces/table-row-action-payload.interface.d.ts +8 -1
- package/lib/table/interfaces/table-row-action.interface.d.ts +10 -2
- package/lib/table/interfaces/table-row-collapse-change.interface.d.ts +11 -0
- package/lib/table/interfaces/table-row-item.interface.d.ts +3 -4
- package/lib/table/table.module.d.ts +18 -17
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impartner-design-components.mjs","sources":["../../../../projects/design-components/src/constants/fontawesome-icons.ts","../../../../projects/design-components/src/types/component-size.ts","../../../../projects/design-components/src/types/component-theme.ts","../../../../projects/design-components/src/services/interaction.service.ts","../../../../projects/design-components/src/lib/text-highlight/text-highlight.component.ts","../../../../projects/design-components/src/lib/text-highlight/text-highlight.module.ts","../../../../projects/design-components/src/lib/icon/icon.component.ts","../../../../projects/design-components/src/lib/icon/icon.component.html","../../../../projects/design-components/src/lib/button/button.component.ts","../../../../projects/design-components/src/lib/button/button.component.html","../../../../projects/design-components/src/lib/branding/branded.directive.ts","../../../../projects/design-components/src/lib/branding/branding.module.ts","../../../../projects/design-components/src/lib/icon/icon.module.ts","../../../../projects/design-components/src/lib/button/button.module.ts","../../../../projects/design-components/src/lib/table/constants/table.constants.ts","../../../../projects/design-components/src/lib/table/constants/public-table.constants.ts","../../../../projects/design-components/src/lib/table/enumerations/table-column-type.ts","../../../../projects/design-components/src/lib/table/helpers/table-theme.helper.ts","../../../../projects/design-components/src/utilities/boolean-props.ts","../../../../projects/design-components/src/utilities/number-props.ts","../../../../projects/design-components/src/utilities/sanitize.ts","../../../../projects/design-components/src/utilities/dc.ts","../../../../projects/design-components/src/utilities/lc.ts","../../../../projects/design-components/src/lib/form-field/component/directives/corner-hint.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/error.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/form-root.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/hint.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/label.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/prefix.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/suffix.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/index.ts","../../../../projects/design-components/src/lib/form-field/form-field-errors.ts","../../../../projects/design-components/src/lib/form-field/shared/form-field-control.ts","../../../../projects/design-components/src/lib/form-field/component/form-field.component.ts","../../../../projects/design-components/src/lib/form-field/component/form-field.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/option-group/select-option-group.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option/select-option.component.ts","../../../../projects/design-components/src/lib/badge/types/badge-size.ts","../../../../projects/design-components/src/lib/badge/badge.component.ts","../../../../projects/design-components/src/lib/badge/badge.component.html","../../../../projects/design-components/src/lib/badge/badge.module.ts","../../../../projects/design-components/src/lib/form-field/services/error-state-matcher.service.ts","../../../../projects/design-components/src/lib/form-field/services/unique-selection-dispatcher.service.ts","../../../../projects/design-components/src/lib/form-field/component/form-field.module.ts","../../../../projects/design-components/src/lib/form-field/shared/disabled.mixin.ts","../../../../projects/design-components/src/lib/form-field/shared/error-state.mixin.ts","../../../../projects/design-components/src/lib/form-field/shared/tab-index.mixin.ts","../../../../projects/design-components/src/lib/form-field/controls/input/input.directive.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option-parent.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option-display/select-option-display.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option-display/select-option-display.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/select-model.ts","../../../../projects/design-components/src/lib/tag/tag.component.ts","../../../../projects/design-components/src/lib/tag/tag.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/select.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/select.component.html","../../../../projects/design-components/src/lib/size-detection/directive/size-detector.directive.ts","../../../../projects/design-components/src/lib/pagination/pagination.component.ts","../../../../projects/design-components/src/lib/pagination/pagination.component.html","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.ts","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/toggle.component.ts","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/toggle.component.html","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/toggle.module.ts","../../../../projects/design-components/src/lib/form-field/controls/checkbox/checkbox.component.ts","../../../../projects/design-components/src/lib/form-field/controls/checkbox/checkbox.component.html","../../../../projects/design-components/src/lib/form-field/controls/checkbox/checkbox.module.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/interfaces/radio-change-event.interface.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/injection-tokens.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/radio-button/radio-button.component.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/radio-button/radio-button.component.html","../../../../projects/design-components/src/lib/form-field/controls/radio/radio-group/radio-group.directive.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/radio.module.ts","../../../../projects/design-components/src/lib/form-field/controls/select/select.module.ts","../../../../projects/design-components/src/lib/form-field/controls/tag-select/tag-select.component.ts","../../../../projects/design-components/src/lib/form-field/controls/tag-select/tag-select.component.html","../../../../projects/design-components/src/lib/form-field/impdc-forms.module.ts","../../../../projects/design-components/src/lib/size-detection/size-detection.module.ts","../../../../projects/design-components/src/lib/pagination/pagination.module.ts","../../../../projects/design-components/src/lib/table/components/column-heading/column-heading.component.ts","../../../../projects/design-components/src/lib/table/components/column-heading/column-heading.component.html","../../../../projects/design-components/src/lib/table/components/bulk-actions/bulk-actions.component.ts","../../../../projects/design-components/src/lib/table/components/bulk-actions/bulk-actions.component.html","../../../../projects/design-components/src/lib/table/components/row-actions/row-actions.component.ts","../../../../projects/design-components/src/lib/table/components/row-actions/row-actions.component.html","../../../../projects/design-components/src/lib/spinner/spinner.component.ts","../../../../projects/design-components/src/lib/spinner/spinner.component.html","../../../../projects/design-components/src/lib/table/directives/table.directive.ts","../../../../projects/design-components/src/lib/table/directives/table-inject-component.directive.ts","../../../../projects/design-components/src/lib/table/containers/table.component.ts","../../../../projects/design-components/src/lib/table/containers/table.component.html","../../../../projects/design-components/src/lib/spinner/spinner.module.ts","../../../../projects/design-components/src/lib/table/table.module.ts","../../../../projects/design-components/src/lib/modal/types/modal-component-sizes.ts","../../../../projects/design-components/src/lib/modal/types/modal-theme.ts","../../../../projects/design-components/src/lib/modal/modal.component.ts","../../../../projects/design-components/src/lib/modal/modal.component.html","../../../../projects/design-components/src/lib/backdrop/backdrop.component.ts","../../../../projects/design-components/src/lib/backdrop/backdrop.component.html","../../../../projects/design-components/src/lib/backdrop/backdrop.module.ts","../../../../projects/design-components/src/lib/modal/modal.module.ts","../../../../projects/design-components/src/lib/progress-bar/progress-bar.component.ts","../../../../projects/design-components/src/lib/progress-bar/progress-bar.component.html","../../../../projects/design-components/src/lib/progress-bar/progress-bar.module.ts","../../../../projects/design-components/src/lib/dropdown/components/dropdown-item/dropdown-item.component.ts","../../../../projects/design-components/src/lib/dropdown/components/dropdown-item/dropdown-item.component.html","../../../../projects/design-components/src/lib/dropdown/dropdown.component.ts","../../../../projects/design-components/src/lib/dropdown/dropdown.component.html","../../../../projects/design-components/src/lib/dropdown/dropdown.module.ts","../../../../projects/design-components/src/lib/alert/alert.component.ts","../../../../projects/design-components/src/lib/alert/alert.component.html","../../../../projects/design-components/src/lib/alert/alert.module.ts","../../../../projects/design-components/src/lib/file-upload/directives/file-drop.directive.ts","../../../../projects/design-components/src/lib/file-upload/pipes/human-readable-byte-size.pipe.ts","../../../../projects/design-components/src/lib/file-upload/file-upload.component.ts","../../../../projects/design-components/src/lib/file-upload/file-upload.component.html","../../../../projects/design-components/src/lib/file-upload/file-upload.module.ts","../../../../projects/design-components/src/lib/avatar/avatar.component.ts","../../../../projects/design-components/src/lib/avatar/avatar.component.html","../../../../projects/design-components/src/lib/avatar/avatar.module.ts","../../../../projects/design-components/src/lib/avatar-group/avatar-group.component.ts","../../../../projects/design-components/src/lib/avatar-group/avatar-group.component.html","../../../../projects/design-components/src/lib/avatar-group/avatar-group.module.ts","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb-item.component.ts","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb.component.ts","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb.component.html","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb.module.ts","../../../../projects/design-components/src/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.html","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.html","../../../../projects/design-components/src/lib/datetime-picker/constants/datetime-picker-defaults.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.html","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker/datetime-picker.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker/datetime-picker.component.html","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.html","../../../../projects/design-components/src/lib/datetime-picker/datetime-picker.module.ts","../../../../projects/design-components/src/lib/design-components.module.ts","../../../../projects/design-components/src/lib/button-group/button-group.component.ts","../../../../projects/design-components/src/lib/button-group/button-group.component.html","../../../../projects/design-components/src/lib/button-group/button-group.module.ts","../../../../projects/design-components/src/lib/card-heading/card-heading.component.ts","../../../../projects/design-components/src/lib/card-heading/card-heading.component.html","../../../../projects/design-components/src/lib/card-heading/card-heading.module.ts","../../../../projects/design-components/src/lib/scrollable/scrollable.component.ts","../../../../projects/design-components/src/lib/scrollable/scrollable.component.html","../../../../projects/design-components/src/lib/scrollable/scrollable.module.ts","../../../../projects/design-components/src/lib/select-icon/select-icon.component.ts","../../../../projects/design-components/src/lib/select-icon/select-icon.component.html","../../../../projects/design-components/src/lib/select-icon/select-icon.module.ts","../../../../projects/design-components/src/lib/data-card/data-card.component.ts","../../../../projects/design-components/src/lib/data-card/data-card.component.html","../../../../projects/design-components/src/lib/data-card/data-card.module.ts","../../../../projects/design-components/src/public-api.ts","../../../../projects/design-components/src/impartner-design-components.ts"],"sourcesContent":["export const FontAwesomeIconThemes: string[] = ['solid', 'regular', 'light'];\n\nexport type FontAwesomeIconTheme = (typeof FontAwesomeIconThemes)[number];\n\nexport const FontAwesomeIcons: string[] = [\n 'yin-yang',\n 'yen-sign',\n 'x-ray',\n 'wrench',\n 'wreath',\n 'won-sign',\n 'wine-glass-alt',\n 'wine-glass',\n 'wine-bottle',\n 'windsock',\n 'window-restore',\n 'window-minimize',\n 'window-maximize',\n 'window-frame-open',\n 'window-frame',\n 'window-close',\n 'window-alt',\n 'window',\n 'wind-warning',\n 'wind-turbine',\n 'wind',\n 'wifi-slash',\n 'wifi-2',\n 'wifi-1',\n 'wifi',\n 'whistle',\n 'wheelchair',\n 'wheat',\n 'whale',\n 'weight-hanging',\n 'weight',\n 'webcam-slash',\n 'webcam',\n 'waveform-path',\n 'waveform',\n 'wave-triangle',\n 'wave-square',\n 'wave-sine',\n 'water-rise',\n 'water-lower',\n 'water',\n 'watch-fitness',\n 'watch-calculator',\n 'watch',\n 'washer',\n 'warehouse-alt',\n 'warehouse',\n 'wand-magic',\n 'wand',\n 'wallet',\n 'walking',\n 'walkie-talkie',\n 'walker',\n 'wagon-covered',\n 'vr-cardboard',\n 'vote-yea',\n 'vote-nay',\n 'volume-up',\n 'volume-slash',\n 'volume-off',\n 'volume-mute',\n 'volume-down',\n 'volume',\n 'volleyball-ball',\n 'volcano',\n 'voicemail',\n 'viruses',\n 'virus-slash',\n 'virus',\n 'violin',\n 'vihara',\n 'video-slash',\n 'video-plus',\n 'video',\n 'vials',\n 'vial',\n 'vhs',\n 'vest-patches',\n 'vest',\n 'venus-mars',\n 'venus-double',\n 'venus',\n 'vector-square',\n 'value-absolute',\n 'vacuum-robot',\n 'vacuum',\n 'utensils-alt',\n 'utensils',\n 'utensil-spoon',\n 'utensil-knife',\n 'utensil-fork',\n 'users-slash',\n 'users-medical',\n 'users-crown',\n 'users-cog',\n 'users-class',\n 'users',\n 'user-visor',\n 'user-unlock',\n 'user-times',\n 'user-tie',\n 'user-tag',\n 'user-slash',\n 'user-shield',\n 'user-secret',\n 'user-robot',\n 'user-plus',\n 'user-nurse',\n 'user-ninja',\n 'user-music',\n 'user-minus',\n 'user-md-chat',\n 'user-md',\n 'user-lock',\n 'user-injured',\n 'user-headset',\n 'user-hard-hat',\n 'user-graduate',\n 'user-friends',\n 'user-edit',\n 'user-crown',\n 'user-cowboy',\n 'user-cog',\n 'user-clock',\n 'user-circle',\n 'user-check',\n 'user-chart',\n 'user-astronaut',\n 'user-alt-slash',\n 'user-alt',\n 'user-alien',\n 'user',\n 'usd-square',\n 'usd-circle',\n 'usb-drive',\n 'upload',\n 'unlock-alt',\n 'unlock',\n 'unlink',\n 'university',\n 'universal-access',\n 'union',\n 'unicorn',\n 'undo-alt',\n 'undo',\n 'underline',\n 'umbrella-beach',\n 'umbrella',\n 'ufo-beam',\n 'ufo',\n 'typewriter',\n 'tv-retro',\n 'tv-music',\n 'tv-alt',\n 'tv',\n 'turtle',\n 'turntable',\n 'turkey',\n 'tty',\n 'tshirt',\n 'trumpet',\n 'truck-ramp',\n 'truck-plow',\n 'truck-pickup',\n 'truck-moving',\n 'truck-monster',\n 'truck-loading',\n 'truck-couch',\n 'truck-container',\n 'truck',\n 'trophy-alt',\n 'trophy',\n 'triangle-music',\n 'triangle',\n 'trees',\n 'tree-palm',\n 'tree-large',\n 'tree-decorated',\n 'tree-christmas',\n 'tree-alt',\n 'tree',\n 'treasure-chest',\n 'trash-undo-alt',\n 'trash-undo',\n 'trash-restore-alt',\n 'trash-restore',\n 'trash-alt',\n 'trash',\n 'transporter-empty',\n 'transporter-3',\n 'transporter-2',\n 'transporter-1',\n 'transporter',\n 'transgender-alt',\n 'transgender',\n 'tram',\n 'train',\n 'trailer',\n 'traffic-light-stop',\n 'traffic-light-slow',\n 'traffic-light-go',\n 'traffic-light',\n 'traffic-cone',\n 'trademark',\n 'tractor',\n 'tornado',\n 'torii-gate',\n 'torah',\n 'toothbrush',\n 'tooth',\n 'tools',\n 'toolbox',\n 'tombstone-alt',\n 'tombstone',\n 'toilet-paper-slash',\n 'toilet-paper-alt',\n 'toilet-paper',\n 'toilet',\n 'toggle-on',\n 'toggle-off',\n 'tired',\n 'tire-rugged',\n 'tire-pressure-warning',\n 'tire-flat',\n 'tire',\n 'tint-slash',\n 'tint',\n 'times-square',\n 'times-octagon',\n 'times-hexagon',\n 'times-circle',\n 'times',\n 'tilde',\n 'ticket-alt',\n 'ticket',\n 'thunderstorm-sun',\n 'thunderstorm-moon',\n 'thunderstorm',\n 'thumbtack',\n 'thumbs-up',\n 'thumbs-down',\n 'theta',\n 'thermometer-three-quarters',\n 'thermometer-quarter',\n 'thermometer-half',\n 'thermometer-full',\n 'thermometer-empty',\n 'thermometer',\n 'theater-masks',\n 'th-list',\n 'th-large',\n 'th',\n 'text-width',\n 'text-size',\n 'text-height',\n 'text',\n 'terminal',\n 'tennis-ball',\n 'tenge',\n 'temperature-up',\n 'temperature-low',\n 'temperature-hot',\n 'temperature-high',\n 'temperature-frigid',\n 'temperature-down',\n 'telescope',\n 'teeth-open',\n 'teeth',\n 'taxi',\n 'tasks-alt',\n 'tasks',\n 'tape',\n 'tanakh',\n 'tally',\n 'tags',\n 'tag',\n 'taco',\n 'tachometer-slowest',\n 'tachometer-slow',\n 'tachometer-fastest',\n 'tachometer-fast',\n 'tachometer-average',\n 'tachometer-alt-slowest',\n 'tachometer-alt-slow',\n 'tachometer-alt-fastest',\n 'tachometer-alt-fast',\n 'tachometer-alt-average',\n 'tachometer-alt',\n 'tachometer',\n 'tablets',\n 'tablet-rugged',\n 'tablet-android-alt',\n 'tablet-android',\n 'tablet-alt',\n 'tablet',\n 'table-tennis',\n 'table',\n 'syringe',\n 'sync-alt',\n 'sync',\n 'synagogue',\n 'swords-laser',\n 'swords',\n 'sword-laser-alt',\n 'sword-laser',\n 'sword',\n 'swimming-pool',\n 'swimmer',\n 'swatchbook',\n 'surprise',\n 'superscript',\n 'sunset',\n 'sunrise',\n 'sunglasses',\n 'sun-haze',\n 'sun-dust',\n 'sun-cloud',\n 'sun',\n 'suitcase-rolling',\n 'suitcase',\n 'subway',\n 'subscript',\n 'stroopwafel',\n 'strikethrough',\n 'stretcher',\n 'street-view',\n 'stream',\n 'store-slash',\n 'store-alt-slash',\n 'store-alt',\n 'store',\n 'stopwatch-20',\n 'stopwatch',\n 'stop-circle',\n 'stop',\n 'stomach',\n 'stocking',\n 'sticky-note',\n 'stethoscope',\n 'step-forward',\n 'step-backward',\n 'steering-wheel',\n 'steak',\n 'starship-freighter',\n 'starship',\n 'stars',\n 'starfighter-alt',\n 'starfighter',\n 'star-shooting',\n 'star-of-life',\n 'star-of-david',\n 'star-half-alt',\n 'star-half',\n 'star-exclamation',\n 'star-christmas',\n 'star-and-crescent',\n 'star',\n 'stamp',\n 'staff',\n 'squirrel',\n 'square-root-alt',\n 'square-root',\n 'square-full',\n 'square',\n 'sprinkler',\n 'spray-can',\n 'splotch',\n 'spinner-third',\n 'spinner',\n 'spider-web',\n 'spider-black-widow',\n 'spider',\n 'spell-check',\n 'speakers',\n 'speaker',\n 'sparkles',\n 'spade',\n 'space-station-moon-alt',\n 'space-station-moon',\n 'space-shuttle',\n 'spa',\n 'soup',\n 'sort-up',\n 'sort-size-up-alt',\n 'sort-size-up',\n 'sort-size-down-alt',\n 'sort-size-down',\n 'sort-shapes-up-alt',\n 'sort-shapes-up',\n 'sort-shapes-down-alt',\n 'sort-shapes-down',\n 'sort-numeric-up-alt',\n 'sort-numeric-up',\n 'sort-numeric-down-alt',\n 'sort-numeric-down',\n 'sort-down',\n 'sort-circle-up',\n 'sort-circle-down',\n 'sort-circle',\n 'sort-amount-up-alt',\n 'sort-amount-up',\n 'sort-amount-down-alt',\n 'sort-amount-down',\n 'sort-alt',\n 'sort-alpha-up-alt',\n 'sort-alpha-up',\n 'sort-alpha-down-alt',\n 'sort-alpha-down',\n 'sort',\n 'solar-system',\n 'solar-panel',\n 'socks',\n 'soap',\n 'snowplow',\n 'snowmobile',\n 'snowman',\n 'snowflakes',\n 'snowflake',\n 'snowboarding',\n 'snow-blowing',\n 'snooze',\n 'snake',\n 'sms',\n 'smoking-ban',\n 'smoking',\n 'smoke',\n 'smog',\n 'smile-wink',\n 'smile-plus',\n 'smile-beam',\n 'smile',\n 'sliders-v-square',\n 'sliders-v',\n 'sliders-h-square',\n 'sliders-h',\n 'sleigh',\n 'sledding',\n 'slash',\n 'skull-crossbones',\n 'skull-cow',\n 'skull',\n 'skiing-nordic',\n 'skiing',\n 'ski-lift',\n 'ski-jump',\n 'skeleton',\n 'skating',\n 'sitemap',\n 'siren-on',\n 'siren',\n 'sink',\n 'sim-card',\n 'signature',\n 'signal-stream',\n 'signal-slash',\n 'signal-alt-slash',\n 'signal-alt-3',\n 'signal-alt-2',\n 'signal-alt-1',\n 'signal-alt',\n 'signal-4',\n 'signal-3',\n 'signal-2',\n 'signal-1',\n 'signal',\n 'sign-out-alt',\n 'sign-out',\n 'sign-language',\n 'sign-in-alt',\n 'sign-in',\n 'sign',\n 'sigma',\n 'sickle',\n 'shuttlecock',\n 'shuttle-van',\n 'shredder',\n 'shower',\n 'shovel-snow',\n 'shovel',\n 'shopping-cart',\n 'shopping-basket',\n 'shopping-bag',\n 'shoe-prints',\n 'shish-kebab',\n 'shipping-timed',\n 'shipping-fast',\n 'ship',\n 'shield-virus',\n 'shield-cross',\n 'shield-check',\n 'shield-alt',\n 'shield',\n 'shekel-sign',\n 'sheep',\n 'share-square',\n 'share-alt-square',\n 'share-alt',\n 'share-all',\n 'share',\n 'shapes',\n 'server',\n 'sensor-smoke',\n 'sensor-on',\n 'sensor-fire',\n 'sensor-alert',\n 'sensor',\n 'send-backward',\n 'send-back',\n 'seedling',\n 'search-plus',\n 'search-minus',\n 'search-location',\n 'search-dollar',\n 'search',\n 'sd-card',\n 'scythe',\n 'scrubber',\n 'scroll-old',\n 'scroll',\n 'screwdriver',\n 'school',\n 'scarf',\n 'scarecrow',\n 'scanner-touchscreen',\n 'scanner-keyboard',\n 'scanner-image',\n 'scanner',\n 'scalpel-path',\n 'scalpel',\n 'saxophone',\n 'sax-hot',\n 'save',\n 'sausage',\n 'satellite-dish',\n 'satellite',\n 'sandwich',\n 'salad',\n 'sad-tear',\n 'sad-cry',\n 'sack-dollar',\n 'sack',\n 'rv',\n 'rupee-sign',\n 'running',\n 'ruler-vertical',\n 'ruler-triangle',\n 'ruler-horizontal',\n 'ruler-combined',\n 'ruler',\n 'ruble-sign',\n 'rss-square',\n 'rss',\n 'router',\n 'route-interstate',\n 'route-highway',\n 'route',\n 'rocket-launch',\n 'rocket',\n 'robot',\n 'road',\n 'rings-wedding',\n 'ring',\n 'ribbon',\n 'retweet-alt',\n 'retweet',\n 'restroom',\n 'republican',\n 'reply-all',\n 'reply',\n 'repeat-alt',\n 'repeat-1-alt',\n 'repeat-1',\n 'repeat',\n 'remove-format',\n 'registered',\n 'refrigerator',\n 'redo-alt',\n 'redo',\n 'recycle',\n 'rectangle-wide',\n 'rectangle-portrait',\n 'rectangle-landscape',\n 'record-vinyl',\n 'receipt',\n 'raygun',\n 'random',\n 'ramp-loading',\n 'ram',\n 'raindrops',\n 'rainbow',\n 'radio-alt',\n 'radio',\n 'radiation-alt',\n 'radiation',\n 'radar',\n 'racquet',\n 'rabbit-fast',\n 'rabbit',\n 'quran',\n 'quote-right',\n 'quote-left',\n 'quidditch',\n 'question-square',\n 'question-circle',\n 'question',\n 'qrcode',\n 'puzzle-piece',\n 'pumpkin',\n 'pump-soap',\n 'pump-medical',\n 'projector',\n 'project-diagram',\n 'procedures',\n 'print-slash',\n 'print-search',\n 'print',\n 'presentation',\n 'prescription-bottle-alt',\n 'prescription-bottle',\n 'prescription',\n 'praying-hands',\n 'pray',\n 'power-off',\n 'pound-sign',\n 'portrait',\n 'portal-exit',\n 'portal-enter',\n 'popcorn',\n 'poop',\n 'poo-storm',\n 'poo',\n 'poll-people',\n 'poll-h',\n 'poll',\n 'police-box',\n 'podium-star',\n 'podium',\n 'podcast',\n 'plus-square',\n 'plus-octagon',\n 'plus-hexagon',\n 'plus-circle',\n 'plus',\n 'plug',\n 'play-circle',\n 'play',\n 'planet-ringed',\n 'planet-moon',\n 'plane-slash',\n 'plane-departure',\n 'plane-arrival',\n 'plane-alt',\n 'plane',\n 'place-of-worship',\n 'pizza-slice',\n 'pizza',\n 'pills',\n 'piggy-bank',\n 'pig',\n 'pie',\n 'piano-keyboard',\n 'piano',\n 'pi',\n 'photo-video',\n 'phone-volume',\n 'phone-square-alt',\n 'phone-square',\n 'phone-slash',\n 'phone-rotary',\n 'phone-plus',\n 'phone-office',\n 'phone-laptop',\n 'phone-alt',\n 'phone',\n 'person-sign',\n 'person-dolly-empty',\n 'person-dolly',\n 'person-carry',\n 'person-booth',\n 'percentage',\n 'percent',\n 'pepper-hot',\n 'people-carry',\n 'people-arrows',\n 'pennant',\n 'pencil-ruler',\n 'pencil-paintbrush',\n 'pencil-alt',\n 'pencil',\n 'pen-square',\n 'pen-nib',\n 'pen-fancy',\n 'pen-alt',\n 'pen',\n 'pegasus',\n 'peace',\n 'paw-claws',\n 'paw-alt',\n 'paw',\n 'pause-circle',\n 'pause',\n 'paste',\n 'pastafarianism',\n 'passport',\n 'parking-slash',\n 'parking-circle-slash',\n 'parking-circle',\n 'parking',\n 'paragraph-rtl',\n 'paragraph',\n 'parachute-box',\n 'paperclip',\n 'paper-plane',\n 'pallet-alt',\n 'pallet',\n 'palette',\n 'paint-roller',\n 'paint-brush-alt',\n 'paint-brush',\n 'pager',\n 'page-break',\n 'overline',\n 'oven',\n 'outlet',\n 'outdent',\n 'otter',\n 'ornament',\n 'omega',\n 'om',\n 'oil-temp',\n 'oil-can',\n 'octagon',\n 'object-ungroup',\n 'object-group',\n 'notes-medical',\n 'not-equal',\n 'newspaper',\n 'neuter',\n 'network-wired',\n 'narwhal',\n 'music-slash',\n 'music-alt-slash',\n 'music-alt',\n 'music',\n 'mug-tea',\n 'mug-marshmallows',\n 'mug-hot',\n 'mug',\n 'mp3-player',\n 'mouse-pointer',\n 'mouse-alt',\n 'mouse',\n 'mountains',\n 'mountain',\n 'motorcycle',\n 'mosque',\n 'mortar-pestle',\n 'moon-stars',\n 'moon-cloud',\n 'moon',\n 'monument',\n 'monkey',\n 'monitor-heart-rate',\n 'money-check-edit-alt',\n 'money-check-edit',\n 'money-check-alt',\n 'money-check',\n 'money-bill-wave-alt',\n 'money-bill-wave',\n 'money-bill-alt',\n 'money-bill',\n 'mobile-android-alt',\n 'mobile-android',\n 'mobile-alt',\n 'mobile',\n 'mitten',\n 'mistletoe',\n 'minus-square',\n 'minus-octagon',\n 'minus-hexagon',\n 'minus-circle',\n 'minus',\n 'mind-share',\n 'microwave',\n 'microscope',\n 'microphone-stand',\n 'microphone-slash',\n 'microphone-alt-slash',\n 'microphone-alt',\n 'microphone',\n 'microchip',\n 'meteor',\n 'mercury',\n 'menorah',\n 'memory',\n 'meh-rolling-eyes',\n 'meh-blank',\n 'meh',\n 'megaphone',\n 'medkit',\n 'medal',\n 'meat',\n 'mask',\n 'mars-stroke-v',\n 'mars-stroke-h',\n 'mars-stroke',\n 'mars-double',\n 'mars',\n 'marker',\n 'map-signs',\n 'map-pin',\n 'map-marker-times',\n 'map-marker-smile',\n 'map-marker-slash',\n 'map-marker-question',\n 'map-marker-plus',\n 'map-marker-minus',\n 'map-marker-exclamation',\n 'map-marker-edit',\n 'map-marker-check',\n 'map-marker-alt-slash',\n 'map-marker-alt',\n 'map-marker',\n 'map-marked-alt',\n 'map-marked',\n 'map',\n 'mandolin',\n 'male',\n 'mailbox',\n 'mail-bulk',\n 'magnet',\n 'magic',\n 'mace',\n 'lungs-virus',\n 'lungs',\n 'luggage-cart',\n 'luchador',\n 'low-vision',\n 'loveseat',\n 'long-arrow-up',\n 'long-arrow-right',\n 'long-arrow-left',\n 'long-arrow-down',\n 'long-arrow-alt-up',\n 'long-arrow-alt-right',\n 'long-arrow-alt-left',\n 'long-arrow-alt-down',\n 'lock-open-alt',\n 'lock-open',\n 'lock-alt',\n 'lock',\n 'location-slash',\n 'location-circle',\n 'location-arrow',\n 'location',\n 'list-ul',\n 'list-ol',\n 'list-music',\n 'list-alt',\n 'list',\n 'lira-sign',\n 'lips',\n 'link',\n 'line-height',\n 'line-columns',\n 'lights-holiday',\n 'lightbulb-slash',\n 'lightbulb-on',\n 'lightbulb-exclamation',\n 'lightbulb-dollar',\n 'lightbulb',\n 'light-switch-on',\n 'light-switch-off',\n 'light-switch',\n 'light-ceiling',\n 'life-ring',\n 'level-up-alt',\n 'level-up',\n 'level-down-alt',\n 'level-down',\n 'less-than-equal',\n 'less-than',\n 'lemon',\n 'leaf-oak',\n 'leaf-maple',\n 'leaf-heart',\n 'leaf',\n 'layer-plus',\n 'layer-minus',\n 'layer-group',\n 'laugh-wink',\n 'laugh-squint',\n 'laugh-beam',\n 'laugh',\n 'lasso',\n 'laptop-medical',\n 'laptop-house',\n 'laptop-code',\n 'laptop',\n 'language',\n 'landmark-alt',\n 'landmark',\n 'lamp-floor',\n 'lamp-desk',\n 'lamp',\n 'lambda',\n 'knife-kitchen',\n 'kiwi-bird',\n 'kite',\n 'kiss-wink-heart',\n 'kiss-beam',\n 'kiss',\n 'kidneys',\n 'khanda',\n 'keynote',\n 'keyboard',\n 'key-skeleton',\n 'key',\n 'kerning',\n 'kazoo',\n 'kaaba',\n 'jug',\n 'joystick',\n 'journal-whills',\n 'joint',\n 'jedi',\n 'jack-o-lantern',\n 'italic',\n 'island-tropical',\n 'inventory',\n 'intersection',\n 'integral',\n 'inhaler',\n 'info-square',\n 'info-circle',\n 'info',\n 'infinity',\n 'industry-alt',\n 'industry',\n 'indent',\n 'inbox-out',\n 'inbox-in',\n 'inbox',\n 'images',\n 'image-polaroid',\n 'image',\n 'igloo',\n 'id-card-alt',\n 'id-card',\n 'id-badge',\n 'icons-alt',\n 'icons',\n 'icicles',\n 'ice-skate',\n 'ice-cream',\n 'i-cursor',\n 'hurricane',\n 'humidity',\n 'hryvnia',\n 'house-user',\n 'house-signal',\n 'house-return',\n 'house-night',\n 'house-leave',\n 'house-flood',\n 'house-day',\n 'house-damage',\n 'house',\n 'hourglass-start',\n 'hourglass-half',\n 'hourglass-end',\n 'hourglass',\n 'hotel',\n 'hotdog',\n 'hot-tub',\n 'hospitals',\n 'hospital-user',\n 'hospital-symbol',\n 'hospital-alt',\n 'hospital',\n 'horse-saddle',\n 'horse-head',\n 'horse',\n 'horizontal-rule',\n 'hood-cloak',\n 'home-lg-alt',\n 'home-lg',\n 'home-heart',\n 'home-alt',\n 'home',\n 'holly-berry',\n 'hockey-sticks',\n 'hockey-puck',\n 'hockey-mask',\n 'history',\n 'hippo',\n 'hiking',\n 'highlighter',\n 'hexagon',\n 'helmet-battle',\n 'helicopter',\n 'heat',\n 'heartbeat',\n 'heart-square',\n 'heart-rate',\n 'heart-circle',\n 'heart-broken',\n 'heart',\n 'headset',\n 'headphones-alt',\n 'headphones',\n 'heading',\n 'head-vr',\n 'head-side-virus',\n 'head-side-medical',\n 'head-side-mask',\n 'head-side-headphones',\n 'head-side-cough-slash',\n 'head-side-cough',\n 'head-side-brain',\n 'head-side',\n 'hdd',\n 'hat-wizard',\n 'hat-witch',\n 'hat-winter',\n 'hat-santa',\n 'hat-cowboy-side',\n 'hat-cowboy',\n 'hat-chef',\n 'hashtag',\n 'hard-hat',\n 'hanukiah',\n 'handshake-slash',\n 'handshake-alt-slash',\n 'handshake-alt',\n 'handshake',\n 'hands-wash',\n 'hands-usd',\n 'hands-helping',\n 'hands-heart',\n 'hands',\n 'hand-spock',\n 'hand-sparkles',\n 'hand-scissors',\n 'hand-rock',\n 'hand-receiving',\n 'hand-pointer',\n 'hand-point-up',\n 'hand-point-right',\n 'hand-point-left',\n 'hand-point-down',\n 'hand-peace',\n 'hand-paper',\n 'hand-middle-finger',\n 'hand-lizard',\n 'hand-holding-water',\n 'hand-holding-usd',\n 'hand-holding-seedling',\n 'hand-holding-medical',\n 'hand-holding-magic',\n 'hand-holding-heart',\n 'hand-holding-box',\n 'hand-holding',\n 'hand-heart',\n 'hamsa',\n 'hammer-war',\n 'hammer',\n 'hamburger',\n 'h4',\n 'h3',\n 'h2',\n 'h1',\n 'h-square',\n 'guitars',\n 'guitar-electric',\n 'guitar',\n 'grip-vertical',\n 'grip-lines-vertical',\n 'grip-lines',\n 'grip-horizontal',\n 'grin-wink',\n 'grin-tongue-wink',\n 'grin-tongue-squint',\n 'grin-tongue',\n 'grin-tears',\n 'grin-stars',\n 'grin-squint-tears',\n 'grin-squint',\n 'grin-hearts',\n 'grin-beam-sweat',\n 'grin-beam',\n 'grin-alt',\n 'grin',\n 'grimace',\n 'greater-than-equal',\n 'greater-than',\n 'gramophone',\n 'graduation-cap',\n 'gopuram',\n 'golf-club',\n 'golf-ball',\n 'globe-stand',\n 'globe-snow',\n 'globe-europe',\n 'globe-asia',\n 'globe-americas',\n 'globe-africa',\n 'globe',\n 'glasses-alt',\n 'glasses',\n 'glass-whiskey-rocks',\n 'glass-whiskey',\n 'glass-martini-alt',\n 'glass-martini',\n 'glass-citrus',\n 'glass-cheers',\n 'glass-champagne',\n 'glass',\n 'gingerbread-man',\n 'gifts',\n 'gift-card',\n 'gift',\n 'ghost',\n 'genderless',\n 'gem',\n 'gavel',\n 'gas-pump-slash',\n 'gas-pump',\n 'garage-open',\n 'garage-car',\n 'garage',\n 'gamepad-alt',\n 'gamepad',\n 'game-console-handheld',\n 'game-board-alt',\n 'game-board',\n 'galaxy',\n 'futbol',\n 'funnel-dollar',\n 'function',\n 'frown-open',\n 'frown',\n 'frosty-head',\n 'frog',\n 'french-fries',\n 'fragile',\n 'forward',\n 'forklift',\n 'football-helmet',\n 'football-ball',\n 'font-case',\n 'font',\n 'folders',\n 'folder-upload',\n 'folder-tree',\n 'folder-times',\n 'folder-plus',\n 'folder-open',\n 'folder-minus',\n 'folder-download',\n 'folder',\n 'fog',\n 'flux-capacitor',\n 'flute',\n 'flushed',\n 'flower-tulip',\n 'flower-daffodil',\n 'flower',\n 'flask-potion',\n 'flask-poison',\n 'flask',\n 'flashlight',\n 'flame',\n 'flag-usa',\n 'flag-checkered',\n 'flag-alt',\n 'flag',\n 'fist-raised',\n 'fish-cooked',\n 'fish',\n 'first-aid',\n 'fireplace',\n 'fire-smoke',\n 'fire-extinguisher',\n 'fire-alt',\n 'fire',\n 'fingerprint',\n 'filter',\n 'film-canister',\n 'film-alt',\n 'film',\n 'fill-drip',\n 'fill',\n 'files-medical',\n 'file-word',\n 'file-video',\n 'file-user',\n 'file-upload',\n 'file-times',\n 'file-spreadsheet',\n 'file-signature',\n 'file-search',\n 'file-prescription',\n 'file-powerpoint',\n 'file-plus',\n 'file-pdf',\n 'file-music',\n 'file-minus',\n 'file-medical-alt',\n 'file-medical',\n 'file-invoice-dollar',\n 'file-invoice',\n 'file-import',\n 'file-image',\n 'file-export',\n 'file-exclamation',\n 'file-excel',\n 'file-edit',\n 'file-download',\n 'file-csv',\n 'file-contract',\n 'file-code',\n 'file-check',\n 'file-chart-pie',\n 'file-chart-line',\n 'file-certificate',\n 'file-audio',\n 'file-archive',\n 'file-alt',\n 'file',\n 'fighter-jet',\n 'field-hockey',\n 'female',\n 'feather-alt',\n 'feather',\n 'fax',\n 'faucet-drip',\n 'faucet',\n 'fast-forward',\n 'fast-backward',\n 'farm',\n 'fan-table',\n 'fan',\n 'eye-slash',\n 'eye-evil',\n 'eye-dropper',\n 'eye',\n 'external-link-square-alt',\n 'external-link-square',\n 'external-link-alt',\n 'external-link',\n 'expand-wide',\n 'expand-arrows-alt',\n 'expand-arrows',\n 'expand-alt',\n 'expand',\n 'exclamation-triangle',\n 'exclamation-square',\n 'exclamation-circle',\n 'exclamation',\n 'exchange-alt',\n 'exchange',\n 'euro-sign',\n 'ethernet',\n 'eraser',\n 'equals',\n 'envelope-square',\n 'envelope-open-text',\n 'envelope-open-dollar',\n 'envelope-open',\n 'envelope',\n 'engine-warning',\n 'empty-set',\n 'ellipsis-v-alt',\n 'ellipsis-v',\n 'ellipsis-h-alt',\n 'ellipsis-h',\n 'elephant',\n 'eject',\n 'egg-fried',\n 'egg',\n 'edit',\n 'eclipse-alt',\n 'eclipse',\n 'ear-muffs',\n 'ear',\n 'dungeon',\n 'dumpster-fire',\n 'dumpster',\n 'dumbbell',\n 'duck',\n 'dryer-alt',\n 'dryer',\n 'drumstick-bite',\n 'drumstick',\n 'drum-steelpan',\n 'drum',\n 'drone-alt',\n 'drone',\n 'dreidel',\n 'draw-square',\n 'draw-polygon',\n 'draw-circle',\n 'dragon',\n 'drafting-compass',\n 'download',\n 'dove',\n 'dot-circle',\n 'door-open',\n 'door-closed',\n 'donate',\n 'dolly-flatbed-empty',\n 'dolly-flatbed-alt',\n 'dolly-flatbed',\n 'dolly-empty',\n 'dolly',\n 'dollar-sign',\n 'dog-leashed',\n 'dog',\n 'do-not-enter',\n 'dna',\n 'dizzy',\n 'divide',\n 'disease',\n 'disc-drive',\n 'directions',\n 'diploma',\n 'digital-tachograph',\n 'digging',\n 'dice-two',\n 'dice-three',\n 'dice-six',\n 'dice-one',\n 'dice-four',\n 'dice-five',\n 'dice-d8',\n 'dice-d6',\n 'dice-d4',\n 'dice-d20',\n 'dice-d12',\n 'dice-d10',\n 'dice',\n 'diamond',\n 'diagnoses',\n 'dharmachakra',\n 'dewpoint',\n 'desktop-alt',\n 'desktop',\n 'democrat',\n 'deer-rudolph',\n 'deer',\n 'debug',\n 'deaf',\n 'database',\n 'dagger',\n 'cut',\n 'curling',\n 'cubes',\n 'cube',\n 'crutches',\n 'crutch',\n 'crown',\n 'crow',\n 'crosshairs',\n 'cross',\n 'crop-alt',\n 'crop',\n 'croissant',\n 'cricket',\n 'credit-card-front',\n 'credit-card-blank',\n 'credit-card',\n 'cowbell-more',\n 'cowbell',\n 'cow',\n 'couch',\n 'corn',\n 'copyright',\n 'copy',\n 'cookie-bite',\n 'cookie',\n 'conveyor-belt-alt',\n 'conveyor-belt',\n 'container-storage',\n 'construction',\n 'concierge-bell',\n 'computer-speaker',\n 'computer-classic',\n 'compress-wide',\n 'compress-arrows-alt',\n 'compress-alt',\n 'compress',\n 'compass-slash',\n 'compass',\n 'compact-disc',\n 'comments-dollar',\n 'comments-alt-dollar',\n 'comments-alt',\n 'comments',\n 'comment-times',\n 'comment-smile',\n 'comment-slash',\n 'comment-plus',\n 'comment-music',\n 'comment-minus',\n 'comment-medical',\n 'comment-lines',\n 'comment-exclamation',\n 'comment-edit',\n 'comment-dots',\n 'comment-dollar',\n 'comment-check',\n 'comment-alt-times',\n 'comment-alt-smile',\n 'comment-alt-slash',\n 'comment-alt-plus',\n 'comment-alt-music',\n 'comment-alt-minus',\n 'comment-alt-medical',\n 'comment-alt-lines',\n 'comment-alt-exclamation',\n 'comment-alt-edit',\n 'comment-alt-dots',\n 'comment-alt-dollar',\n 'comment-alt-check',\n 'comment-alt',\n 'comment',\n 'comet',\n 'columns',\n 'coins',\n 'coin',\n 'cogs',\n 'cog',\n 'coffin-cross',\n 'coffin',\n 'coffee-togo',\n 'coffee-pot',\n 'coffee',\n 'code-merge',\n 'code-commit',\n 'code-branch',\n 'code',\n 'cocktail',\n 'club',\n 'clouds-sun',\n 'clouds-moon',\n 'clouds',\n 'cloud-upload-alt',\n 'cloud-upload',\n 'cloud-sun-rain',\n 'cloud-sun',\n 'cloud-snow',\n 'cloud-sleet',\n 'cloud-showers-heavy',\n 'cloud-showers',\n 'cloud-rainbow',\n 'cloud-rain',\n 'cloud-music',\n 'cloud-moon-rain',\n 'cloud-moon',\n 'cloud-meatball',\n 'cloud-hail-mixed',\n 'cloud-hail',\n 'cloud-drizzle',\n 'cloud-download-alt',\n 'cloud-download',\n 'cloud',\n 'closed-captioning',\n 'clone',\n 'clock',\n 'clipboard-user',\n 'clipboard-prescription',\n 'clipboard-list-check',\n 'clipboard-list',\n 'clipboard-check',\n 'clipboard',\n 'clinic-medical',\n 'claw-marks',\n 'clarinet',\n 'city',\n 'circle-notch',\n 'circle',\n 'church',\n 'chimney',\n 'child',\n 'chevron-up',\n 'chevron-square-up',\n 'chevron-square-right',\n 'chevron-square-left',\n 'chevron-square-down',\n 'chevron-right',\n 'chevron-left',\n 'chevron-down',\n 'chevron-double-up',\n 'chevron-double-right',\n 'chevron-double-left',\n 'chevron-double-down',\n 'chevron-circle-up',\n 'chevron-circle-right',\n 'chevron-circle-left',\n 'chevron-circle-down',\n 'chess-rook-alt',\n 'chess-rook',\n 'chess-queen-alt',\n 'chess-queen',\n 'chess-pawn-alt',\n 'chess-pawn',\n 'chess-knight-alt',\n 'chess-knight',\n 'chess-king-alt',\n 'chess-king',\n 'chess-clock-alt',\n 'chess-clock',\n 'chess-board',\n 'chess-bishop-alt',\n 'chess-bishop',\n 'chess',\n 'cheeseburger',\n 'cheese-swiss',\n 'cheese',\n 'check-square',\n 'check-double',\n 'check-circle',\n 'check',\n 'chart-scatter',\n 'chart-pie-alt',\n 'chart-pie',\n 'chart-network',\n 'chart-line-down',\n 'chart-line',\n 'chart-bar',\n 'chart-area',\n 'charging-station',\n 'chalkboard-teacher',\n 'chalkboard',\n 'chair-office',\n 'chair',\n 'certificate',\n 'cctv',\n 'cauldron',\n 'cat-space',\n 'cat',\n 'cassette-tape',\n 'cash-register',\n 'cart-plus',\n 'cart-arrow-down',\n 'cars',\n 'carrot',\n 'caret-up',\n 'caret-square-up',\n 'caret-square-right',\n 'caret-square-left',\n 'caret-square-down',\n 'caret-right',\n 'caret-left',\n 'caret-down',\n 'caret-circle-up',\n 'caret-circle-right',\n 'caret-circle-left',\n 'caret-circle-down',\n 'caravan-alt',\n 'caravan',\n 'car-wash',\n 'car-tilt',\n 'car-side',\n 'car-mechanic',\n 'car-garage',\n 'car-crash',\n 'car-bus',\n 'car-bump',\n 'car-building',\n 'car-battery',\n 'car-alt',\n 'car',\n 'capsules',\n 'cannabis',\n 'candy-corn',\n 'candy-cane',\n 'candle-holder',\n 'campground',\n 'campfire',\n 'camera-retro',\n 'camera-polaroid',\n 'camera-movie',\n 'camera-home',\n 'camera-alt',\n 'camera',\n 'camcorder',\n 'calendar-week',\n 'calendar-times',\n 'calendar-star',\n 'calendar-plus',\n 'calendar-minus',\n 'calendar-exclamation',\n 'calendar-edit',\n 'calendar-day',\n 'calendar-check',\n 'calendar-alt',\n 'calendar',\n 'calculator-alt',\n 'calculator',\n 'cactus',\n 'cabinet-filing',\n 'business-time',\n 'bus-school',\n 'bus-alt',\n 'bus',\n 'burrito',\n 'burn',\n 'burger-soda',\n 'bullseye-pointer',\n 'bullseye-arrow',\n 'bullseye',\n 'bullhorn',\n 'building',\n 'bug',\n 'brush',\n 'browser',\n 'broom',\n 'broadcast-tower',\n 'bring-front',\n 'bring-forward',\n 'briefcase-medical',\n 'briefcase',\n 'bread-slice',\n 'bread-loaf',\n 'brain',\n 'braille',\n 'brackets-curly',\n 'brackets',\n 'boxing-glove',\n 'boxes-alt',\n 'boxes',\n 'box-usd',\n 'box-up',\n 'box-tissue',\n 'box-open',\n 'box-heart',\n 'box-full',\n 'box-fragile',\n 'box-check',\n 'box-ballot',\n 'box-alt',\n 'box',\n 'bowling-pins',\n 'bowling-ball',\n 'bow-arrow',\n 'border-top',\n 'border-style-alt',\n 'border-style',\n 'border-right',\n 'border-outer',\n 'border-none',\n 'border-left',\n 'border-inner',\n 'border-center-v',\n 'border-center-h',\n 'border-bottom',\n 'border-all',\n 'booth-curtain',\n 'boot',\n 'boombox',\n 'books-medical',\n 'books',\n 'bookmark',\n 'book-user',\n 'book-spells',\n 'book-reader',\n 'book-open',\n 'book-medical',\n 'book-heart',\n 'book-dead',\n 'book-alt',\n 'book',\n 'bong',\n 'bone-break',\n 'bone',\n 'bomb',\n 'bolt',\n 'bold',\n 'blog',\n 'blinds-raised',\n 'blinds-open',\n 'blinds',\n 'blind',\n 'blender-phone',\n 'blender',\n 'blanket',\n 'birthday-cake',\n 'biohazard',\n 'binoculars',\n 'biking-mountain',\n 'biking',\n 'bicycle',\n 'bible',\n 'bezier-curve',\n 'betamax',\n 'bells',\n 'bell-slash',\n 'bell-school-slash',\n 'bell-school',\n 'bell-plus',\n 'bell-on',\n 'bell-exclamation',\n 'bell',\n 'beer',\n 'bed-empty',\n 'bed-bunk',\n 'bed-alt',\n 'bed',\n 'battery-three-quarters',\n 'battery-slash',\n 'battery-quarter',\n 'battery-half',\n 'battery-full',\n 'battery-empty',\n 'battery-bolt',\n 'bath',\n 'bat',\n 'basketball-hoop',\n 'basketball-ball',\n 'baseball-ball',\n 'baseball',\n 'bars',\n 'barcode-scan',\n 'barcode-read',\n 'barcode-alt',\n 'barcode',\n 'banjo',\n 'band-aid',\n 'ban',\n 'ballot-check',\n 'ballot',\n 'ball-pile',\n 'balance-scale-right',\n 'balance-scale-left',\n 'balance-scale',\n 'bahai',\n 'bags-shopping',\n 'badger-honey',\n 'badge-sheriff',\n 'badge-percent',\n 'badge-dollar',\n 'badge-check',\n 'badge',\n 'bacterium',\n 'bacteria',\n 'bacon',\n 'backward',\n 'backspace',\n 'backpack',\n 'baby-carriage',\n 'baby',\n 'axe-battle',\n 'axe',\n 'award',\n 'audio-description',\n 'atom-alt',\n 'atom',\n 'atlas',\n 'at',\n 'asterisk',\n 'assistive-listening-systems',\n 'arrows-v',\n 'arrows-h',\n 'arrows-alt-v',\n 'arrows-alt-h',\n 'arrows-alt',\n 'arrows',\n 'arrow-up',\n 'arrow-to-top',\n 'arrow-to-right',\n 'arrow-to-left',\n 'arrow-to-bottom',\n 'arrow-square-up',\n 'arrow-square-right',\n 'arrow-square-left',\n 'arrow-square-down',\n 'arrow-right',\n 'arrow-left',\n 'arrow-from-top',\n 'arrow-from-right',\n 'arrow-from-left',\n 'arrow-from-bottom',\n 'arrow-down',\n 'arrow-circle-up',\n 'arrow-circle-right',\n 'arrow-circle-left',\n 'arrow-circle-down',\n 'arrow-alt-up',\n 'arrow-alt-to-top',\n 'arrow-alt-to-right',\n 'arrow-alt-to-left',\n 'arrow-alt-to-bottom',\n 'arrow-alt-square-up',\n 'arrow-alt-square-right',\n 'arrow-alt-square-left',\n 'arrow-alt-square-down',\n 'arrow-alt-right',\n 'arrow-alt-left',\n 'arrow-alt-from-top',\n 'arrow-alt-from-right',\n 'arrow-alt-from-left',\n 'arrow-alt-from-bottom',\n 'arrow-alt-down',\n 'arrow-alt-circle-up',\n 'arrow-alt-circle-right',\n 'arrow-alt-circle-left',\n 'arrow-alt-circle-down',\n 'archway',\n 'archive',\n 'apple-crate',\n 'apple-alt',\n 'ankh',\n 'angry',\n 'angle-up',\n 'angle-right',\n 'angle-left',\n 'angle-down',\n 'angle-double-up',\n 'angle-double-right',\n 'angle-double-left',\n 'angle-double-down',\n 'angel',\n 'anchor',\n 'analytics',\n 'amp-guitar',\n 'american-sign-language-interpreting',\n 'ambulance',\n 'allergies',\n 'align-slash',\n 'align-right',\n 'align-left',\n 'align-justify',\n 'align-center',\n 'alien-monster',\n 'alien',\n 'alicorn',\n 'album-collection',\n 'album',\n 'alarm-snooze',\n 'alarm-plus',\n 'alarm-exclamation',\n 'alarm-clock',\n 'air-freshener',\n 'air-conditioner',\n 'adjust',\n 'address-card',\n 'address-book',\n 'ad',\n 'acorn',\n 'abacus'\n];\n\nexport type FontAwesomeIcon = (typeof FontAwesomeIcons)[number];\n\nexport const FontAwesomeFreeSolidIcons: FontAwesomeIcon[] = [\n 'yin-yang',\n 'yen-sign',\n 'x-ray',\n 'wrench',\n 'won-sign',\n 'wine-glass-alt',\n 'wine-glass',\n 'wine-bottle',\n 'window-restore',\n 'window-minimize',\n 'window-maximize',\n 'window-close',\n 'wind',\n 'wifi',\n 'wheelchair',\n 'weight-hanging',\n 'weight',\n 'wave-square',\n 'water',\n 'warehouse',\n 'wallet',\n 'walking',\n 'vr-cardboard',\n 'vote-yea',\n 'volume-up',\n 'volume-off',\n 'volume-mute',\n 'volume-down',\n 'volleyball-ball',\n 'voicemail',\n 'viruses',\n 'virus-slash',\n 'virus',\n 'vihara',\n 'video-slash',\n 'video',\n 'vials',\n 'vial',\n 'vest-patches',\n 'vest',\n 'venus-mars',\n 'venus-double',\n 'venus',\n 'vector-square',\n 'utensils',\n 'utensil-spoon',\n 'users-slash',\n 'users-cog',\n 'users',\n 'user-times',\n 'user-tie',\n 'user-tag',\n 'user-slash',\n 'user-shield',\n 'user-secret',\n 'user-plus',\n 'user-nurse',\n 'user-ninja',\n 'user-minus',\n 'user-md',\n 'user-lock',\n 'user-injured',\n 'user-graduate',\n 'user-friends',\n 'user-edit',\n 'user-cog',\n 'user-clock',\n 'user-circle',\n 'user-check',\n 'user-astronaut',\n 'user-alt-slash',\n 'user-alt',\n 'user',\n 'upload',\n 'unlock-alt',\n 'unlock',\n 'unlink',\n 'university',\n 'universal-access',\n 'undo-alt',\n 'undo',\n 'underline',\n 'umbrella-beach',\n 'umbrella',\n 'tv',\n 'tty',\n 'tshirt',\n 'truck-pickup',\n 'truck-moving',\n 'truck-monster',\n 'truck-loading',\n 'truck',\n 'trophy',\n 'tree',\n 'trash-restore-alt',\n 'trash-restore',\n 'trash-alt',\n 'trash',\n 'transgender-alt',\n 'transgender',\n 'tram',\n 'train',\n 'trailer',\n 'traffic-light',\n 'trademark',\n 'tractor',\n 'torii-gate',\n 'torah',\n 'tooth',\n 'tools',\n 'toolbox',\n 'toilet-paper-slash',\n 'toilet-paper',\n 'toilet',\n 'toggle-on',\n 'toggle-off',\n 'tired',\n 'tint-slash',\n 'tint',\n 'times-circle',\n 'times',\n 'ticket-alt',\n 'thumbtack',\n 'thumbs-up',\n 'thumbs-down',\n 'thermometer-three-quarters',\n 'thermometer-quarter',\n 'thermometer-half',\n 'thermometer-full',\n 'thermometer-empty',\n 'thermometer',\n 'theater-masks',\n 'th-list',\n 'th-large',\n 'th',\n 'text-width',\n 'text-height',\n 'terminal',\n 'tenge',\n 'temperature-low',\n 'temperature-high',\n 'teeth-open',\n 'teeth',\n 'taxi',\n 'tasks',\n 'tape',\n 'tags',\n 'tag',\n 'tachometer-alt',\n 'tablets',\n 'tablet-alt',\n 'tablet',\n 'table-tennis',\n 'table',\n 'syringe',\n 'sync-alt',\n 'sync',\n 'synagogue',\n 'swimming-pool',\n 'swimmer',\n 'swatchbook',\n 'surprise',\n 'superscript',\n 'sun',\n 'suitcase-rolling',\n 'suitcase',\n 'subway',\n 'subscript',\n 'stroopwafel',\n 'strikethrough',\n 'street-view',\n 'stream',\n 'store-slash',\n 'store-alt-slash',\n 'store-alt',\n 'store',\n 'stopwatch-20',\n 'stopwatch',\n 'stop-circle',\n 'stop',\n 'sticky-note',\n 'stethoscope',\n 'step-forward',\n 'step-backward',\n 'star-of-life',\n 'star-of-david',\n 'star-half-alt',\n 'star-half',\n 'star-and-crescent',\n 'star',\n 'stamp',\n 'square-root-alt',\n 'square-full',\n 'square',\n 'spray-can',\n 'splotch',\n 'spinner',\n 'spider',\n 'spell-check',\n 'space-shuttle',\n 'spa',\n 'sort-up',\n 'sort-numeric-up-alt',\n 'sort-numeric-up',\n 'sort-numeric-down-alt',\n 'sort-numeric-down',\n 'sort-down',\n 'sort-amount-up-alt',\n 'sort-amount-up',\n 'sort-amount-down-alt',\n 'sort-amount-down',\n 'sort-alpha-up-alt',\n 'sort-alpha-up',\n 'sort-alpha-down-alt',\n 'sort-alpha-down',\n 'sort',\n 'solar-panel',\n 'socks',\n 'soap',\n 'snowplow',\n 'snowman',\n 'snowflake',\n 'snowboarding',\n 'sms',\n 'smoking-ban',\n 'smoking',\n 'smog',\n 'smile-wink',\n 'smile-beam',\n 'smile',\n 'sliders-h',\n 'sleigh',\n 'slash',\n 'skull-crossbones',\n 'skull',\n 'skiing-nordic',\n 'skiing',\n 'skating',\n 'sitemap',\n 'sink',\n 'sim-card',\n 'signature',\n 'signal',\n 'sign-out-alt',\n 'sign-language',\n 'sign-in-alt',\n 'sign',\n 'shuttle-van',\n 'shower',\n 'shopping-cart',\n 'shopping-basket',\n 'shopping-bag',\n 'shoe-prints',\n 'shipping-fast',\n 'ship',\n 'shield-virus',\n 'shield-alt',\n 'shekel-sign',\n 'share-square',\n 'share-alt-square',\n 'share-alt',\n 'share',\n 'shapes',\n 'server',\n 'seedling',\n 'search-plus',\n 'search-minus',\n 'search-location',\n 'search-dollar',\n 'search',\n 'sd-card',\n 'scroll',\n 'screwdriver',\n 'school',\n 'save',\n 'satellite-dish',\n 'satellite',\n 'sad-tear',\n 'sad-cry',\n 'rupee-sign',\n 'running',\n 'ruler-vertical',\n 'ruler-horizontal',\n 'ruler-combined',\n 'ruler',\n 'ruble-sign',\n 'rss-square',\n 'rss',\n 'route',\n 'rocket',\n 'robot',\n 'road',\n 'ring',\n 'ribbon',\n 'retweet',\n 'restroom',\n 'republican',\n 'reply-all',\n 'reply',\n 'remove-format',\n 'registered',\n 'redo-alt',\n 'redo',\n 'recycle',\n 'record-vinyl',\n 'receipt',\n 'random',\n 'rainbow',\n 'radiation-alt',\n 'radiation',\n 'quran',\n 'quote-right',\n 'quote-left',\n 'quidditch',\n 'question-circle',\n 'question',\n 'qrcode',\n 'puzzle-piece',\n 'pump-soap',\n 'pump-medical',\n 'project-diagram',\n 'procedures',\n 'print',\n 'prescription-bottle-alt',\n 'prescription-bottle',\n 'prescription',\n 'praying-hands',\n 'pray',\n 'power-off',\n 'pound-sign',\n 'portrait',\n 'poop',\n 'poo-storm',\n 'poo',\n 'poll-h',\n 'poll',\n 'podcast',\n 'plus-square',\n 'plus-circle',\n 'plus',\n 'plug',\n 'play-circle',\n 'play',\n 'plane-slash',\n 'plane-departure',\n 'plane-arrival',\n 'plane',\n 'place-of-worship',\n 'pizza-slice',\n 'pills',\n 'piggy-bank',\n 'photo-video',\n 'phone-volume',\n 'phone-square-alt',\n 'phone-square',\n 'phone-slash',\n 'phone-alt',\n 'phone',\n 'person-booth',\n 'percentage',\n 'percent',\n 'pepper-hot',\n 'people-carry',\n 'people-arrows',\n 'pencil-ruler',\n 'pencil-alt',\n 'pen-square',\n 'pen-nib',\n 'pen-fancy',\n 'pen-alt',\n 'pen',\n 'peace',\n 'paw',\n 'pause-circle',\n 'pause',\n 'paste',\n 'pastafarianism',\n 'passport',\n 'parking',\n 'paragraph',\n 'parachute-box',\n 'paperclip',\n 'paper-plane',\n 'pallet',\n 'palette',\n 'paint-roller',\n 'paint-brush',\n 'pager',\n 'outdent',\n 'otter',\n 'om',\n 'oil-can',\n 'object-ungroup',\n 'object-group',\n 'notes-medical',\n 'not-equal',\n 'newspaper',\n 'neuter',\n 'network-wired',\n 'music',\n 'mug-hot',\n 'mouse-pointer',\n 'mouse',\n 'mountain',\n 'motorcycle',\n 'mosque',\n 'mortar-pestle',\n 'moon',\n 'monument',\n 'money-check-alt',\n 'money-check',\n 'money-bill-wave-alt',\n 'money-bill-wave',\n 'money-bill-alt',\n 'money-bill',\n 'mobile-alt',\n 'mobile',\n 'mitten',\n 'minus-square',\n 'minus-circle',\n 'minus',\n 'microscope',\n 'microphone-slash',\n 'microphone-alt-slash',\n 'microphone-alt',\n 'microphone',\n 'microchip',\n 'meteor',\n 'mercury',\n 'menorah',\n 'memory',\n 'meh-rolling-eyes',\n 'meh-blank',\n 'meh',\n 'medkit',\n 'medal',\n 'mask',\n 'mars-stroke-v',\n 'mars-stroke-h',\n 'mars-stroke',\n 'mars-double',\n 'mars',\n 'marker',\n 'map-signs',\n 'map-pin',\n 'map-marker-alt',\n 'map-marker',\n 'map-marked-alt',\n 'map-marked',\n 'map',\n 'male',\n 'mail-bulk',\n 'magnet',\n 'magic',\n 'lungs-virus',\n 'lungs',\n 'luggage-cart',\n 'low-vision',\n 'long-arrow-alt-up',\n 'long-arrow-alt-right',\n 'long-arrow-alt-left',\n 'long-arrow-alt-down',\n 'lock-open',\n 'lock',\n 'location-arrow',\n 'list-ul',\n 'list-ol',\n 'list-alt',\n 'list',\n 'lira-sign',\n 'link',\n 'lightbulb',\n 'life-ring',\n 'level-up-alt',\n 'level-down-alt',\n 'less-than-equal',\n 'less-than',\n 'lemon',\n 'leaf',\n 'layer-group',\n 'laugh-wink',\n 'laugh-squint',\n 'laugh-beam',\n 'laugh',\n 'laptop-medical',\n 'laptop-house',\n 'laptop-code',\n 'laptop',\n 'language',\n 'landmark',\n 'kiwi-bird',\n 'kiss-wink-heart',\n 'kiss-beam',\n 'kiss',\n 'khanda',\n 'keyboard',\n 'key',\n 'kaaba',\n 'journal-whills',\n 'joint',\n 'jedi',\n 'italic',\n 'info-circle',\n 'info',\n 'infinity',\n 'industry',\n 'indent',\n 'inbox',\n 'images',\n 'image',\n 'igloo',\n 'id-card-alt',\n 'id-card',\n 'id-badge',\n 'icons',\n 'icicles',\n 'ice-cream',\n 'i-cursor',\n 'hryvnia',\n 'house-user',\n 'house-damage',\n 'hourglass-start',\n 'hourglass-half',\n 'hourglass-end',\n 'hourglass',\n 'hotel',\n 'hotdog',\n 'hot-tub',\n 'hospital-user',\n 'hospital-symbol',\n 'hospital-alt',\n 'hospital',\n 'horse-head',\n 'horse',\n 'home',\n 'holly-berry',\n 'hockey-puck',\n 'history',\n 'hippo',\n 'hiking',\n 'highlighter',\n 'helicopter',\n 'heartbeat',\n 'heart-broken',\n 'heart',\n 'headset',\n 'headphones-alt',\n 'headphones',\n 'heading',\n 'head-side-virus',\n 'head-side-mask',\n 'head-side-cough-slash',\n 'head-side-cough',\n 'hdd',\n 'hat-wizard',\n 'hat-cowboy-side',\n 'hat-cowboy',\n 'hashtag',\n 'hard-hat',\n 'hanukiah',\n 'handshake-slash',\n 'handshake-alt-slash',\n 'handshake',\n 'hands-wash',\n 'hands-helping',\n 'hands',\n 'hand-spock',\n 'hand-sparkles',\n 'hand-scissors',\n 'hand-rock',\n 'hand-pointer',\n 'hand-point-up',\n 'hand-point-right',\n 'hand-point-left',\n 'hand-point-down',\n 'hand-peace',\n 'hand-paper',\n 'hand-middle-finger',\n 'hand-lizard',\n 'hand-holding-water',\n 'hand-holding-usd',\n 'hand-holding-medical',\n 'hand-holding-heart',\n 'hand-holding',\n 'hamsa',\n 'hammer',\n 'hamburger',\n 'h-square',\n 'guitar',\n 'grip-vertical',\n 'grip-lines-vertical',\n 'grip-lines',\n 'grip-horizontal',\n 'grin-wink',\n 'grin-tongue-wink',\n 'grin-tongue-squint',\n 'grin-tongue',\n 'grin-tears',\n 'grin-stars',\n 'grin-squint-tears',\n 'grin-squint',\n 'grin-hearts',\n 'grin-beam-sweat',\n 'grin-beam',\n 'grin-alt',\n 'grin',\n 'grimace',\n 'greater-than-equal',\n 'greater-than',\n 'graduation-cap',\n 'gopuram',\n 'golf-ball',\n 'globe-europe',\n 'globe-asia',\n 'globe-americas',\n 'globe-africa',\n 'globe',\n 'glasses',\n 'glass-whiskey',\n 'glass-martini-alt',\n 'glass-martini',\n 'glass-cheers',\n 'gifts',\n 'gift',\n 'ghost',\n 'genderless',\n 'gem',\n 'gavel',\n 'gas-pump',\n 'gamepad',\n 'futbol',\n 'funnel-dollar',\n 'frown-open',\n 'frown',\n 'frog',\n 'forward',\n 'football-ball',\n 'font',\n 'folder-plus',\n 'folder-open',\n 'folder-minus',\n 'folder',\n 'flushed',\n 'flask',\n 'flag-usa',\n 'flag-checkered',\n 'flag',\n 'fist-raised',\n 'fish',\n 'first-aid',\n 'fire-extinguisher',\n 'fire-alt',\n 'fire',\n 'fingerprint',\n 'filter',\n 'film',\n 'fill-drip',\n 'fill',\n 'file-word',\n 'file-video',\n 'file-upload',\n 'file-signature',\n 'file-prescription',\n 'file-powerpoint',\n 'file-pdf',\n 'file-medical-alt',\n 'file-medical',\n 'file-invoice-dollar',\n 'file-invoice',\n 'file-import',\n 'file-image',\n 'file-export',\n 'file-excel',\n 'file-download',\n 'file-csv',\n 'file-contract',\n 'file-code',\n 'file-audio',\n 'file-archive',\n 'file-alt',\n 'file',\n 'fighter-jet',\n 'female',\n 'feather-alt',\n 'feather',\n 'fax',\n 'faucet',\n 'fast-forward',\n 'fast-backward',\n 'fan',\n 'eye-slash',\n 'eye-dropper',\n 'eye',\n 'external-link-square-alt',\n 'external-link-alt',\n 'expand-arrows-alt',\n 'expand-alt',\n 'expand',\n 'exclamation-triangle',\n 'exclamation-circle',\n 'exclamation',\n 'exchange-alt',\n 'euro-sign',\n 'ethernet',\n 'eraser',\n 'equals',\n 'envelope-square',\n 'envelope-open-text',\n 'envelope-open',\n 'envelope',\n 'ellipsis-v',\n 'ellipsis-h',\n 'eject',\n 'egg',\n 'edit',\n 'dungeon',\n 'dumpster-fire',\n 'dumpster',\n 'dumbbell',\n 'drumstick-bite',\n 'drum-steelpan',\n 'drum',\n 'draw-polygon',\n 'dragon',\n 'drafting-compass',\n 'download',\n 'dove',\n 'dot-circle',\n 'door-open',\n 'door-closed',\n 'donate',\n 'dolly-flatbed',\n 'dolly',\n 'dollar-sign',\n 'dog',\n 'dna',\n 'dizzy',\n 'divide',\n 'disease',\n 'directions',\n 'digital-tachograph',\n 'dice-two',\n 'dice-three',\n 'dice-six',\n 'dice-one',\n 'dice-four',\n 'dice-five',\n 'dice-d6',\n 'dice-d20',\n 'dice',\n 'diagnoses',\n 'dharmachakra',\n 'desktop',\n 'democrat',\n 'deaf',\n 'database',\n 'cut',\n 'cubes',\n 'cube',\n 'crutch',\n 'crown',\n 'crow',\n 'crosshairs',\n 'cross',\n 'crop-alt',\n 'crop',\n 'credit-card',\n 'couch',\n 'copyright',\n 'copy',\n 'cookie-bite',\n 'cookie',\n 'concierge-bell',\n 'compress-arrows-alt',\n 'compress-alt',\n 'compress',\n 'compass',\n 'compact-disc',\n 'comments-dollar',\n 'comments',\n 'comment-slash',\n 'comment-medical',\n 'comment-dots',\n 'comment-dollar',\n 'comment-alt',\n 'comment',\n 'columns',\n 'coins',\n 'cogs',\n 'cog',\n 'coffee',\n 'code-branch',\n 'code',\n 'cocktail',\n 'cloud-upload-alt',\n 'cloud-sun-rain',\n 'cloud-sun',\n 'cloud-showers-heavy',\n 'cloud-rain',\n 'cloud-moon-rain',\n 'cloud-moon',\n 'cloud-meatball',\n 'cloud-download-alt',\n 'cloud',\n 'closed-captioning',\n 'clone',\n 'clock',\n 'clipboard-list',\n 'clipboard-check',\n 'clipboard',\n 'clinic-medical',\n 'city',\n 'circle-notch',\n 'circle',\n 'church',\n 'child',\n 'chevron-up',\n 'chevron-right',\n 'chevron-left',\n 'chevron-down',\n 'chevron-circle-up',\n 'chevron-circle-right',\n 'chevron-circle-left',\n 'chevron-circle-down',\n 'chess-rook',\n 'chess-queen',\n 'chess-pawn',\n 'chess-knight',\n 'chess-king',\n 'chess-board',\n 'chess-bishop',\n 'chess',\n 'cheese',\n 'check-square',\n 'check-double',\n 'check-circle',\n 'check',\n 'chart-pie',\n 'chart-line',\n 'chart-bar',\n 'chart-area',\n 'charging-station',\n 'chalkboard-teacher',\n 'chalkboard',\n 'chair',\n 'certificate',\n 'cat',\n 'cash-register',\n 'cart-plus',\n 'cart-arrow-down',\n 'carrot',\n 'caret-up',\n 'caret-square-up',\n 'caret-square-right',\n 'caret-square-left',\n 'caret-square-down',\n 'caret-right',\n 'caret-left',\n 'caret-down',\n 'caravan',\n 'car-side',\n 'car-crash',\n 'car-battery',\n 'car-alt',\n 'car',\n 'capsules',\n 'cannabis',\n 'candy-cane',\n 'campground',\n 'camera-retro',\n 'camera',\n 'calendar-week',\n 'calendar-times',\n 'calendar-plus',\n 'calendar-minus',\n 'calendar-day',\n 'calendar-check',\n 'calendar-alt',\n 'calendar',\n 'calculator',\n 'business-time',\n 'bus-alt',\n 'bus',\n 'burn',\n 'bullseye',\n 'bullhorn',\n 'building',\n 'bug',\n 'brush',\n 'broom',\n 'broadcast-tower',\n 'briefcase-medical',\n 'briefcase',\n 'bread-slice',\n 'brain',\n 'braille',\n 'boxes',\n 'box-tissue',\n 'box-open',\n 'box',\n 'bowling-ball',\n 'border-style',\n 'border-none',\n 'border-all',\n 'bookmark',\n 'book-reader',\n 'book-open',\n 'book-medical',\n 'book-dead',\n 'book',\n 'bong',\n 'bone',\n 'bomb',\n 'bolt',\n 'bold',\n 'blog',\n 'blind',\n 'blender-phone',\n 'blender',\n 'birthday-cake',\n 'biohazard',\n 'binoculars',\n 'biking',\n 'bicycle',\n 'bible',\n 'bezier-curve',\n 'bell-slash',\n 'bell',\n 'beer',\n 'bed',\n 'battery-three-quarters',\n 'battery-quarter',\n 'battery-half',\n 'battery-full',\n 'battery-empty',\n 'bath',\n 'basketball-ball',\n 'baseball-ball',\n 'bars',\n 'barcode',\n 'band-aid',\n 'ban',\n 'balance-scale-right',\n 'balance-scale-left',\n 'balance-scale',\n 'bahai',\n 'bacterium',\n 'bacteria',\n 'bacon',\n 'backward',\n 'backspace',\n 'baby-carriage',\n 'baby',\n 'award',\n 'audio-description',\n 'atom',\n 'atlas',\n 'at',\n 'asterisk',\n 'assistive-listening-systems',\n 'arrows-alt-v',\n 'arrows-alt-h',\n 'arrows-alt',\n 'arrow-up',\n 'arrow-right',\n 'arrow-left',\n 'arrow-down',\n 'arrow-circle-up',\n 'arrow-circle-right',\n 'arrow-circle-left',\n 'arrow-circle-down',\n 'arrow-alt-circle-up',\n 'arrow-alt-circle-right',\n 'arrow-alt-circle-left',\n 'arrow-alt-circle-down',\n 'archway',\n 'archive',\n 'apple-alt',\n 'ankh',\n 'angry',\n 'angle-up',\n 'angle-right',\n 'angle-left',\n 'angle-down',\n 'angle-double-up',\n 'angle-double-right',\n 'angle-double-left',\n 'angle-double-down',\n 'anchor',\n 'american-sign-language-interpreting',\n 'ambulance',\n 'allergies',\n 'align-right',\n 'align-left',\n 'align-justify',\n 'align-center',\n 'air-freshener',\n 'adjust',\n 'address-card',\n 'address-book',\n 'ad'\n];\n\nexport const FontAwesomeFreeRegularIcons: FontAwesomeIcon[] = [\n 'window-restore',\n 'window-minimize',\n 'window-maximize',\n 'window-close',\n 'user-circle',\n 'user',\n 'trash-alt',\n 'tired',\n 'times-circle',\n 'thumbs-up',\n 'thumbs-down',\n 'surprise',\n 'sun',\n 'stop-circle',\n 'sticky-note',\n 'star-half',\n 'star',\n 'square',\n 'snowflake',\n 'smile-wink',\n 'smile-beam',\n 'smile',\n 'share-square',\n 'save',\n 'sad-tear',\n 'sad-cry',\n 'registered',\n 'question-circle',\n 'plus-square',\n 'play-circle',\n 'pause-circle',\n 'paper-plane',\n 'object-ungroup',\n 'object-group',\n 'newspaper',\n 'moon',\n 'money-bill-alt',\n 'minus-square',\n 'meh-rolling-eyes',\n 'meh-blank',\n 'meh',\n 'map',\n 'list-alt',\n 'lightbulb',\n 'life-ring',\n 'lemon',\n 'laugh-wink',\n 'laugh-squint',\n 'laugh-beam',\n 'laugh',\n 'kiss-wink-heart',\n 'kiss-beam',\n 'kiss',\n 'keyboard',\n 'images',\n 'image',\n 'id-card',\n 'id-badge',\n 'hourglass',\n 'hospital',\n 'heart',\n 'hdd',\n 'handshake',\n 'hand-spock',\n 'hand-scissors',\n 'hand-rock',\n 'hand-pointer',\n 'hand-point-up',\n 'hand-point-right',\n 'hand-point-left',\n 'hand-point-down',\n 'hand-peace',\n 'hand-paper',\n 'hand-lizard',\n 'grin-wink',\n 'grin-tongue-wink',\n 'grin-tongue-squint',\n 'grin-tongue',\n 'grin-tears',\n 'grin-stars',\n 'grin-squint-tears',\n 'grin-squint',\n 'grin-hearts',\n 'grin-beam-sweat',\n 'grin-beam',\n 'grin-alt',\n 'grin',\n 'grimace',\n 'gem',\n 'futbol',\n 'frown-open',\n 'frown',\n 'folder-open',\n 'folder',\n 'flushed',\n 'flag',\n 'file-word',\n 'file-video',\n 'file-powerpoint',\n 'file-pdf',\n 'file-image',\n 'file-excel',\n 'file-code',\n 'file-audio',\n 'file-archive',\n 'file-alt',\n 'file',\n 'eye-slash',\n 'eye',\n 'envelope-open',\n 'envelope',\n 'edit',\n 'dot-circle',\n 'dizzy',\n 'credit-card',\n 'copyright',\n 'copy',\n 'compass',\n 'comments',\n 'comment-dots',\n 'comment-alt',\n 'comment',\n 'closed-captioning',\n 'clone',\n 'clock',\n 'clipboard',\n 'circle',\n 'check-square',\n 'check-circle',\n 'chart-bar',\n 'caret-square-up',\n 'caret-square-right',\n 'caret-square-left',\n 'caret-square-down',\n 'calendar-times',\n 'calendar-plus',\n 'calendar-minus',\n 'calendar-check',\n 'calendar-alt',\n 'calendar',\n 'building',\n 'bookmark',\n 'bell-slash',\n 'bell',\n 'arrow-alt-circle-up',\n 'arrow-alt-circle-right',\n 'arrow-alt-circle-left',\n 'arrow-alt-circle-down',\n 'angry',\n 'address-card',\n 'address-book'\n];\n","export enum ComponentSize {\n XXSmall = 'xxs',\n XSmall = 'xs',\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n XXLarge = 'xxl',\n Fullscreen = 'fs'\n}\n\nexport type PrimaryComponentSizes =\n | ComponentSize.XSmall\n | ComponentSize.Small\n | ComponentSize.Medium\n | ComponentSize.Large\n | ComponentSize.XLarge\n | ComponentSize.XXLarge;\n\nexport type SecondaryComponentSizes =\n | ComponentSize.Small\n | ComponentSize.Medium\n | ComponentSize.Large;\n","export enum ComponentTheme {\n Primary = 'primary',\n Secondary = 'secondary',\n Success = 'success',\n Danger = 'danger',\n Warning = 'warning',\n Info = 'info',\n Light = 'light',\n Dark = 'dark'\n}\n\nexport const ComponentThemesArr = [\n ComponentTheme.Primary,\n ComponentTheme.Secondary,\n ComponentTheme.Success,\n ComponentTheme.Danger,\n ComponentTheme.Warning,\n ComponentTheme.Info,\n ComponentTheme.Light,\n ComponentTheme.Dark\n];\n\nexport type ComponentThemes = (typeof ComponentThemesArr)[number];\n","import { Injectable } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n distinctUntilChanged,\n map,\n shareReplay\n} from 'rxjs';\n\nexport interface IInteractableComponent {\n readonly interactableId: string;\n show: boolean;\n hide?: () => void;\n}\n\nexport interface IBackdropComponent {\n validate(): void;\n invalidate(): void;\n get valid(): boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n private _backdrop?: IBackdropComponent;\n private _interactables: IInteractableComponent[] = [];\n\n private readonly _backdropQueueSubject = new BehaviorSubject<\n readonly string[]\n >([]);\n\n readonly showBackdrop$: Observable<boolean> = this._backdropQueueSubject\n .asObservable()\n .pipe(\n map(backdropQueue => backdropQueue.length > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n get showBackdrop(): boolean {\n return this._backdropQueueSubject.value.length > 0;\n }\n\n registerBackdrop(modalBackdrop: IBackdropComponent) {\n // WARNING: there should only be 1 backdrop component, preferably loaded in the body\n if (!this._backdrop) {\n this._backdrop = modalBackdrop;\n } else if (this._backdrop !== modalBackdrop) {\n this._backdrop.invalidate();\n this._backdrop = modalBackdrop;\n if (!modalBackdrop.valid) {\n // we invalidated and set backdrop to the same backdrop\n modalBackdrop.validate();\n }\n }\n }\n\n unregisterBackdrop(modalBackdrop: IBackdropComponent) {\n if (this._backdrop === modalBackdrop) {\n this._backdrop = undefined;\n }\n }\n\n add(interactable: IInteractableComponent): string {\n const interactableId = interactable.interactableId;\n\n if (!this._interactables.some(i => i.interactableId === interactableId)) {\n this._interactables.push(interactable);\n }\n return interactableId;\n }\n\n remove(interactableId: string): void {\n if (!interactableId) {\n return;\n }\n\n const interactableIndex = this._interactables.findIndex(\n component => component.interactableId === interactableId\n );\n\n if (interactableIndex >= 0) {\n this._interactables.splice(interactableIndex, 1);\n this.dequeueBackdrop(interactableId);\n }\n }\n\n toggle(interactable: IInteractableComponent): boolean {\n if (!interactable.interactableId || interactable.show) {\n // other interactables don't need to be altered/notified\n return false;\n }\n for (const otherInteractable of this._interactables.filter(oi => oi.show)) {\n if (otherInteractable.hide) {\n otherInteractable.hide();\n }\n }\n return true;\n }\n\n queueBackdrop(interactableId: string): void {\n if (!this._backdropQueueSubject.value.includes(interactableId)) {\n this._backdropQueueSubject.next([\n ...this._backdropQueueSubject.value,\n interactableId\n ]);\n }\n }\n\n dequeueBackdrop(interactableId: string): void {\n const interactableIdIndex =\n this._backdropQueueSubject.value.indexOf(interactableId);\n if (interactableIdIndex !== -1) {\n const newQueue = [...this._backdropQueueSubject.value];\n newQueue.splice(interactableIdIndex, 1);\n\n this._backdropQueueSubject.next(newQueue);\n }\n }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\n\n/**\n * The `TextHighlightComponent` (`<impdc-text-highlight` or `<any impdc-text-highlight`) is a component that highlights search-matched text.\n * To use, import `TextHighlightModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-text-highlight, [impdc-text-highlight]',\n standalone: true,\n template: `\n @for (part of result; track part; let odd = $odd) { @if (odd) { @switch\n (method) { @case ('mark') {\n <mark>{{ part }}</mark>\n } @case ('b') {\n <b>{{ part }}</b>\n } @case ('u') {\n <u>{{ part }}</u>\n } @case ('strong') {\n <strong>{{ part }}</strong>\n } @case('class') {\n <span class=\"{{ highlightClass }}\">{{ part }}</span>\n } } } @else {\n <ng-container>{{ part }}</ng-container>\n } }\n `\n})\nexport class TextHighlightComponent implements OnChanges {\n /**\n * The text that will be searched and parts of it could be highlighted.\n */\n @Input({ required: true }) text = '';\n\n /**\n * The search regex/string to look for.\n */\n @Input({ required: true }) search = '';\n\n /**\n * The method of highlighting, or otherwise what is wrapping the search matches. Options `'mark'`,\n * `'b'`, `'strong'`, and `'u'` will wrap matching contents inside of those respective native element types;\n * option `'class'` will wrap matching contents inside a `<span>` with the CSS class specified via the\n * `highlightClass` input.\n */\n @Input() method: 'mark' | 'b' | 'strong' | 'u' | 'class' = 'mark';\n\n /**\n * Be default the search is case-insensitive, this will require exact matches only.\n */\n @Input() exact = false;\n\n /**\n * The CSS `class` string applied to `<span>` elements containing matched text; only applied when specifying `'class'`\n * for the `method` input property.\n */\n @Input() highlightClass: string = 'impdc-highlight';\n\n public result: string[] = [];\n\n ngOnChanges() {\n if (this.search) {\n const escapedText = this._escapeTextForRegExp(this.search);\n const regEx = new RegExp(`(${escapedText})`, `g${this.exact ? '' : 'i'}`);\n this.result = this.text.split(regEx);\n } else {\n this.result = [this.text];\n }\n }\n\n private _escapeTextForRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TextHighlightComponent } from './text-highlight.component';\n\n@NgModule({\n imports: [TextHighlightComponent],\n exports: [TextHighlightComponent]\n})\nexport class TextHighlightModule {\n constructor() {}\n}\n","import {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, distinctUntilChanged } from 'rxjs';\nimport {\n FontAwesomeIcon,\n FontAwesomeIconTheme,\n FontAwesomeFreeRegularIcons\n} from '../../constants';\n\n/**\n * The `IconComponent` (`<impdc-icon` or `<any impdc-icon`) is an icon wrapper utilizing Font Awesome 5.\n * To use, import `IconModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-icon, [impdc-icon]',\n templateUrl: './icon.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class IconComponent implements OnInit, AfterContentChecked {\n private static readonly _licensed$ = new BehaviorSubject<boolean>(false);\n private readonly _licensedChanges$ = IconComponent._licensed$.pipe(\n takeUntilDestroyed(),\n distinctUntilChanged()\n );\n private _loading = true;\n\n /**\n * The Font Awesome 5 icon name. See {@link https://fontawesome.com/v5/search}. Local\n * development may not represent the complete list of available icons.\n */\n @Input()\n name?: FontAwesomeIcon;\n\n /**\n * The Font Awesome 5 icon style. Local development may fallback to a free available\n * theme when possible.\n */\n @Input()\n theme: FontAwesomeIconTheme = 'solid';\n\n /**\n * The icon size as a string or number. String values are used directly whereas numbers are\n * interpreted as pixels.\n */\n @Input()\n size: string | number = '1.8rem';\n\n @ViewChild('icon', { static: true }) iconRef!: ElementRef;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n public get typeClass(): string {\n if (!!IconComponent._licensed$.getValue()) {\n switch (this.theme) {\n case 'light':\n return 'fal';\n case 'regular':\n return 'far';\n // case 'solid':\n default:\n return 'fas';\n }\n }\n if (\n (this.theme === 'light' || this.theme === 'regular') &&\n !!this.name &&\n FontAwesomeFreeRegularIcons.includes(this.name)\n ) {\n return 'far';\n }\n return 'fas';\n }\n\n public get computedSize(): string {\n if (Number.isNaN(this.size)) {\n return this.size.toString();\n }\n\n return `${this.size}px`;\n }\n\n ngOnInit(): void {\n this._licensedChanges$.subscribe(() => {\n this._changeDetectorRef.detectChanges();\n });\n }\n\n ngAfterContentChecked(): void {\n if (this._loading) {\n // During init and possibly a few checks, `iconFontFamily` will be an inherited font, later it will be Font Awesome.\n const iconFontFamily = getComputedStyle(\n this.iconRef.nativeElement\n ).getPropertyValue('font-family');\n if (iconFontFamily.includes('Font Awesome')) {\n IconComponent._licensed$.next(!iconFontFamily.includes('Free'));\n this._loading = false;\n }\n }\n }\n}\n","<i\n #icon\n class=\"{{ typeClass }} fa-{{ name }}\"\n [style.font-size]=\"computedSize\"></i>\n","import {\n Component,\n Input,\n ViewEncapsulation,\n HostBinding\n} from '@angular/core';\nimport { ButtonTheme } from './themes/button-theme';\n\n/**\n * The `ButtonComponent` (`<button impdcButton`) adds theming to the native button.\n * For a container, see [ButtonGroupComponent](./?path=/docs/design-components-button-group--button-group).\n * To use, import `ButtonModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ButtonModule` also imports and exports [BrandingModule](./?path=/docs/design-components-directives-impdcbranded) and\n * [IconModule](./?path=/docs/design-components-icon).\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[impdcButton]',\n templateUrl: './button.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent {\n /**\n * The native type of the Button.\n */\n @Input()\n type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * The theme of the Button affecting text, icons, backgrounds, and borders.\n */\n @Input()\n theme: ButtonTheme = 'primary';\n\n /**\n * The Button's text.\n */\n @Input()\n text = '';\n\n /**\n * Determines if the Button is disabled.\n */\n @Input()\n disabled = false;\n\n /**\n * An alternative to the native `title` attribute. Useful for hover text and accessibility.\n */\n @Input()\n titleText = '';\n\n /**\n * An alternative to the native `aria-label` attribute. Useful for accessibility.\n */\n @Input()\n ariaLabel = '';\n\n @HostBinding('attr.type') private get attrType() {\n return this.type || 'button';\n }\n\n @HostBinding('class.btn') private classBtn = true;\n\n @HostBinding('class.btn-primary') private get classBtnPrimary() {\n return this.theme === 'primary';\n }\n\n @HostBinding('class.btn-danger') private get classBtnDanger() {\n return this.theme === 'danger';\n }\n\n @HostBinding('class.btn-outline-primary') private get classBtnSecondary() {\n return this.theme === 'secondary';\n }\n\n @HostBinding('class.btn-outline-danger')\n private get classBtnSecondaryDanger() {\n return this.theme === 'secondary-danger';\n }\n\n @HostBinding('class.btn-close-fa') private get classBtnClose() {\n return this.theme === 'close';\n }\n\n @HostBinding('attr.disabled') private get attrDisabled() {\n return this.disabled ? 'disabled' : undefined;\n }\n\n @HostBinding('attr.title') private get attrTitle() {\n return this.titleText || undefined;\n }\n\n @HostBinding('attr.aria-label') private get attrAriaLabel() {\n return this.ariaLabel || this.titleText || this.text || undefined;\n }\n}\n","<ng-container *ngIf=\"theme !== 'close'\">\n <ng-content></ng-content>{{ text }}\n <ng-content select=\"[right]\"></ng-content>\n</ng-container>\n<span impdc-icon *ngIf=\"theme === 'close'\" name=\"times\" theme=\"light\"></span>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[impdcBranded]'\n})\nexport class BrandedDirective {\n @HostBinding('class.branded') private brandedClass = true;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrandedDirective } from './branded.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [BrandedDirective],\n exports: [BrandedDirective]\n})\nexport class BrandingModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [IconComponent],\n exports: [IconComponent]\n})\nexport class IconModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrandingModule } from '../branding';\nimport { IconModule } from '../icon';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [CommonModule, BrandingModule, IconModule],\n declarations: [ButtonComponent],\n exports: [ButtonComponent, BrandingModule, IconModule]\n})\nexport class ButtonModule {\n constructor() {}\n}\n","import { ITableCellOption } from '../interfaces';\n\nexport const DEFAULT_PAGE = 1;\nexport const ROWS_PER_PAGE = 10;\nexport const SELECTED_ROWS_PER_PAGE = { value: '25', text: '25' };\nexport const ROWS_PER_PAGE_GROUP: ITableCellOption[] = [\n {\n value: '10',\n label: '10'\n },\n {\n value: '25',\n label: '25'\n },\n {\n value: '50',\n label: '50'\n },\n {\n value: '100',\n label: '100'\n }\n];\nexport const SORT_COLUMN_INDEX = 0;\nexport const DEBOUNCE_TIME = 500;\n","export const IS_SELECTED_PROPERTY = 'isSelected';\n","export enum TableColumnType {\n Badge = 'Badge',\n Boolean = 'Boolean',\n Link = 'Link',\n Text = 'Text',\n Input = 'Input',\n Currency = 'Currency',\n Decimal = 'Decimal',\n Date = 'Date',\n DateTime = 'DateTime',\n Percentage = 'Percentage',\n CellRender = 'CellRender',\n SingleSelect = 'SingleSelect',\n MultiSelect = 'MultiSelect',\n Icon = 'Icon',\n Email = 'Email',\n Url = 'Url',\n Actions = 'Actions'\n}\n","import { get as getNestedValue } from 'lodash';\n\nimport { ITableRowItem, TableColumnDef } from '../interfaces';\nimport { ComponentTheme } from '../../../types';\n\nexport class TableThemeHelper {\n public static getTheme(\n { fieldColor, color, colorGetter }: TableColumnDef,\n currentRow: ITableRowItem\n ): ComponentTheme | undefined {\n if (fieldColor) {\n const badgedColor = getNestedValue(currentRow, String(fieldColor));\n const theme = Object.entries(ComponentTheme).find(\n ([, value]) => value === String(badgedColor)\n );\n return theme ? theme[1] : undefined;\n }\n\n if (colorGetter) {\n try {\n return colorGetter(currentRow);\n } catch (e) {\n return undefined;\n }\n }\n\n return color || undefined;\n }\n\n public static getCellColor(\n columnDefinition: TableColumnDef,\n currentRow: ITableRowItem\n ): string {\n const color = this.getTheme(columnDefinition, currentRow);\n return TableThemeHelper.getColor(color);\n }\n\n public static getColor(color?: ComponentTheme) {\n if (!color) {\n return '';\n }\n return `text-${color.toLowerCase()}`;\n }\n}\n","/**\n * Type representing allowable values for a boolean input.\n */\nexport type BooleanInput = string | boolean | null | undefined;\n\n/**\n * Coerces a value provided via data-binding (usually a string) to a boolean.\n */\nexport function coerceBooleanPropertyValue(value: unknown): boolean {\n return value != null && `${value}` !== 'false';\n}\n","/**\n * Type describing the allowed values for a number input\n * @ignore\n */\nexport type NumberInput = string | number | null | undefined;\n\n/**\n * Coerces a value provided via data-binding (usually a string) to a number.\n */\nexport function coerceNumberPropertyValue(value: any): number;\nexport function coerceNumberPropertyValue<D>(\n value: any,\n fallback: D\n): number | D;\nexport function coerceNumberPropertyValue(value: any, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n\n/**\n * Determines if the provided value is considered a number.\n * @ignore\n */\nexport function _isNumberValue(value: any): boolean {\n /**\n * We use two different parsing utilities here, for the below reasons:\n * - parseFloat(val) deals with _most_ cases we care about - treating null, empty str,\n * and non-number vals as NaN, while Number returns 0.\n * - parseFloat(val) unfortunately _also_ considers strings like '1234wordswordswords' to be\n * valid numbers, so we need to also check with Number(val) for concensus.\n */\n return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\n}\n","import sanitizeHtml from 'sanitize-html';\n\nexport function sanitize(value: string): string {\n return sanitizeHtml(value, {\n allowedTags: []\n });\n}\n","/**\n * Creates a copy to reduce direct reference issues.\n * @param value\n * @returns\n */\nexport function dc(value: any): any {\n return JSON.parse(JSON.stringify(value));\n}\n","/**\n * Converts strings to lowercase.\n * @param value\n * @returns\n */\nexport function lc(value: string): string {\n return (value || '').toLowerCase();\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-corner-hint',\n standalone: true\n})\nexport class CornerHintDirective {}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { nanoid } from 'nanoid';\n\nexport const IMPDC_ERROR = new InjectionToken<ErrorDirective>('ImpdcError');\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-error, [impdc-error]',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[id]': 'id'\n },\n providers: [{ provide: IMPDC_ERROR, useExisting: ErrorDirective }]\n})\nexport class ErrorDirective {\n @Input()\n id = `impdc-form-error-${nanoid()}`;\n}\n","import {\n Directive,\n Host,\n Inject,\n InjectionToken,\n Optional,\n SkipSelf\n} from '@angular/core';\nimport { FormGroupDirective, NgForm } from '@angular/forms';\n\nexport const IMPDC_FORM_ROOT = new InjectionToken<ImpdcFormRoot>(\n 'ImpdcFormRoot'\n);\n\nexport interface ImpdcFormRoot {\n get submitted(): boolean;\n get form(): FormGroupDirective | NgForm;\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[formGroup]',\n standalone: true,\n providers: [\n {\n provide: IMPDC_FORM_ROOT,\n useExisting: RootFormGroupDirective\n }\n ]\n})\nexport class RootFormGroupDirective implements ImpdcFormRoot {\n constructor(\n @Host() private _formGroupDirective: FormGroupDirective,\n @Optional()\n @SkipSelf()\n @Inject(IMPDC_FORM_ROOT)\n private _parentRoot?: ImpdcFormRoot\n ) {}\n\n public get submitted(): boolean {\n return this._parentRoot\n ? this._parentRoot.submitted\n : this._formGroupDirective.submitted;\n }\n\n public get form(): FormGroupDirective | NgForm {\n return this._parentRoot ? this._parentRoot.form : this._formGroupDirective;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngForm]',\n standalone: true,\n providers: [\n {\n provide: IMPDC_FORM_ROOT,\n useExisting: RootNgFormDirective\n }\n ]\n})\nexport class RootNgFormDirective implements ImpdcFormRoot {\n constructor(\n @Host() private _ngForm: NgForm,\n @Optional()\n @SkipSelf()\n @Inject(IMPDC_FORM_ROOT)\n private _parentRoot?: ImpdcFormRoot\n ) {}\n\n public get submitted(): boolean {\n return this._parentRoot\n ? this._parentRoot.submitted\n : this._ngForm.submitted;\n }\n\n public get form(): FormGroupDirective | NgForm {\n return this._parentRoot ? this._parentRoot.form : this._ngForm;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { nanoid } from 'nanoid';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-hint',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[id]': 'id'\n }\n})\nexport class HintDirective {\n @Input()\n public id = `impdc-form-hint-${nanoid()}`;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-label',\n standalone: true\n})\nexport class LabelDirective {}\n","import { Directive, InjectionToken, Input } from '@angular/core';\n\nexport const IMPDC_PREFIX = new InjectionToken<PrefixDirective>('ImpdcPrefix');\n\n@Directive({\n selector: '[impdcPrefix], [impdcTextPrefix]',\n standalone: true,\n providers: [{ provide: IMPDC_PREFIX, useExisting: PrefixDirective }]\n})\nexport class PrefixDirective {\n @Input('impdcTextPrefix')\n public set isTextSelector(value: '') {\n this.isText = true;\n }\n\n public isText = false;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\n\nexport const IMPDC_SUFFIX = new InjectionToken<SuffixDirective>('ImpdcSuffix');\n\n@Directive({\n selector: '[impdcSuffix], [impdcTextSuffix]',\n standalone: true,\n providers: [{ provide: IMPDC_SUFFIX, useExisting: SuffixDirective }]\n})\nexport class SuffixDirective {\n @Input('impdcTextSuffix')\n public set isTextSelector(value: '') {\n this.isText = true;\n }\n\n public isText = false;\n}\n","import { CornerHintDirective } from './corner-hint.directive';\nimport { ErrorDirective } from './error.directive';\nimport {\n RootFormGroupDirective,\n RootNgFormDirective\n} from './form-root.directive';\nimport { HintDirective } from './hint.directive';\nimport { LabelDirective } from './label.directive';\nimport { PrefixDirective } from './prefix.directive';\nimport { SuffixDirective } from './suffix.directive';\n\nexport { CornerHintDirective } from './corner-hint.directive';\nexport { ErrorDirective, IMPDC_ERROR } from './error.directive';\nexport {\n IMPDC_FORM_ROOT,\n ImpdcFormRoot,\n RootFormGroupDirective,\n RootNgFormDirective\n} from './form-root.directive';\nexport { HintDirective } from './hint.directive';\nexport { LabelDirective } from './label.directive';\nexport { PrefixDirective, IMPDC_PREFIX } from './prefix.directive';\nexport { SuffixDirective, IMPDC_SUFFIX } from './suffix.directive';\n\nexport const FORM_FIELD_DIRECTIVES = [\n CornerHintDirective,\n ErrorDirective,\n RootFormGroupDirective,\n RootNgFormDirective,\n HintDirective,\n LabelDirective,\n PrefixDirective,\n SuffixDirective\n] as const;\n","/** @docs-private */\nexport function getImpdcFormFieldMissingControlError(): Error {\n return Error('impdc-form-field must contain a ImpdcFormFieldControl.');\n}\n","import { Directive } from '@angular/core';\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n@Directive()\nexport abstract class ImpdcFormFieldControl<T> {\n /**\n * The control's value.\n */\n public abstract value: T | null;\n\n /**\n * Stream that should emit when the control's state changes in a way requiring\n * the parent `FormFieldComponent` to run change detection.\n */\n public abstract readonly stateChanges: Observable<void>;\n\n public abstract readonly id: string;\n\n public abstract readonly ngControl:\n | NgControl\n | AbstractControlDirective\n | null;\n\n public abstract readonly focused: boolean;\n\n public abstract readonly disabled: boolean;\n\n public abstract readonly required: boolean;\n\n public abstract readonly errorState: boolean;\n\n public readonly controlType?: string;\n\n public abstract readonly supportsAffixes: boolean;\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n InjectionToken,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { AbstractControlDirective } from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { merge, Subject, takeUntil } from 'rxjs';\nimport {\n ErrorDirective,\n IMPDC_ERROR,\n IMPDC_PREFIX,\n PrefixDirective,\n IMPDC_SUFFIX,\n SuffixDirective\n} from './directives';\nimport { getImpdcFormFieldMissingControlError } from '../form-field-errors';\nimport { ImpdcFormFieldControl } from '../shared/form-field-control';\nimport { CommonModule } from '@angular/common';\n\nexport const IMPDC_FORM_FIELD = new InjectionToken<FormFieldComponent>(\n 'FormFieldComponent'\n);\n\n@Component({\n selector: 'impdc-form-field',\n exportAs: 'impdcFormField',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-form-field',\n '[class.impdc-form-field-focused]': '_control.focused',\n '[class.impdc-form-field-invalid]': '_control.errorState',\n '[class.impdc-form-field-disabled]': '_control.disabled',\n '[class.ng-untouched]': '_shouldForwardControlState(\"untouched\")',\n '[class.ng-touched]': '_shouldForwardControlState(\"touched\")',\n '[class.ng-pristine]': '_shouldForwardControlState(\"pristine\")',\n '[class.ng-dirty]': '_shouldForwardControlState(\"dirty\")',\n '[class.ng-valid]': '_shouldForwardControlState(\"valid\")',\n '[class.ng-invalid]': '_shouldForwardControlState(\"invalid\")',\n '[class.ng-pending]': '_shouldForwardControlState(\"pending\")'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: IMPDC_FORM_FIELD, useExisting: FormFieldComponent }]\n})\nexport class FormFieldComponent\n implements AfterViewInit, AfterContentInit, AfterContentChecked\n{\n @ViewChild('inputArea')\n protected _inputArea!: ElementRef<HTMLElement>;\n\n @ContentChild(ImpdcFormFieldControl)\n protected _formFieldControl!: ImpdcFormFieldControl<unknown>;\n\n @ContentChildren(IMPDC_PREFIX, { descendants: true })\n protected _prefixChildren!: QueryList<PrefixDirective>;\n @ContentChildren(IMPDC_SUFFIX, { descendants: true })\n protected _suffixChildren!: QueryList<SuffixDirective>;\n @ContentChildren(IMPDC_ERROR, { descendants: true })\n protected _errorChildren?: QueryList<ErrorDirective>;\n\n private readonly _destroyedSubject = new Subject<void>();\n protected _hasTextPrefix = false;\n protected _hasTextSuffix = false;\n private _isFocused: boolean | null = null;\n private _explicitFormFieldControl: ImpdcFormFieldControl<unknown> | undefined;\n\n protected readonly _labelId = `impdc-form-field-label-${nanoid()}`;\n\n protected get _control(): ImpdcFormFieldControl<unknown> {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n protected set _control(value) {\n this._explicitFormFieldControl = value;\n }\n\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _changeDetectorRef: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this._updateFocusState();\n this._changeDetectorRef.detectChanges();\n }\n\n public ngAfterContentInit(): void {\n this._assertFormFieldControl();\n this._initializeControl();\n this._initializePrefixAndSuffix();\n }\n\n public ngAfterContentChecked(): void {\n this._assertFormFieldControl();\n }\n\n protected _showErrors(): boolean {\n return !!(\n this._errorChildren &&\n this._errorChildren.length > 0 &&\n this._control.errorState\n );\n }\n\n protected _shouldForwardControlState(\n prop: keyof AbstractControlDirective\n ): boolean {\n const ngControl = this._control ? this._control.ngControl : null;\n\n return ngControl && ngControl[prop];\n }\n\n private _initializeControl(): void {\n const control = this._control;\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(\n `impdc-form-field-type-${control.controlType}`\n );\n }\n\n control.stateChanges\n .pipe(takeUntil(this._destroyedSubject))\n .subscribe(() => {\n this._updateFocusState();\n this._changeDetectorRef.markForCheck();\n });\n\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyedSubject))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _assertFormFieldControl(): void {\n if (!this._control) {\n throw getImpdcFormFieldMissingControlError();\n }\n }\n\n private _updateFocusState(): void {\n if (this._control.focused && !this._isFocused) {\n this._isFocused = true;\n } else if (\n !this._control.focused &&\n (this._isFocused || this._isFocused === null)\n ) {\n this._isFocused = false;\n }\n\n this._inputArea.nativeElement.classList.toggle(\n 'impdc-form-field-control--focused',\n this._control.focused\n );\n }\n\n private _checkPrefixAndSuffixTypes() {\n this._hasTextPrefix = !!this._prefixChildren.find(p => p.isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s.isText);\n }\n\n /** Initializes the prefix and suffix containers. */\n private _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(\n () => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n }\n );\n }\n}\n","<ng-template #labelTemplate>\n <label\n class=\"form-label\"\n [id]=\"_labelId\"\n [attr.for]=\"_formFieldControl.id\"\n [attr.aria-owns]=\"_formFieldControl.id\">\n <ng-content select=\"impdc-label\"></ng-content>\n </label>\n</ng-template>\n\n<ng-template #cornerHintTemplate>\n <div class=\"flex-shrink-1 text-gray-400 fw-medium text-end\">\n <ng-content select=\"impdc-corner-hint\"></ng-content>\n </div>\n</ng-template>\n\n<div class=\"d-flex justify-content-between gap-4\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"cornerHintTemplate\"></ng-template>\n</div>\n\n<div\n #inputArea\n class=\"impdc-form-field-wrapper\"\n [class.input-group]=\"_control.supportsAffixes\"\n [class.impdc-form-field--text]=\"_control.supportsAffixes\"\n [class.impdc-form-field--focused]=\"_control.focused\"\n [class.impdc-form-field--disabled]=\"_control.disabled\"\n [class.impdc-form-field--invalid]=\"_control.errorState\"\n [class.impdc-form-field--text--has-text-prefix]=\"_hasTextPrefix\"\n [class.impdc-form-field--text--has-text-suffix]=\"_hasTextSuffix\">\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcPrefix]\"></ng-content>\n <ng-content select=\"[impdcTextPrefix]\"></ng-content>\n </ng-container>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcTextSuffix]\"></ng-content>\n <ng-content select=\"[impdcSuffix]\"></ng-content>\n </ng-container>\n</div>\n\n<div\n class=\"impdc-form-field-feedback\"\n [class.impdc-form-field-feedback--disabled]=\"false\">\n <div class=\"impdc-form-field-hint-wrapper\">\n <ng-content select=\"impdc-hint\"></ng-content>\n </div>\n <div *ngIf=\"_showErrors()\" class=\"impdc-form-field-error-wrapper\">\n <ng-content select=\"impdc-error, [impdc-error]\"></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, InjectionToken, Input } from '@angular/core';\n\nexport interface ISelectOptionGroup {\n readonly label: string;\n}\n\nexport const IMPDC_SELECT_OPTION_GROUP_COMPONENT =\n new InjectionToken<ISelectOptionGroup>('IMPDC_SELECT_OPTION_GROUP_COMPONENT');\n\n@Component({\n selector: 'impdc-select-option-group',\n standalone: true,\n imports: [CommonModule],\n template: `<ng-content select=\"impdc-select-option\"></ng-content>`,\n providers: [\n {\n provide: IMPDC_SELECT_OPTION_GROUP_COMPONENT,\n useExisting: SelectOptionGroupComponent\n }\n ]\n})\nexport class SelectOptionGroupComponent implements ISelectOptionGroup {\n @Input({ required: true })\n public label: string = '';\n}\n","import { Component, Input, inject } from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport { ISelectOption } from '../interfaces';\nimport { IMPDC_SELECT_OPTION_GROUP_COMPONENT } from '../option-group';\n\n@Component({\n selector: 'impdc-select-option',\n standalone: true,\n template: ''\n})\nexport class SelectOptionComponent implements ISelectOption {\n private readonly _group? = inject(IMPDC_SELECT_OPTION_GROUP_COMPONENT, {\n optional: true\n });\n public readonly uid = `impdc-select-${nanoid()}`;\n\n /**\n * The specific value represented by the select option.\n */\n @Input()\n public value: any = null;\n\n /**\n * Label text describing the select option.\n */\n @Input()\n public label: string = '';\n\n /**\n * Used to enable or disable the specific select option.\n */\n @Input()\n public disabled: boolean = false;\n\n public get groupLabel(): string | undefined {\n return this._group?.label;\n }\n}\n","export enum BadgeSize {\n Default = 'default',\n Large = 'large'\n}\n\nexport const BadgeSizesArr = [BadgeSize.Default, BadgeSize.Large];\n\nexport type BadgeSizes = (typeof BadgeSizesArr)[number];\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostBinding\n} from '@angular/core';\nimport { ComponentTheme, ComponentThemes } from '../../types';\nimport { BadgeIcon, BadgeSize, BadgeSizes } from './types';\n\n/**\n * The `BadgeComponent` (`<impdc-badge` or `any impdc-badge`) displays [preferably short] text with a rounded background and themed colors.\n * To use, import `BadgeModule` or another module that imports and exports that module from `@impartner/design-components`.\n *\n * Use badges to communicate the status of an item or the result of an action taken. Badges are non-interactive, meaning they should not\n * be added or removed by a user. Try and keep badge text as short and clear as possible, 2 or 3 words max is probably best. Using short\n * words increases the ability to scan.\n *\n * Use Tags for interactive experiences where users can add or remove.\n */\n@Component({\n selector: 'impdc-badge, [impdc-badge]',\n templateUrl: './badge.component.html'\n})\nexport class BadgeComponent {\n /**\n * The text displayed in the center of the Badge.\n */\n @Input()\n text = '';\n\n /**\n * An icon displayed left of the Badge text.\n */\n @Input()\n icon: BadgeIcon = '';\n\n /**\n * The color theme of the Badge. This will affect both text and background colors based on allowed designs.\n */\n @Input()\n theme: ComponentThemes = ComponentTheme.Primary;\n\n /**\n * The size of the Badge.\n */\n @Input()\n size: BadgeSizes = BadgeSize.Default;\n\n /**\n * Allows the background of the Badge to be removed.\n */\n @Input()\n hideBg = false;\n\n /**\n * This controls adding the `rounded-pill` class to the Badge.\n */\n @Input()\n rounded = true;\n\n /**\n * Adds a dismiss icon to the right of the Badge text.\n *\n * Deprecated - Use Tags for interactive elements that a user may add or remove.\n *\n * @deprecated\n */\n @Input()\n dismissable = false;\n\n /**\n * An event emitted when the component is dismissed.\n *\n * Deprecated - Use Tags for interactive elements that a user may add or remove.\n *\n * @deprecated\n */\n @Output()\n dismiss = new EventEmitter<MouseEvent | Event>();\n\n @HostBinding('class') private get classBadge(): string {\n let classes = 'badge';\n if (this.theme) {\n classes += ` text-${this.hideBg ? '' : 'bg-'}${this.theme}`;\n }\n if (this.size !== 'default') {\n classes += ` badge-${this.size}`;\n }\n return classes;\n }\n\n @HostBinding('class.rounded-pill')\n private get classBadgeRounded(): boolean {\n return this.rounded && !this.hideBg;\n }\n\n @HostBinding('class.px-0')\n private get classNoPadding(): boolean {\n return this.hideBg;\n }\n\n @HostBinding('hidden')\n private _dismissed = false;\n\n protected handleDismiss(event: MouseEvent | Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.dismissable) {\n return;\n }\n\n this._dismissed = true;\n this.dismiss.emit(event);\n }\n}\n","<span *ngIf=\"icon\" impdc-icon [name]=\"icon === 'dot' ? 'circle' : icon\"></span>\n{{ text }}\n<a *ngIf=\"dismissable\" (click)=\"handleDismiss($event)\">\n <span impdc-icon name=\"times\"></span>\n</a>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconModule } from '../icon';\nimport { BadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [BadgeComponent],\n exports: [IconModule, BadgeComponent]\n})\nexport class BadgeModule {\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n public isErrorState(\n control: AbstractControl<any, any> | null,\n form: FormGroupDirective | NgForm | null\n ): boolean {\n return !!(\n control &&\n control.invalid &&\n (control.dirty || (form && form.submitted))\n );\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n public isErrorState(\n control: AbstractControl | null,\n form: FormGroupDirective | NgForm | null\n ): boolean {\n return !!(\n control &&\n control.invalid &&\n (control.touched || (form && form.submitted))\n );\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\n// Users of the Dispatcher never need to see this type, but TypeScript requires it to be exported.\nexport type UniqueSelectionDispatcherListener = (\n id: string,\n name: string\n) => void;\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\n@Injectable({ providedIn: 'root' })\nexport class UniqueSelectionDispatcher implements OnDestroy {\n private _listeners: UniqueSelectionDispatcherListener[] = [];\n\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n public notify(id: string, name: string) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n public listen(listener: UniqueSelectionDispatcherListener): () => void {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(\n (registered: UniqueSelectionDispatcherListener) => {\n return listener !== registered;\n }\n );\n };\n }\n\n public ngOnDestroy() {\n this._listeners = [];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormFieldComponent } from './form-field.component';\nimport { FORM_FIELD_DIRECTIVES } from './directives';\n\n@NgModule({\n imports: [FormFieldComponent, ...FORM_FIELD_DIRECTIVES],\n exports: [FormFieldComponent, ...FORM_FIELD_DIRECTIVES]\n})\nexport class FormFieldModule {}\n","import { AbstractConstructor, Constructor } from './constructors.type';\n\n/** @docs-private */\nexport interface CanDisable {\n /** Whether the component is disabled. */\n disabled: boolean;\n}\n\ntype CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(\n base: T\n): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(\n base: T\n): CanDisableCtor & T {\n return class extends base {\n private _disabled = false;\n\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = !!value;\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import {\n AbstractControl,\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { ImpdcFormRoot } from '../component';\nimport { ErrorStateMatcher } from '../services';\nimport { AbstractConstructor, Constructor } from './constructors.type';\n\n/**\n * @docs-private\n */\nexport interface ICanUpdateErrorState {\n updateErrorState(): void;\n errorState: boolean;\n errorStateMatcher: ErrorStateMatcher | undefined;\n}\n\ntype CanUpdateErrorStateCtor = Constructor<ICanUpdateErrorState> &\n AbstractConstructor<ICanUpdateErrorState>;\n\n/**\n * @docs-private\n */\nexport interface IHasErrorState {\n _formRoot: ImpdcFormRoot | null;\n _parentFormGroup: FormGroupDirective | null;\n _parentForm: NgForm | null;\n _defaultErrorStateMatcher: ErrorStateMatcher;\n\n ngControl: NgControl | null;\n stateChanges: Subject<void>;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * Intended for components with `errorState` and the need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<IHasErrorState>>(\n base: T\n): CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<IHasErrorState>>(\n base: T\n): CanUpdateErrorStateCtor & T {\n return class extends base {\n /** Whether the component is in an error state. */\n errorState = false;\n\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher | undefined;\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent =\n this._formRoot?.form || this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl\n ? (this.ngControl.control as AbstractControl)\n : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { coerceNumberPropertyValue } from '../../../utilities';\nimport { AbstractConstructor, Constructor } from './constructors.type';\nimport { CanDisable } from './disabled.mixin';\n\n/** @ignore */\nexport interface HasTabIndex {\n /** Tabindex of the component. */\n tabIndex: number;\n\n /** Tabindex to which to fall back to if no value is set. */\n defaultTabIndex: number;\n}\n\ntype HasTabIndexCtor = Constructor<HasTabIndex> &\n AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(\n base: T,\n defaultTabIndex?: number\n): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n base: T,\n defaultTabIndex = 0\n): HasTabIndexCtor & T {\n return class extends base implements HasTabIndex {\n private _tabIndex: number = defaultTabIndex;\n defaultTabIndex = defaultTabIndex;\n\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex =\n value != null ? coerceNumberPropertyValue(value) : this.defaultTabIndex;\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../utilities';\nimport { ImpdcFormRoot, IMPDC_FORM_ROOT } from '../../component';\nimport { ErrorStateMatcher } from '../../services';\nimport {\n ICanUpdateErrorState,\n IHasErrorState,\n mixinErrorState\n} from '../../shared';\nimport { ImpdcFormFieldControl } from '../../shared/form-field-control';\n\nconst IMPDC_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\n/** @docs-private */\nexport function getInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by impdcInput.`);\n}\n\nconst _InputDirectiveBase = mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n);\n\n/**\n * The `InputDirective` (`<input impdcInput`, `<textarea impdcInput` or `<select impdcInput`) is a directive for text inputs.\n * With this directive, the input, textarea, and select can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, import `ImpdcFormsModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Directive({\n selector:\n 'input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]',\n exportAs: 'impdcInput',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-input',\n '[id]': 'id',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.id]': 'id',\n '[attr.readonly]': 'readonly && !_isSelect || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-control]': '!_isSelect',\n '[class.form-control-color]': 'type === \"color\"',\n '[class.form-select]': '_isSelect',\n '[class.impdc-form-field-control]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-input--invalid]': 'errorState',\n '[class.impdc-input--disabled]': 'disabled',\n '[class.impdc-input--required]': 'required',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()'\n },\n providers: [{ provide: ImpdcFormFieldControl, useExisting: InputDirective }]\n})\nexport class InputDirective\n extends _InputDirectiveBase\n implements\n ImpdcFormFieldControl<any>,\n ICanUpdateErrorState,\n IHasErrorState,\n OnChanges,\n OnDestroy,\n DoCheck\n{\n private _inputValueAccessor: { value: any };\n\n protected _uid = `impdc-input-${nanoid()}`;\n protected _isSelect: boolean;\n protected _isTextarea: boolean;\n\n public focused = false;\n\n public readonly controlType?: string = 'impdc-input';\n public readonly supportsAffixes: boolean = true;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanPropertyValue(value);\n\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Supports most standard `<input [type]>` attribute values. Does not support `button`, `checkbox`,\n * `file`, `hidden`, `image`, `radio`, `range`, `reset`, or `button`, and does not apply to\n * `<textarea>` or `<select>` elements.\n *\n * @default text\n */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (!this._typeIsValid(value)) {\n throw getInputUnsupportedTypeError(value);\n }\n\n this._type = value || 'text';\n\n // Sync with native input element.\n if (!this._isTextarea) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n /**\n * Used to put the control in a non-interactive readonly state; only supports `<input>` and\n * `<textarea>` elements.\n *\n * To see the difference between `readonly` and `disabled`, refer to [MDN's documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly).\n */\n @Input()\n public get readonly(): boolean {\n return this._readonly;\n }\n public set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanPropertyValue(value);\n }\n private _readonly = false;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n @Input()\n get value(): string {\n return this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n constructor(\n protected _elementRef: ElementRef<\n HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement\n >,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n const { nativeElement } = this._elementRef;\n const nodeName = nativeElement.nodeName.toLowerCase();\n\n this._inputValueAccessor = nativeElement;\n this.id = this.id;\n this._isSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n\n if (this._isSelect) {\n this.controlType = (nativeElement as HTMLSelectElement).multiple\n ? 'impdc-native-select-multiple'\n : 'impdc-native-select';\n }\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n\n if (\n this.ngControl.disabled !== null &&\n this.ngControl.disabled !== this.disabled\n ) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n }\n\n /** @ignore */\n public ngOnChanges(): void {\n this.stateChanges.next();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n protected _focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n protected _typeIsValid(inputType: string): boolean {\n return IMPDC_INPUT_INVALID_TYPES.indexOf(inputType) === -1;\n }\n\n protected _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when Angular forms\n // aren't used, the placeholder won't recognize the value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ISelectOption } from './interfaces';\nimport { SelectChangeEvent } from './select.component';\nimport { Observable } from 'rxjs';\n\nexport interface ISelectOptionParentComponent {\n readonly multiple?: boolean;\n}\n\nexport const IMPDC_SELECT_OPTION_PARENT_COMPONENT =\n new InjectionToken<ISelectOptionParentComponent>(\n 'IMPDC_SELECT_OPTION_PARENT_COMPONENT'\n );\n\nexport interface ISelectValueBadgesParentComponent {\n readonly selected: ISelectOption | ISelectOption[];\n readonly selectionChange: Observable<\n SelectChangeEvent<ISelectValueBadgesParentComponent>\n >;\n readonly stateChanges: Observable<void>;\n readonly disabled: boolean;\n deselectOption(option: ISelectOption): void;\n}\n\nexport const IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT =\n new InjectionToken<ISelectValueBadgesParentComponent>(\n 'IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT'\n );\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output\n} from '@angular/core';\nimport { NgbDropdownItem } from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\n\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../../utilities';\nimport { IconModule } from '../../../../icon';\nimport { TextHighlightModule } from '../../../../text-highlight';\nimport { ISelectOption } from '../interfaces';\nimport {\n ISelectOptionParentComponent,\n IMPDC_SELECT_OPTION_PARENT_COMPONENT\n} from '../option-parent';\n\nexport class SelectOptionSelectionChangeEvent<T = any> {\n constructor(\n public source: SelectOptionDisplayComponent,\n public isUserInput = false\n ) {}\n}\n\n@Component({\n selector: 'impdc-select-option-display',\n standalone: true,\n imports: [CommonModule, TextHighlightModule, IconModule],\n templateUrl: './select-option-display.component.html',\n styleUrls: ['select-option-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.impdc-select-option--single]': '!multiple',\n '[class.impdc-select-option--multiple]': 'multiple',\n '[class.impdc-select-option--selected]': 'selected',\n '[class.active]': '!multiple && selected',\n '[class.impdc-select-option--grouped]': '!!groupLabel',\n '(click)': 'selectViaInteraction()',\n '(keydown)': 'handleKeydown($event)'\n }\n})\nexport class SelectOptionDisplayComponent\n extends NgbDropdownItem\n implements ISelectOption, OnDestroy\n{\n /** @ignore */\n public readonly stateChanges = new Subject<void>();\n private _selected = false;\n private __disabled = false;\n\n /** @ignore */\n get multiple(): boolean {\n return !!this.parent && !!this.parent.multiple;\n }\n\n /** @ignore */\n @Input()\n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean | undefined) {\n if (typeof value !== 'boolean') return;\n\n if (value) {\n this.select();\n } else {\n this.deselect();\n }\n }\n\n /**\n * The specific value represented by the select option.\n */\n @Input()\n public value: any;\n\n /**\n * Label text describing the select option.\n */\n @Input()\n public get label(): string {\n return this._label;\n }\n public set label(label: string) {\n this._label = label;\n this._emitSelectionChangeEvent();\n }\n private _label = '';\n\n @Input()\n public groupLabel?: string;\n\n @Input()\n public highlightText: string | null = null;\n\n /** @ignore */\n @Input()\n public id = `impdc-option-display-${nanoid()}`;\n\n /**\n * Used to enable or disable the specific select option.\n */\n @Input()\n public override get disabled(): boolean {\n return this.__disabled;\n }\n public override set disabled(value: BooleanInput) {\n this.__disabled = coerceBooleanPropertyValue(value);\n }\n\n /** @ignore */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onSelectionChange =\n new EventEmitter<SelectOptionSelectionChangeEvent>();\n\n constructor(\n @Optional()\n @Inject(IMPDC_SELECT_OPTION_PARENT_COMPONENT)\n protected readonly parent: ISelectOptionParentComponent | undefined,\n private readonly _changeDetector: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @ignore */\n public select(): void {\n if (!this._selected) {\n this._selected = true;\n this._changeDetector.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** @ignore */\n public deselect(): void {\n if (this._selected) {\n this._selected = false;\n this._changeDetector.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n protected handleKeydown(event: KeyboardEvent): void {\n if (this._isInteractionKeyEvent(event)) {\n this.selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n protected selectViaInteraction(): void {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetector.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(\n new SelectOptionSelectionChangeEvent(this, isUserInput)\n );\n }\n\n private _isInteractionKeyEvent(event: KeyboardEvent): boolean {\n // Bail if key isn't \"enter\" or \"space\"\n if (event.keyCode !== 13 && event.keyCode !== 32) {\n return false;\n }\n\n // Bail if keypress has any modifers\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return false;\n }\n\n return true;\n }\n}\n","<ng-template #singleSelectTemplate>\n <span>\n @if (highlightText && !selected) {\n <impdc-text-highlight\n method=\"class\"\n highlightClass=\"impdc-select-option--highlight\"\n text=\"{{ label }}\"\n [search]=\"highlightText\"></impdc-text-highlight>\n } @else {\n {{ label || ' ' }}\n }\n </span>\n <span\n *ngIf=\"selected\"\n impdc-icon\n name=\"check\"\n [size]=\"16\"\n class=\"selected-check lh-1 ms-auto\"></span>\n</ng-template>\n\n<ng-template #multipleSelectTemplate>\n <div class=\"d-flex align-items-center gap-5\">\n <span>\n <input\n class=\"form-check-input opacity-100\"\n type=\"checkbox\"\n disabled\n readonly=\"readonly\"\n [attr.checked]=\"selected ? 'checked' : null\" />\n </span>\n <span>\n @if (highlightText && !selected) {\n <impdc-text-highlight\n method=\"class\"\n highlightClass=\"impdc-select-option--highlight\"\n text=\"{{ label }}\"\n [search]=\"highlightText\"></impdc-text-highlight>\n } @else {\n {{ label || ' ' }}\n }\n </span>\n </div>\n</ng-template>\n\n<ng-template\n [ngTemplateOutlet]=\"\n multiple ? multipleSelectTemplate : singleSelectTemplate\n \"></ng-template>\n","import { Subject } from 'rxjs';\n\nexport interface SelectChange<T> {\n source: SelectModel<T>;\n added: T[];\n removed: T[];\n}\n\nexport function getMultipleValuesInSingleSelectError() {\n return Error(\n 'Cannot pass multiple values into SelectModel in single-value mode.'\n );\n}\n\nexport class SelectModel<T> {\n private _selection = new Set<T>();\n\n private _pendingDeselectionsToEmit: T[] = [];\n private _pendingSelectionsToEmit: T[] = [];\n private _selected: T[] | null = null;\n\n public get selected(): T[] {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n\n return this._selected;\n }\n\n public readonly changed$ = new Subject<SelectChange<T>>();\n\n constructor(\n private readonly _multiple = false,\n initialSelectedValues?: T[],\n private readonly _emitChanges = true,\n public compareFunc?: (a: T, b: T) => boolean\n ) {\n if (initialSelectedValues && initialSelectedValues.length) {\n if (_multiple) {\n initialSelectedValues.forEach(value => {\n this._markSelected(value);\n });\n } else {\n this._markSelected(initialSelectedValues[0]);\n }\n\n this._pendingSelectionsToEmit.length = 0;\n }\n }\n\n public select(...values: T[]): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n\n public deselect(...values: T[]): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n\n public setSelection(...values: T[]): boolean | void {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n\n values.forEach(value => this._markSelected(value));\n oldValues\n .filter(value => !newSelectedSet.has(value))\n .forEach(value => this._unmarkSelected(value));\n\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n\n public toggle(value: T): boolean | void {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n\n public clear(flushEvent = true): boolean | void {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n\n public isSelected(value: T): boolean {\n return this._selection.has(this._getConcreteValue(value));\n }\n\n public isEmpty(): boolean {\n return this._selection.size === 0;\n }\n\n public hasValue(): boolean {\n return !this.isEmpty();\n }\n\n public sort(predicateFunc?: (a: T, b: T) => number): void {\n if (this._multiple && this.selected) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._selected!.sort(predicateFunc);\n }\n }\n\n public isMultipleSelection(): boolean {\n return this._multiple;\n }\n\n private _emitChangeEvent(): void {\n this._selected = null;\n\n if (\n this._pendingSelectionsToEmit.length ||\n this._pendingDeselectionsToEmit.length\n ) {\n this.changed$.next({\n source: this,\n added: this._pendingSelectionsToEmit,\n removed: this._pendingDeselectionsToEmit\n });\n\n this._pendingDeselectionsToEmit = [];\n this._pendingSelectionsToEmit = [];\n }\n }\n\n private _markSelected(value: T): void {\n value = this._getConcreteValue(value);\n\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n\n if (this._emitChanges) {\n this._pendingSelectionsToEmit.push(value);\n }\n }\n }\n\n private _unmarkSelected(value: T): void {\n value = this._getConcreteValue(value);\n\n if (this.isSelected(value)) {\n this._selection.delete(value);\n\n if (this._emitChanges) {\n this._pendingDeselectionsToEmit.push(value);\n }\n }\n }\n\n private _unmarkAll(): void {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n\n private _verifyValueAssignment(values: T[]): void {\n if (values.length > 1 && !this._multiple) {\n throw getMultipleValuesInSingleSelectError();\n }\n }\n\n private _hasQueuedChanges(): boolean {\n return !!(\n this._pendingDeselectionsToEmit.length ||\n this._pendingSelectionsToEmit.length\n );\n }\n\n private _getConcreteValue(inputVal: T): T {\n if (!this.compareFunc) {\n return inputVal;\n }\n\n for (let selectedVal of this._selection) {\n if (this.compareFunc(inputVal, selectedVal)) {\n return selectedVal;\n }\n }\n\n return inputVal;\n }\n}\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\nimport { IconModule } from '../icon';\nimport { FontAwesomeIcon, FontAwesomeIconTheme } from '../../constants';\nimport {\n CanDisable,\n HasTabIndex,\n mixinDisabled,\n mixinTabIndex\n} from '../form-field/shared';\n\nexport type TagTheme = 'default' | 'outline' | 'inverse';\n\nconst _TagComponentBase = mixinTabIndex(mixinDisabled(class {}));\n\n/**\n * Tags are interactive elements that can be added to UI objects to label, categorize, organize, and filter.\n * They can be added and removed by users. Tags are used in multi-select inputs.\n *\n * Don’t use Tags to communicate the status of an object or the result of an action (like Enabled, Deleted,\n * Submitted, Error...) — use badges instead.\n */\n@Component({\n standalone: true,\n imports: [IconModule],\n selector: 'impdc-tag',\n exportAs: 'impdcTag',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n { name: 'disabled', transform: booleanAttribute },\n { name: 'tabIndex', transform: numberAttribute }\n ],\n host: {\n '[attr.tabindex]': 'tabIndex'\n },\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TagComponent\n extends _TagComponentBase\n implements CanDisable, HasTabIndex\n{\n /**\n * Color theme to be used when rendering the tag.\n */\n @Input()\n public theme: TagTheme = 'default';\n\n /**\n * Whether to use fully rounded borders for tag, granting a \"pill\"-like appearance.\n */\n @HostBinding('class.impdc-tag--rounded')\n @Input({ transform: booleanAttribute })\n public rounded = false;\n\n /**\n * Where to include an interactable button inside of the tag, whose interactions can be listened\n * for via the `(buttonClick)` event output.\n */\n @Input({ transform: booleanAttribute })\n public withButton = false;\n\n /**\n * The FontAwesome icon to be displayed inside of the button when `withButton` is set to `true`. Value may be\n * just a icon name, or optionally an icon name and specific FontAwesome theme/face.\n */\n @Input()\n public buttonIcon:\n | FontAwesomeIcon\n | { name: FontAwesomeIcon; theme: FontAwesomeIconTheme } = {\n name: 'times',\n theme: 'light'\n };\n\n /**\n * Event output for button events triggered when `withButton` is set to `true`.\n */\n @Output()\n public readonly buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n @HostBinding('class')\n public get themeClass(): string | null {\n switch (this.theme) {\n case 'outline':\n return 'impdc-tag--theme-outline';\n\n case 'inverse':\n return 'impdc-tag--theme-inverse';\n\n case 'default':\n default:\n return null;\n }\n }\n\n constructor(@Attribute('tabindex') tabIndex?: string) {\n super();\n this.tabIndex = parseInt(tabIndex ?? '') || 0;\n }\n\n protected get buttonIconName(): FontAwesomeIcon {\n return typeof this.buttonIcon === 'string'\n ? this.buttonIcon\n : this.buttonIcon.name;\n }\n\n protected get buttonIconTheme(): FontAwesomeIconTheme {\n return typeof this.buttonIcon !== 'string'\n ? this.buttonIcon.theme\n : 'solid';\n }\n\n protected handleButtonClick(evt: Event): void {\n evt.preventDefault();\n evt.stopPropagation();\n\n this.buttonClick.emit(evt);\n }\n}\n","<span class=\"impdc-tag--text\"><ng-content></ng-content></span>\n@if (withButton) {\n<button\n type=\"button\"\n class=\"impdc-tag--button\"\n [disabled]=\"disabled\"\n (click)=\"handleButtonClick($event)\">\n <impdc-icon size=\"12\" [name]=\"buttonIconName\" [theme]=\"buttonIconTheme\" />\n</button>\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport {\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n ISelectValueBadgesParentComponent\n} from '../option-parent';\nimport { Subject, merge, takeUntil } from 'rxjs';\nimport { ComponentTheme } from '../../../../../types';\nimport { TagComponent } from '../../../../tag';\nimport { ISelectOption } from '../interfaces';\n\n@Component({\n selector: 'impdc-select-value-tags-display',\n standalone: true,\n imports: [TagComponent, NgClass],\n styleUrl: './select-value-tags-display.component.scss',\n templateUrl: './select-value-tags-display.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectValueTagsDisplayComponent\n implements OnInit, OnChanges, OnDestroy\n{\n private readonly _changeDetector = inject(ChangeDetectorRef);\n private readonly _parentSelect = inject(\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n { optional: true }\n );\n private readonly _destroy$ = new Subject<void>();\n protected readonly BadgeTheme = ComponentTheme;\n protected truncate = true;\n\n @Input({ transform: booleanAttribute })\n public rounded = false;\n\n @Input()\n public get select(): ISelectValueBadgesParentComponent | null {\n return this._select;\n }\n public set select(value: ISelectValueBadgesParentComponent | null) {\n this._select = value || this._parentSelect;\n }\n private _select: ISelectValueBadgesParentComponent | null =\n this._parentSelect;\n\n protected get resolvedSelect(): ISelectValueBadgesParentComponent | null {\n return this.select || this._parentSelect;\n }\n\n /**\n * Render the control is a readonly state.\n *\n * Semantically distinct from `disabled`, `readonly` controls will still have their values bound in\n * Angular forms and `FormGroup`s, whereas a disabled control's value would be omitted.\n */\n @Input()\n public readonly: boolean = false;\n\n /**\n * The maximum number of values that will be displayed inline before truncation occurs.\n */\n @Input()\n public truncateThreshold: number | undefined;\n\n /**\n * Text to be shown when displayed values are truncated, allowing the user to view all selected values.\n */\n @Input()\n public showMoreLabel = 'Show more...';\n\n /**\n * Text to be shown when displayed values have been expanded beyond the truncation threshold, allowing\n * the user collapse the view again.\n */\n @Input()\n public showLessLabel = 'Show less...';\n\n public ngOnInit(): void {\n if (this.select) {\n this.observeStateChanges(this.select);\n }\n }\n\n public ngOnChanges(): void {\n this._destroy$.next();\n\n if (this.select) {\n this.observeStateChanges(this.select);\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n protected toggleTruncate(): void {\n this.truncate = !this.truncate;\n }\n\n protected observeStateChanges(\n select: ISelectValueBadgesParentComponent\n ): void {\n merge(select.selectionChange, select.stateChanges)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._changeDetector.detectChanges();\n });\n }\n\n protected selectedIsMultiple(\n selected: ISelectOption | ISelectOption[]\n ): selected is ISelectOption[] {\n return Array.isArray(selected);\n }\n}\n","<ng-content></ng-content>\n@if (!!select && selectedIsMultiple(select.selected)) { @for (selectedOpt of\nselect.selected; track selectedOpt) { @if (!truncate || !truncateThreshold ||\n(truncateThreshold > 0 && $index < truncateThreshold)) {\n<impdc-tag\n [rounded]=\"rounded\"\n [withButton]=\"!readonly && !select.disabled\"\n (buttonClick)=\"select.deselectOption(selectedOpt)\">\n {{ selectedOpt.label }}\n</impdc-tag>\n} } @if (!!truncateThreshold && truncateThreshold > 0 && select.selected.length\n> truncateThreshold) {\n<a\n class=\"impdc-select-value-tags-display--truncate-toggle link-primary\"\n (click)=\"toggleTruncate()\">\n {{ truncate ? showMoreLabel : showLessLabel }}\n</a>\n} }\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NgbDropdown, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n defer,\n distinctUntilChanged,\n map,\n merge,\n Observable,\n startWith,\n Subject,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs';\n\nimport { ComponentTheme } from '../../../../types';\nimport { lc } from '../../../../utilities';\nimport { BadgeModule } from '../../../badge';\nimport { IconModule } from '../../../icon';\nimport { ErrorStateMatcher } from '../../services';\nimport {\n ImpdcFormRoot,\n IMPDC_FORM_ROOT,\n FormFieldModule\n} from '../../component';\nimport {\n CanDisable,\n HasTabIndex,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../../shared';\nimport { InputDirective } from '../input';\nimport {\n IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n ISelectOptionParentComponent,\n ISelectValueBadgesParentComponent\n} from './option-parent';\nimport {\n SelectOptionSelectionChangeEvent,\n SelectOptionDisplayComponent\n} from './option-display';\nimport { SelectModel } from './select-model';\nimport { SelectOptionComponent } from './option';\nimport { ISelectOption } from './interfaces';\nimport { SelectValueTagsDisplayComponent } from './value-tags-display';\n\nexport const ON_OPEN_AUTO_SCROLL_TIMEOUT_MS = 50;\n\nexport class SelectChangeEvent<TComponent> {\n constructor(\n /** The specific SelectComponent that changed. */\n public readonly source: TComponent,\n /** The selected value(s) */\n public readonly value: any\n ) {}\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @ignore\n */\nexport function getImpdcSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getImpdcSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @ignore\n */\nexport function getImpdcSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\nconst DEFAULT_ACTIVE_INDEX = -1;\n\ninterface IRenderedSelectOption extends ISelectOption {\n readonly selected?: boolean;\n readonly showGroupLabel?: boolean;\n}\n\nconst __SelectComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot | null,\n public _parentForm: NgForm | null,\n public _parentFormGroup: FormGroupDirective | null,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n@Directive()\nexport abstract class _SelectComponentBase\n extends __SelectComponentBase\n implements\n ISelectOptionParentComponent,\n OnInit,\n AfterViewInit,\n OnChanges,\n DoCheck,\n OnDestroy,\n ControlValueAccessor,\n HasTabIndex,\n ImpdcFormFieldControl<any>,\n CanDisable,\n ICanUpdateErrorState,\n IHasErrorState\n{\n @ContentChildren(SelectOptionComponent, { descendants: true })\n protected staticOptions!: QueryList<SelectOptionComponent>;\n\n @ViewChildren(SelectOptionDisplayComponent)\n protected options!: QueryList<SelectOptionDisplayComponent>;\n\n @ViewChild(NgbDropdown)\n protected ngbDropdown!: NgbDropdown;\n\n @ViewChild('toggleButton', { read: ElementRef })\n protected toggleButtonRef?: ElementRef<HTMLElement>;\n\n @ViewChild('searchInput', { read: ElementRef<HTMLInputElement> })\n protected searchInputRef?: ElementRef<HTMLInputElement>;\n\n private readonly _ngDestroy = new Subject<void>();\n private readonly _searchSubject = new BehaviorSubject<'none' | 'static'>(\n 'none'\n );\n private _previousControl?: AbstractControl | null;\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n protected readonly uid: string;\n protected readonly changeDetector = inject(ChangeDetectorRef);\n protected readonly ngZone = inject(NgZone);\n protected readonly searchControl = new FormControl<string | null>(null);\n protected readonly BadgeTheme = ComponentTheme;\n protected readonly filteredOptions$: Observable<IRenderedSelectOption[]> =\n this._searchSubject.pipe(\n switchMap(searchMode => {\n switch (searchMode) {\n case 'none':\n return (\n this.staticOptions.changes as Observable<ISelectOption[]>\n ).pipe(\n startWith(this.staticOptions.toArray() as ISelectOption[]),\n map(options =>\n options.map(opt => ({\n groupLabel: opt.groupLabel,\n get label() {\n return opt.label;\n },\n value: opt.value,\n get disabled() {\n return opt.disabled;\n },\n selected: this.selectionModel.isSelected(opt)\n }))\n )\n );\n case 'static':\n return combineLatest([\n (this.staticOptions.changes as Observable<ISelectOption[]>).pipe(\n startWith(this.staticOptions.toArray() as ISelectOption[])\n ),\n this.searchTextChanges.pipe(startWith(''))\n ]).pipe(\n tap(([, searchText]) => {\n this.activeIndex = !!searchText ? 0 : DEFAULT_ACTIVE_INDEX;\n }),\n map(([options, searchText]) => {\n const renderedOptions = options.map(opt => ({\n groupLabel: opt.groupLabel,\n get label() {\n return opt.label;\n },\n value: opt.value,\n get disabled() {\n return opt.disabled;\n },\n selected: this.selectionModel.isSelected(opt)\n }));\n\n return !!searchText\n ? renderedOptions.filter(\n opt => lc(opt.label).indexOf(lc(searchText)) !== -1\n )\n : renderedOptions;\n })\n );\n }\n }),\n map(options =>\n Object.entries(\n options.reduce((result, opt) => {\n const resolvedGroupLabel = opt.groupLabel?.trim() || '';\n let showGroupLabel = false;\n\n if (!(resolvedGroupLabel in result)) {\n result[resolvedGroupLabel] = [];\n showGroupLabel = true;\n }\n\n result[resolvedGroupLabel].push({\n ...opt,\n showGroupLabel\n });\n return result;\n }, {} as { [key: string]: IRenderedSelectOption[] })\n ).flatMap(([, groupOptions]) => groupOptions)\n )\n );\n protected selectionModel!: SelectModel<ISelectOption>;\n protected activeIndex = DEFAULT_ACTIVE_INDEX;\n\n /** @ignore */\n public readonly optionSelectionChanges: Observable<SelectOptionSelectionChangeEvent> =\n defer(() => {\n const options = this.options;\n\n if (options) {\n return options.changes.pipe(\n startWith(options),\n switchMap(() =>\n merge(...options.map(option => option.onSelectionChange))\n )\n );\n }\n\n return this.ngZone.onStable.pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n });\n\n /**\n * Set whether or not an input field will appear for searching and\n * filtering visible options.\n *\n * - `'none'`: No search control will be displayed, and all select options are provided via projected `<impdc-select-option>` elements.\n * - `'static'`: A search control will be displayed, select options are provided via projected `<impdc-select-option>` elements, and\n * filtering is performed against the `[label]` attribute value.\n * @default 'none'\n */\n public get search(): 'none' | 'static' {\n return this._searchSubject.value;\n }\n public set search(value: 'none' | 'static') {\n this._searchSubject.next(value);\n }\n\n /**\n * The placeholder text that will be displayed when no selection has been made.\n *\n * @default \\- Select -\n */\n public get placeholder(): string {\n return this._placeholder;\n }\n public set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n protected _placeholder = '- Select -';\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n */\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n /**\n * Whether the control is a single-select or multiple-select. Cannot be changed after component initialization.\n */\n public get multiple(): boolean {\n return this._multiple;\n }\n protected _multiple = false;\n\n /**\n * Function used to compare option values with selected values. The first arg is a\n * `value` from an option, and the second arg is a `value` from the selection or another option.\n *\n * @returns Boolean indicating if the values are equivalent.\n */\n public get compareWith() {\n return this._compareWith;\n }\n public set compareWith(fn: (a: any, b: any) => boolean) {\n if (typeof fn !== 'function') {\n throw getImpdcSelectNonFunctionValueError();\n }\n\n this._compareWith = fn;\n\n if (this.selectionModel) {\n // Changing the comparator function means the visual selection may have changed.\n this._initializeSelection();\n }\n }\n\n /**\n * Document element that the select dropdown will be attached to in the DOM - either the\n * document's `<body>` tag, or as a child of the component tag.\n *\n * The default value (`'body'`) is generally the correct choice, and should only be\n * overridden when absolutely certain that the result behavior is what's desired.\n */\n public dropdownContainer: 'body' | null = 'body';\n\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /** Events fire when selection has been changed by the user. */\n public readonly selectionChange: EventEmitter<SelectChangeEvent<this>> =\n new EventEmitter<SelectChangeEvent<this>>();\n\n /**\n * Events fire when raw value of select changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n public readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Events fire when the text value of the option search input control has changed.\n */\n @Output()\n public readonly searchTextChanges: Observable<string | null> =\n this.searchControl.valueChanges.pipe(\n takeUntilDestroyed(),\n startWith(''),\n debounceTime(200),\n distinctUntilChanged()\n );\n\n constructor(uid: string, tabIndex?: string) {\n super(\n inject(ErrorStateMatcher),\n inject(IMPDC_FORM_ROOT, { optional: true }),\n inject(NgForm, { optional: true }),\n inject(FormGroupDirective, { optional: true }),\n inject(NgControl, { optional: true, self: true })\n );\n\n this.uid = uid;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n // idempotent assignment - respects arbitrary ID set via attr if present, otherwise falls back to auto UUID;\n // also triggers stateChanges pulse for parent form-field component\n this.id = this.id;\n\n this.tabIndex = parseInt(tabIndex ?? '') || 0;\n }\n\n public get dropdownOpen(): boolean {\n return this.ngbDropdown?.isOpen() ?? false;\n }\n\n public get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n public get selected(): ISelectOption | ISelectOption[] {\n return this._multiple\n ? this.selectionModel?.selected || []\n : this.selectionModel?.selected[0];\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this.toggleButtonRef?.nativeElement.focus(options);\n }\n\n protected handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.onFocus();\n\n if (this.search !== 'none' && !!this.searchInputRef) {\n setTimeout(() => {\n this.searchInputRef?.nativeElement.focus();\n }, ON_OPEN_AUTO_SCROLL_TIMEOUT_MS);\n }\n\n if (!this._multiple && !!this.value) {\n this._scrollToSelectedOption();\n }\n } else {\n this.onBlur();\n }\n\n this.activeIndex = DEFAULT_ACTIVE_INDEX;\n this.searchControl.reset();\n this.stateChanges.next();\n }\n\n /* Angular lifecycle hooks */\n\n /** @ignore */\n public ngOnInit(): void {\n this.selectionModel = new SelectModel<ISelectOption>(\n this._multiple,\n undefined,\n undefined,\n (a, b) => {\n return this.compareWith(a.value, b.value);\n }\n );\n this.stateChanges.next();\n }\n\n /** @ignore */\n public ngAfterViewInit(): void {\n this.selectionModel.changed$\n .pipe(takeUntil(this._ngDestroy))\n .subscribe(changeEvent => {\n changeEvent.added.forEach(option =>\n this.options\n .find(o => this.compareWith(o.value, option.value))\n ?.select()\n );\n changeEvent.removed.forEach(option =>\n this.options\n .find(o => this.compareWith(o.value, option.value))\n ?.deselect()\n );\n });\n\n this.options.changes\n .pipe(startWith(null), takeUntil(this._ngDestroy))\n .subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this._ngDestroy.next();\n this._ngDestroy.complete();\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n public abstract readonly controlType: string;\n\n public abstract readonly supportsAffixes: boolean;\n\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(value: any) {\n const hasAssigned = this._assignValue(value);\n\n if (hasAssigned) {\n this._cvaOnChange(value);\n }\n }\n protected _value: any;\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n public get focused(): boolean {\n return this._focused || this.dropdownOpen;\n }\n protected _focused = false;\n\n /* ControlValueAccessor */\n /** @ignore */\n public writeValue(value: any): void {\n this._assignValue(value);\n }\n\n /** @ignore */\n public registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n\n /* Internals */\n\n protected onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the CVA touched callback only if the dropdown is closed.\n */\n protected onBlur(): void {\n this._focused = false;\n\n if (!this.disabled && !this.dropdownOpen) {\n this._cvaOnTouched();\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n protected clearSelection(): void {\n this.value = null;\n this.focus();\n this._propagateChanges();\n }\n\n protected handleSearchSubmit(evt: Event): void {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.activeIndex < 0 || this.activeIndex >= this.options.length) return;\n\n this.options.get(this.activeIndex)?.nativeElement.click();\n }\n\n protected handleSearchUpDown(evt: Event, direction: 'up' | 'down'): void {\n evt.preventDefault();\n\n if (direction === 'up') {\n if (this.activeIndex === this.options.length - 1) {\n this.activeIndex = (this.activeIndex + 1) % this.options.length;\n } else {\n this.activeIndex++;\n }\n } else {\n if (this.activeIndex <= 0) {\n this.activeIndex = this.options.length - 1;\n } else {\n this.activeIndex--;\n }\n }\n\n this.changeDetector.markForCheck();\n }\n\n protected markActive(index: number): void {\n this.activeIndex = index;\n this.changeDetector.markForCheck();\n }\n\n protected selectedIsSingle(\n selected: ISelectOption | ISelectOption[]\n ): selected is ISelectOption {\n return !Array.isArray(selected);\n }\n\n private _initializeSelection(): void {\n // We defer this work into a promise in order to avoid tripping Angular's\n // \"Expression has changed after it was checked\" error.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n\n private _setSelectionByValue(value: any | any[]): void {\n if (this.search === 'none') {\n this.selectionModel.clear();\n }\n\n if (this._multiple && value) {\n if (!Array.isArray(value)) {\n throw getImpdcSelectNonArrayValueError();\n }\n\n value.forEach(currentValue => this._selectOptionByValue(currentValue));\n this._sortValues();\n } else {\n this._selectOptionByValue(value);\n }\n\n this.changeDetector.detectChanges();\n }\n\n private _selectOptionByValue(\n value: any\n ): SelectOptionDisplayComponent | undefined {\n const correspondingOption = this.options.find(\n (option: SelectOptionDisplayComponent) => {\n if (this.selectionModel.isSelected(option)) {\n return false;\n }\n\n try {\n return option.value != null && this._compareWith(option.value, value);\n } catch (error) {\n console.warn(error);\n return false;\n }\n }\n );\n\n if (correspondingOption) {\n this.selectionModel.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n /** Assigns a value to the select control. Returns a boolean indicating whether or not\n * the value has changed.\n */\n private _assignValue(newValue: any | any[]): boolean {\n if (\n newValue !== this._value ||\n (this._multiple && Array.isArray(newValue))\n ) {\n if (this.options) {\n this.selectionModel.clear();\n this._setSelectionByValue(newValue);\n }\n\n this._value = newValue;\n return true;\n }\n\n return false;\n }\n\n private _resetOptions(): void {\n const changedOrDestroyed = merge(this.options.changes, this._ngDestroy);\n\n this.optionSelectionChanges\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n\n if (event.isUserInput && !this._multiple && this.dropdownOpen) {\n this.ngbDropdown.close();\n this.focus();\n }\n });\n\n merge(...this.options.map(option => option.stateChanges))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n this.changeDetector.detectChanges();\n this.stateChanges.next();\n });\n }\n\n private _onSelect(\n option: SelectOptionDisplayComponent,\n isUserInput: boolean\n ): void {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.value == null && !this._multiple) {\n option.deselect();\n this.selectionModel.clear();\n\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected\n ? this.selectionModel.select(option)\n : this.selectionModel.deselect(option);\n }\n\n if (this._multiple) {\n this._sortValues();\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n\n private _sortValues(): void {\n if (\n this._multiple &&\n (this.search === 'none' || this.search === 'static')\n ) {\n const options = this.staticOptions.toArray();\n\n this.selectionModel.sort((a, b) => {\n return (\n options.findIndex(o => this.compareWith(o.value, a.value)) -\n options.findIndex(o => this.compareWith(o.value, b.value))\n );\n });\n\n this.stateChanges.next();\n }\n }\n\n protected _propagateChanges(fallbackValue?: any): void {\n let valToEmit: any = null;\n\n if (this._multiple) {\n valToEmit = (this.selected as ISelectOption[]).map(\n option => option.value\n );\n } else {\n valToEmit = this.selected\n ? (this.selected as ISelectOption).value\n : fallbackValue;\n }\n\n this._value = valToEmit;\n this.valueChange.emit(valToEmit);\n this._cvaOnChange(valToEmit);\n this.selectionChange.emit(this._buildChangeEvent(valToEmit));\n }\n\n protected _buildChangeEvent(value: any): SelectChangeEvent<this> {\n return new SelectChangeEvent(this, value);\n }\n\n /** @ignore */\n protected _deselectOption(\n option: ISelectOption,\n markTouched: boolean = true\n ): void {\n if (this._multiple && this.selectionModel.isSelected(option)) {\n this.selectionModel.deselect(option);\n this._propagateChanges();\n\n if (markTouched) {\n this._cvaOnTouched();\n }\n\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _scrollToSelectedOption(): void {\n setTimeout(() => {\n if (this.dropdownOpen && this.selected && !Array.isArray(this.selected)) {\n const selectedOptionElement = this.options.find(\n o =>\n !Array.isArray(this.selected) &&\n this.compareWith(o.value, this.selected.value)\n );\n selectedOptionElement?.nativeElement.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'instant'\n });\n }\n }, ON_OPEN_AUTO_SCROLL_TIMEOUT_MS);\n }\n}\n\n/**\n * The `SelectComponent` (`<impdc-select`) is a select-style dropdown input where an item (or multiple items) can be picked\n * from a list of *unique* available options. This component can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, add `SelectModule` to the `imports` array of the relevant `NgModule` or standalone component.\n */\n@Component({\n selector: 'impdc-select',\n exportAs: 'impdcSelect',\n standalone: true,\n imports: [\n CommonModule,\n AsyncPipe,\n ReactiveFormsModule,\n NgbDropdownModule,\n IconModule,\n SelectOptionDisplayComponent,\n SelectValueTagsDisplayComponent,\n FormFieldModule,\n InputDirective,\n BadgeModule\n ],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n 'disabled',\n { name: 'tabIndex', transform: numberAttribute },\n 'search',\n 'placeholder',\n { name: 'required', transform: booleanAttribute },\n 'compareWith',\n 'dropdownContainer',\n 'errorStateMatcher'\n ],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['selectionChange', 'valueChange', 'searchTextChanges'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-select]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-select--required]': 'required',\n '[class.impdc-select--disabled]': 'disabled',\n '[class.impdc-select--invalid]': 'errorState',\n '[class.impdc-select--empty]': 'empty',\n '[class.impdc-select--multiple]': 'multiple',\n '(focus)': 'onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: SelectComponent\n },\n {\n provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n useExisting: SelectComponent\n },\n {\n provide: IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n useExisting: SelectComponent\n }\n ]\n})\nexport class SelectComponent\n extends _SelectComponentBase\n implements ISelectValueBadgesParentComponent\n{\n public readonly controlType: string = 'impdc-select';\n public readonly supportsAffixes: boolean = true;\n\n constructor(@Attribute('tabindex') tabIndex?: string) {\n super(`impdc-select-${nanoid()}`, tabIndex);\n }\n\n /**\n * Allow the user to click a button inside of the select control and clear their selection(s);\n *\n * @default true\n */\n @Input({ transform: booleanAttribute })\n public allowClear: boolean = true;\n\n @Input({ transform: booleanAttribute })\n public override get multiple(): boolean {\n return this._multiple;\n }\n public override set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getImpdcSelectDynamicMultipleError();\n }\n\n this._multiple = value;\n }\n\n @Input()\n public multipleDisplay: 'inside' | 'outside' = 'inside';\n\n /** @ignore */\n public deselectOption(option: ISelectOption): void {\n this._deselectOption(option);\n }\n}\n","<div\n ngbDropdown\n #dropdown=\"ngbDropdown\"\n [autoClose]=\"multiple ? 'outside' : true\"\n [container]=\"dropdownContainer\"\n [dropdownClass]=\"dropdownContainer === 'body' ? 'impartner-hex' : ''\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"h-100 w-100\">\n <button\n #toggleButton\n class=\"impdc-select--toggle btn border-0 h-100 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ngbDropdownToggle>\n @if (empty) {\n <span class=\"impdc-select--text impdc-select--placeholder\">{{\n placeholder\n }}</span>\n } @else { @if (selectedIsSingle(selected)) {\n <span class=\"impdc-select--text impdc-select--value-text\">\n {{ selected.label }}\n </span>\n } @else if (multipleDisplay === 'inside') {\n <impdc-select-value-tags-display />\n } @else {\n <span class=\"impdc-select--text impdc-select--placeholder\">{{\n placeholder\n }}</span>\n } @if (!disabled && allowClear) {\n <button\n type=\"button\"\n class=\"impdc-select--clear-btn btn btn-xs btn-link text-gray-400 ms-auto\"\n (click)=\"$event.stopPropagation(); dropdown.close(); clearSelection()\">\n <impdc-icon name=\"times\" [size]=\"16\"></impdc-icon>\n </button>\n } }\n </button>\n <div\n ngbDropdownMenu\n class=\"impdc-select--dropdown-menu bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <div *ngIf=\"search !== 'none'\" class=\"impdc-select--search\">\n <impdc-form-field>\n <span impdcTextPrefix (click)=\"searchInput.focus()\">\n <impdc-icon name=\"search\"></impdc-icon>\n </span>\n <input\n #searchInput\n impdcInput\n [formControl]=\"searchControl\"\n class=\"impdc-select--search-input\"\n type=\"search\"\n (keydown.enter)=\"handleSearchSubmit($event)\"\n (keydown.arrowdown)=\"handleSearchUpDown($event, 'up')\"\n (keydown.arrowup)=\"handleSearchUpDown($event, 'down')\" />\n <span impdcTextSuffix>\n <button\n *ngIf=\"searchControl.value\"\n type=\"button\"\n class=\"impdc-select--clear-btn btn btn-xs btn-link text-gray-400 ms-auto\"\n (click)=\"searchControl.reset(); searchInput.focus()\">\n <impdc-icon name=\"times\" [size]=\"16\"></impdc-icon>\n </button>\n </span>\n </impdc-form-field>\n </div>\n <div class=\"impdc-select--options\">\n @for (option of filteredOptions$ | async; track option.value; let idx =\n $index; let first = $first) { @if (option.groupLabel &&\n option.showGroupLabel) {\n <div class=\"impdc-select--option-group-label\">\n {{ option.groupLabel }}\n </div>\n }\n <impdc-select-option-display\n [class.impdc-select-option--active]=\"idx === activeIndex\"\n [class.impdc-select-option--grouped]=\"!!option.groupLabel\"\n [groupLabel]=\"option.groupLabel\"\n [label]=\"option.label\"\n [value]=\"option.value\"\n [disabled]=\"!!option.disabled\"\n [selected]=\"option.selected\"\n [highlightText]=\"searchControl.value\"\n (mouseenter)=\"markActive(idx)\"\n (focus)=\"markActive(idx)\" />\n }\n </div>\n </div>\n</div>\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n OnDestroy,\n Output\n} from '@angular/core';\nimport { IElementSize } from './element-size.interface';\n\n@Directive({\n selector: '[impdcSizeDetector]'\n})\nexport class SizeDetectorDirective implements OnDestroy {\n @Output() public readonly resized = new EventEmitter<IElementSize>();\n\n private _resizeObserver: ResizeObserver | null = null;\n\n constructor(private readonly _elementRef: ElementRef) {\n this._observe();\n }\n\n public ngOnDestroy(): void {\n this.resized.complete();\n this._unobserve();\n }\n\n private _observe(): void {\n this._resizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]): void => {\n window.requestAnimationFrame(() => {\n const elementEntry = entries && entries[0];\n if (elementEntry) {\n this.resized.emit({\n height: elementEntry.contentRect.height,\n width: elementEntry.contentRect.width\n });\n }\n });\n }\n );\n\n this._resizeObserver.observe(this._elementRef.nativeElement);\n }\n\n private _unobserve(): void {\n this._resizeObserver &&\n this._resizeObserver.unobserve(this._elementRef.nativeElement);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport { sanitize } from '../../utilities';\nimport { IElementSize } from '../size-detection';\n\n/**\n * The `PaginationComponent` (`<impdc-pagination` or `<div impdc-pagination`) is a control for paged content such as tables or lists.\n * To use, import `PaginationModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ModalModule` imports and exports ImpdcFormsModule and [ButtonModule](./?path=/docs/design-components-button).\n */\n@Component({\n selector: 'impdc-pagination, div[impdc-pagination]',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss']\n})\nexport class PaginationComponent {\n private _summary =\n 'Showing {firstPageResult} to {lastPageResult} of {total} results';\n\n /**\n * The current page.\n */\n @Input()\n public page = 0;\n\n /**\n * The number of items shown per page. Items are commonly displayed as rows in a table.\n */\n @Input()\n public perPage = 10;\n\n /**\n * The total number of items.\n */\n @Input()\n public total = 0;\n\n /**\n * A formattable text summary of pagination data. `{firstPageResult}` The first item within the current page.\n * `{lastPageResult}` The last item within the current page. `{total}` The total number of items.\n */\n @Input()\n public set summary(summary: string) {\n this._summary = summary;\n }\n\n public get summary(): string {\n return sanitize(this._summary)\n .replace('{firstPageResult}', `<b>${this.firstPageResult}</b>`)\n .replace('{lastPageResult}', `<b>${this.lastPageResult}</b>`)\n .replace('{total}', `<b>${this.total}</b>`);\n }\n\n /**\n * The label text for the per page select input.\n */\n @Input()\n public perPageLabel = '';\n\n /**\n * Emitted when the page number is changed, specifying the target page number.\n */\n @Output() public readonly goToPage = new EventEmitter<number>();\n\n /**\n * Emitted when the per page is changed, specifying the new value.\n */\n @Output() public readonly perPageChange = new EventEmitter<number>();\n\n public get totalPages(): number {\n if (this.total < 1 || this.perPage < 1) {\n return 0;\n }\n\n if (this.total < this.perPage) {\n return 1;\n }\n\n return Math.ceil(this.total / this.perPage);\n }\n\n public get firstPageResult(): number {\n const page = this._getPageClamped();\n if (this.total < 1 || page < 1 || this.perPage < 1) {\n return 0;\n }\n\n if (page === 1) {\n return 1;\n }\n\n if (page > Math.ceil(this.total / this.perPage)) {\n return this.total;\n }\n\n return (page - 1) * this.perPage + 1;\n }\n\n public get lastPageResult(): number {\n const page = this._getPageClamped();\n if (this.total <= 0 || page < 1 || this.perPage < 1) {\n return 0;\n }\n\n if (page === 1) {\n if (this.total < this.perPage) {\n return this.total;\n } else {\n return this.perPage;\n }\n }\n\n if (this.total < this.perPage * page) {\n return this.total;\n } else {\n return this.perPage * page;\n }\n }\n\n /** @ignore */\n public mobile = false;\n\n constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n public handleResize(size: IElementSize): void {\n this.mobile = size.width < 640;\n this._changeDetectorRef.detectChanges();\n }\n\n public goToPreviousPage(): void {\n const page = this._getPageClamped();\n if (page <= 1) {\n return;\n }\n\n const previousPage = page - 1;\n this.page = previousPage;\n\n this.goToPage.emit(previousPage);\n }\n\n public goToNextPage(): void {\n const page = this._getPageClamped();\n if (page >= this.totalPages) {\n return;\n }\n\n const nextPage = page + 1;\n this.page = nextPage;\n\n this.goToPage.emit(nextPage);\n }\n\n public goToExactPageFromEvent({ target }: FocusEvent): void {\n this.goToExactPage((target as HTMLInputElement)?.value);\n }\n\n public goToExactPage(page: number | string): void {\n const targetPage = this._getPageClamped(page);\n\n if (targetPage === this.page) {\n return;\n }\n\n this.page = targetPage;\n\n this.goToPage.emit(this.page);\n }\n\n public handlePerPageChange(): void {\n this.perPageChange.emit(this.perPage);\n }\n\n public preventDefaultAndBlur(event: Event) {\n // prevents PRM form submit\n event.preventDefault();\n (event.target as HTMLInputElement).blur();\n }\n\n private _getPageClamped(page?: string | number): number {\n page = Number(page || this.page || 0);\n if (isNaN(page) || page < 1) {\n return 1;\n }\n\n if (page > this.totalPages) {\n return this.totalPages;\n }\n\n return page;\n }\n}\n","<div\n class=\"pagination-container\"\n impdcSizeDetector\n (resized)=\"handleResize($event)\">\n <div class=\"mobile-pagination\" [ngClass]=\"{ 'd-none': !mobile }\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\" [ngClass]=\"{ 'd-none': mobile }\">\n <div class=\"rows-per-page\">\n <div>{{ perPageLabel }}</div>\n <div>\n <impdc-form-field>\n <impdc-select\n allowClear=\"false\"\n [(ngModel)]=\"perPage\"\n (selectionChange)=\"handlePerPageChange()\">\n <impdc-select-option [value]=\"10\" label=\"10\"></impdc-select-option>\n <impdc-select-option [value]=\"25\" label=\"25\"></impdc-select-option>\n <impdc-select-option [value]=\"50\" label=\"50\"></impdc-select-option>\n <impdc-select-option\n [value]=\"100\"\n label=\"100\"></impdc-select-option>\n <impdc-select-option\n [value]=\"200\"\n label=\"200\"></impdc-select-option>\n </impdc-select>\n </impdc-form-field>\n </div>\n </div>\n <div class=\"pagination-rhs\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left first\"></i>\n <i impdc-icon name=\"chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n <i impdc-icon name=\"chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[impdc-toggle-input]',\n standalone: true,\n template: '',\n styleUrls: ['./toggle-input.component.scss']\n})\nexport class ToggleInputComponent {\n @HostBinding('class.form-check-input') classFormCheck = true;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n HostBinding,\n ElementRef,\n ChangeDetectorRef,\n AfterViewChecked,\n ContentChild\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport { ToggleInputComponent } from './components';\n\n@Component({\n selector: 'impdc-toggle',\n standalone: true,\n imports: [CommonModule, ToggleInputComponent],\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss']\n})\nexport class ToggleComponent implements AfterViewChecked {\n private _id = `impdc-toggle-${nanoid()}`;\n\n @Input()\n isSwitch = false;\n\n @Input()\n label = '';\n\n @Input()\n description = '';\n\n @Input()\n inline = false;\n\n @Input()\n switchIcons = false;\n\n @Input()\n layout: 'check-start' | 'check-end' = 'check-start';\n\n // we don't want this to be brandable yet\n // @Input()\n branded = false;\n\n @HostBinding('class') private classDefaults = 'impdc form-check';\n\n @HostBinding('class.impdc-toggle-has-description')\n private get classHasDescription() {\n return this.showDescription;\n }\n\n @HostBinding('class.form-switch') private get classFormSwitch() {\n return this.isCheckbox && this.isSwitch;\n }\n\n @HostBinding('class.form-check-inline') private get classFormCheckInline() {\n return this.inline;\n }\n\n @HostBinding('class.form-switch-icons') private get classFormSwitchIcons() {\n return this.isCheckbox && this.isSwitch && this.switchIcons;\n }\n\n @HostBinding('class.branded') private get classBranded() {\n return this.branded;\n }\n\n @HostBinding('class.flex-row-reverse') private get classFlexRowReverse() {\n return this.layout === 'check-end';\n }\n\n @HostBinding('class.justify-content-end')\n private get classJustifyContentEnd() {\n return this.layout === 'check-end';\n }\n\n @ContentChild(ToggleInputComponent, { read: ElementRef })\n inputRef?: ElementRef<HTMLInputElement>;\n\n get id(): string {\n return this._id;\n }\n\n get isCheckbox(): boolean {\n if (!this.inputRef) {\n return false;\n }\n\n return this.inputRef.nativeElement.getAttribute('type') === 'checkbox';\n }\n\n get showDescription(): boolean {\n return !this.inline && !!this.label && !!this.description;\n }\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewChecked(): void {\n if (this.inputRef) {\n if (!this.inputRef.nativeElement.id) {\n this.inputRef.nativeElement.id = this._id;\n } else if (this._id !== this.inputRef.nativeElement.id) {\n this._id = this.inputRef.nativeElement.id;\n }\n }\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div class=\"impdc-toggle-input\">\n <ng-content select=\"[impdc-toggle-input]\"></ng-content>\n</div>\n<div *ngIf=\"label\" class=\"impdc-toggle-info\">\n <label\n *ngIf=\"label\"\n class=\"form-check-label impdc-toggle-label\"\n [attr.for]=\"id\"\n >{{ label }}</label\n >\n <label\n *ngIf=\"showDescription\"\n class=\"impdc-toggle-description\"\n [attr.for]=\"id\"\n >{{ description }}</label\n >\n</div>\n","import { NgModule } from '@angular/core';\nimport { ToggleComponent } from './toggle.component';\nimport { ToggleInputComponent } from './components';\n\n@NgModule({\n imports: [ToggleComponent, ToggleInputComponent],\n exports: [ToggleComponent, ToggleInputComponent]\n})\nexport class ToggleModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../utilities';\nimport { ImpdcFormRoot, IMPDC_FORM_ROOT } from '../../component';\nimport { ErrorStateMatcher } from '../../services';\nimport {\n HasTabIndex,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n mixinErrorState,\n mixinTabIndex\n} from '../../shared';\nimport { ToggleModule } from '../shared';\n\nexport class CheckboxChangeEvent {\n constructor(\n /** The specific checkbox that changed. */\n public readonly source: CheckboxComponent,\n /** Whether the changed checkbox was checked or unchecked at the time of the event. */\n public readonly checked: boolean\n ) {}\n}\n\nabstract class CheckboxComponentBase {\n public readonly stateChanges = new Subject<void>();\n\n abstract disabled: boolean;\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n}\n\nconst _CheckboxComponentMixinBase = mixinTabIndex(\n mixinErrorState(CheckboxComponentBase)\n);\n\n/**\n * The `CheckboxComponent` (`<impdc-checkbox`) is an input with a simple boolean value as a checkbox or toggle switch.\n * This component can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, import `CheckboxModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-checkbox',\n standalone: true,\n imports: [CommonModule, ToggleModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-checkbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'null',\n '[class.impdc-checkbox--required]': 'required',\n '[class.impdc-checkbox--disabled]': 'disabled',\n '[class.impdc-checkbox--invalid]': 'errorState',\n '[class.impdc-checkbox--inline]': 'inline'\n },\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['tabIndex'],\n exportAs: 'impdcCheckControl',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: CheckboxComponent\n }\n ]\n})\nexport class CheckboxComponent\n extends _CheckboxComponentMixinBase\n implements\n DoCheck,\n OnDestroy,\n ControlValueAccessor,\n Validator,\n HasTabIndex,\n ImpdcFormFieldControl<boolean>,\n ICanUpdateErrorState,\n IHasErrorState\n{\n private readonly _uid: string = `impdc-checkbox-${nanoid()}`;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n @ViewChild('nativeInput', { read: ElementRef })\n protected _inputElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n public id: string = this._uid;\n\n /**\n * The primary label text for the checkbox control.\n */\n @Input()\n public label = '';\n\n /**\n * Text to provide additional description or context for the checkbox control. Does not display when `inline` is `true`.\n */\n @Input()\n public description = '';\n\n /**\n * Whether or not the input displays as a toggle switch.\n */\n @Input()\n public isSwitch = false;\n\n /**\n * When `isSwitch` is `true`, sets whether or not the toggle switch uses icons.\n */\n @Input()\n public switchIcons = false;\n\n /**\n * Whether or not the checkbox displays inline.\n */\n @Input()\n public inline = false;\n\n /**\n * Opt to display the checkbox control before the label (`'check-start'`) or after the label (`'check-end'`)\n */\n @Input()\n public layout: 'check-start' | 'check-end' = 'check-start';\n\n /**\n * Whether or not the checkbox input is checked.\n */\n @Input()\n public get checked(): boolean {\n return this.value;\n }\n public set checked(value: BooleanInput) {\n this.value = value;\n this._cvaOnChange(this.value);\n }\n\n /**\n * Whether or not the checkbox input is in an `indeterminate` state.\n */\n @Input()\n public get indeterminate(): boolean {\n return this._indeterminate;\n }\n public set indeterminate(value: BooleanInput) {\n const coercedValue = coerceBooleanPropertyValue(value);\n const isChange = coercedValue !== this._indeterminate;\n this._indeterminate = coercedValue;\n\n if (isChange) {\n this.indeterminateChange.emit(this._indeterminate);\n }\n }\n private _indeterminate = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: BooleanInput) {\n const newDisabledState = coerceBooleanPropertyValue(value);\n\n if (newDisabledState !== this._disabled) {\n this._disabled = newDisabledState;\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Event emitted whenever the checkedness of the input changes.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly change: EventEmitter<CheckboxChangeEvent> =\n new EventEmitter<CheckboxChangeEvent>();\n\n /**\n * Event emitted whenever the control enters or leaves an `indeterminate` state.\n */\n @Output()\n public readonly indeterminateChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n\n public get inputId(): string {\n return `${this.id || this._uid}-input`;\n }\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n @Attribute('tabindex') tabIndex: string,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) formRoot: ImpdcFormRoot,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl | null\n ) {\n super(\n defaultErrorStateMatcher,\n formRoot,\n parentForm,\n parentFormGroup,\n ngControl\n );\n\n this.tabIndex = parseInt(tabIndex) || 0;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.control?.addValidators(() => {\n return this.validate();\n });\n }\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n\n public get value(): boolean {\n return this._value;\n }\n public set value(value: BooleanInput) {\n const newValue = coerceBooleanPropertyValue(value);\n\n if (newValue !== this._value) {\n this._value = newValue;\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n private _value = false;\n\n public get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n /**\n * Used to set requiredness of control in a template-based manner; not necessary when using the\n * Angular reactive forms API and 'required' or `requiredTrue` validators.\n */\n @Input()\n public get required(): boolean {\n if (this._required !== undefined) {\n return this._required;\n }\n\n const control = this.ngControl?.control;\n if (control) {\n const hasRequired = control.hasValidator(Validators.required);\n const hasRequiredTrue = control.hasValidator(Validators.requiredTrue);\n\n return hasRequired || hasRequiredTrue;\n }\n\n return false;\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public readonly controlType: string = 'impdc-check';\n public readonly supportsAffixes: boolean = false;\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(value: any): void {\n this.value = !!value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n\n /* Validator */\n\n /** @ignore */\n public validate(): ValidationErrors | null {\n return !this.disabled && this.required && !this.value\n ? { required: true }\n : null;\n }\n\n /* Internals */\n protected _getAriaChecked(): 'true' | 'false' | 'mixed' {\n if (this.checked) {\n return 'true';\n }\n\n return this.indeterminate ? 'mixed' : 'false';\n }\n\n protected _onBlur(): void {\n this._focused = false;\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n });\n }\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _handleCheckClick(): void {\n if (!this.disabled) {\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this.indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n\n this.checked = !this.checked;\n\n this._emitChangeEvents();\n }\n }\n\n protected _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n private _emitChangeEvents(): void {\n this._cvaOnChange(this.checked);\n this.change.emit(new CheckboxChangeEvent(this, this.checked));\n\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n\n /**\n * Prevent click events that come from the `<label/>` element from bubbling. This prevents the\n * click handler on the host from triggering twice when clicking on the `<label/>` element. After\n * the click event on the `<label/>` propagates, the browsers dispatches click on the associated\n * `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event\n * bubbles when the label is clicked.\n */\n protected _preventBubblingFromLabel(event: MouseEvent) {\n if (\n !!event.target &&\n !!this._inputElement &&\n !(event.target as HTMLElement).contains(this._inputElement.nativeElement)\n ) {\n event.stopPropagation();\n }\n }\n}\n","<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n [layout]=\"layout\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n","import { NgModule } from '@angular/core';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [CheckboxComponent],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {}\n","import { IRadioButton } from './radio-button.interface';\n\nexport class RadioChangeEvent {\n constructor(\n /** The specific radio button that changed. */\n public readonly source: IRadioButton,\n /** The selected value. */\n public readonly value: any\n ) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { IRadioButton, IRadioGroup } from './interfaces';\n\nexport const IMPDC_RADIO_GROUP = new InjectionToken<IRadioGroup>(\n 'ImpdcRadioGroup'\n);\n\nexport const IMPDC_RADIO_BUTTON = new InjectionToken<IRadioButton>(\n 'ImpdcRadioButton'\n);\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue,\n coerceNumberPropertyValue\n} from '../../../../../utilities';\nimport { UniqueSelectionDispatcher } from '../../../services/unique-selection-dispatcher.service';\nimport { HasTabIndex, mixinTabIndex } from '../../../shared/tab-index.mixin';\nimport { ToggleModule } from '../../shared';\nimport { IMPDC_RADIO_BUTTON, IMPDC_RADIO_GROUP } from '../injection-tokens';\nimport { RadioChangeEvent, IRadioButton, IRadioGroup } from '../interfaces';\n\nabstract class RadioButtonComponentBase {\n abstract disabled: boolean;\n constructor() {}\n}\n\nconst _RadioButtonComponentMixinBase = mixinTabIndex(RadioButtonComponentBase);\n\n@Component({\n selector: 'impdc-radio-button',\n standalone: true,\n imports: [CommonModule, ToggleModule],\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-radio-button',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[class.impdc-radio-button--required]': 'required',\n '[class.impdc-radio-button--invalid]': '_errorState',\n '[class.impdc-radio-button--disabled]': 'disabled',\n '[class.impdc-radio-button--inline]': 'inline'\n },\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['tabIndex'],\n exportAs: 'impdcRadioButton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IMPDC_RADIO_BUTTON,\n useExisting: RadioButtonComponent\n }\n ]\n})\nexport class RadioButtonComponent\n extends _RadioButtonComponentMixinBase\n implements\n IRadioButton,\n HasTabIndex,\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit\n{\n private readonly _uid: string = `impdc-radio-button-${nanoid()}`;\n private _removeUniqueSelectionListener: () => void = () => {};\n private _previousTabIndex?: number;\n\n @ViewChild('nativeInput', { read: ElementRef })\n private _inputElement!: ElementRef<HTMLInputElement>;\n\n @Input()\n public id: string = this._uid;\n\n /**\n * The unique name for a group of radio options; Inherited from the parent `RadioGroupDirective` when available.\n */\n @Input()\n public name!: string;\n\n /**\n * Property for setting ARIA \"label\" attribute.\n */\n @Input('aria-label')\n public ariaLabel?: string;\n\n /**\n * Property for setting ARIA \"labelled by\" attribute.\n */\n @Input('aria-labelledby')\n public ariaLabelledby?: string;\n\n /**\n * Property for setting ARIA \"described by\" attribute.\n */\n @Input('aria-describedby')\n public ariaDescribedby?: string;\n\n /**\n * Whether or not the radio input is checked/selected.\n */\n @Input()\n public get checked(): boolean {\n return this._checked;\n }\n public set checked(value: BooleanInput) {\n const newCheckedValue = coerceBooleanPropertyValue(value);\n\n if (this._checked !== newCheckedValue) {\n this._checked = newCheckedValue;\n\n if (\n newCheckedValue &&\n this._radioGroup &&\n this._radioGroup.value !== this.value\n ) {\n this._radioGroup.selected = this;\n } else if (\n !newCheckedValue &&\n this._radioGroup &&\n this._radioGroup.value === this.value\n ) {\n this._radioGroup.selected = null;\n }\n\n if (newCheckedValue) {\n this._radioDispatcher.notify(this.id, this.name);\n }\n\n this._changeDetector.markForCheck();\n }\n }\n protected _checked = false;\n\n /**\n * The specific value represented by the radio button.\n */\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n\n if (this._radioGroup) {\n if (!this.checked) {\n this.checked = this._radioGroup.value === value;\n }\n\n if (this.checked) {\n this._radioGroup.selected = this;\n }\n }\n }\n }\n protected _value: any = null;\n\n /**\n * Whether or not the radio button displays inline; Inherited from the parent `RadioGroupDirective` when available.\n */\n @Input()\n public get inline(): boolean {\n return (\n this._inline || (this._radioGroup && this._radioGroup.inline) || false\n );\n }\n public set inline(value: BooleanInput) {\n this._inline = coerceBooleanPropertyValue(value);\n }\n protected _inline?: boolean;\n\n /**\n * Used to enable or disable the radio button, but will always return `true` when the parent\n * `RadioGroupDirective` is already disabled.\n */\n @Input()\n public get disabled(): boolean {\n return (\n this._disabled || (this._radioGroup != null && this._radioGroup.disabled)\n );\n }\n public set disabled(value: BooleanInput) {\n const newDisabledState = coerceBooleanPropertyValue(value);\n\n if (this._disabled !== newDisabledState) {\n this._disabled = newDisabledState;\n this._changeDetector.markForCheck();\n }\n }\n protected _disabled = false;\n\n /** @ignore */\n @Input()\n public get required(): boolean {\n return (\n this._required || (this._radioGroup != null && this._radioGroup.required)\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n }\n protected _required = false;\n\n /**\n * The primary label text for the radio button.\n */\n @Input()\n public label = '';\n\n /**\n * Text to provide additional description or context for the radio button. Does\n * not display if `inline` is `true`.\n */\n @Input()\n public description = '';\n\n /**\n * Event emitted when the radio button becomes selected/checked.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly change = new EventEmitter<RadioChangeEvent>();\n\n protected get _errorState(): boolean {\n return this._radioGroup ? this._radioGroup.errorState : false;\n }\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n private _radioDispatcher: UniqueSelectionDispatcher,\n @Attribute('tabindex') tabIndex?: string,\n @Inject(IMPDC_RADIO_GROUP) @Optional() readonly _radioGroup?: IRadioGroup\n ) {\n super();\n\n if (tabIndex) {\n this.tabIndex = coerceNumberPropertyValue(tabIndex, 0);\n }\n }\n\n /** @ignore */\n public ngOnInit(): void {\n if (this._radioGroup) {\n this.checked = this._radioGroup.value === this._value;\n\n if (this.checked) {\n this._radioGroup.selected = this;\n }\n\n this.name = this._radioGroup.name;\n }\n\n this._removeUniqueSelectionListener = this._radioDispatcher.listen(\n (id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n }\n );\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n this._updateTabIndex();\n }\n\n /** @ignore */\n public ngAfterViewInit(): void {\n this._updateTabIndex();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this._removeUniqueSelectionListener();\n }\n\n /** @ignore */\n public markForCheck(): void {\n this._changeDetector.markForCheck();\n }\n\n protected _emitChangesEvent(): void {\n this.change.emit({ source: this, value: this._value });\n }\n\n protected _onBlur(): void {\n if (this._radioGroup) {\n this._radioGroup.touch();\n }\n }\n\n protected _onInputChange(event: Event): void {\n event.stopPropagation();\n\n if (!this.checked && !this.disabled) {\n const groupValueChanged =\n this._radioGroup && this.value !== this._radioGroup.value;\n this.checked = true;\n this._emitChangesEvent();\n\n if (this._radioGroup) {\n this._radioGroup.onChangeFn(this.value);\n\n if (groupValueChanged) {\n this._radioGroup.emitChangesEvent();\n }\n }\n }\n }\n\n protected _updateTabIndex(): void {\n const radioGroup = this._radioGroup;\n let tabIndexValue: number;\n\n if (!radioGroup || !radioGroup.selected || this.disabled) {\n tabIndexValue = this.tabIndex;\n } else {\n tabIndexValue = radioGroup.selected === this ? this.tabIndex : -1;\n }\n\n if (tabIndexValue !== this._previousTabIndex) {\n const inputElt: HTMLInputElement | undefined =\n this._inputElement?.nativeElement;\n\n if (inputElt) {\n inputElt.setAttribute('tabindex', tabIndexValue + '');\n this._previousTabIndex = tabIndexValue;\n }\n }\n }\n}\n","<impdc-toggle [label]=\"label\" [description]=\"description\" [inline]=\"inline\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"radio\"\n class=\"impdc-radio-button__native-control\"\n [class.is-invalid]=\"_errorState\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n (change)=\"_onInputChange($event)\"\n (blur)=\"_onBlur()\" />\n</impdc-toggle>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n DoCheck,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../../utilities';\nimport { Subject } from 'rxjs';\nimport { ImpdcFormRoot, IMPDC_FORM_ROOT } from '../../../component';\nimport { ErrorStateMatcher } from '../../../services';\nimport {\n IHasErrorState,\n ImpdcFormFieldControl,\n mixinErrorState\n} from '../../../shared';\nimport { IMPDC_RADIO_BUTTON, IMPDC_RADIO_GROUP } from '../injection-tokens';\nimport { RadioChangeEvent, IRadioButton, IRadioGroup } from '../interfaces';\n\nconst _RadioGroupDirectiveBase = mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n);\n\n/**\n * The `RadioGroupDirective` (`<impdc-radio-group`) is a container for `RadioButtonComponent` (`<impdc-radio-button`).\n * This directive/component can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, import `RadioModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-radio-group',\n exportAs: 'impdcRadioGroup',\n standalone: true,\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: RadioGroupDirective\n },\n {\n provide: IMPDC_RADIO_GROUP,\n useExisting: RadioGroupDirective\n }\n ],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n role: 'radiogroup',\n class: 'impdc-radio-group',\n '[class.impdc-radio-group--required]': 'required',\n '[class.impdc-radio-group--disabled]': 'disabled',\n '[class.impdc-radio-group--invalid]': 'errorState',\n '[class.impdc-radio-group--inline]': 'inline'\n }\n})\nexport class RadioGroupDirective<\n TRadioButton extends IRadioButton = IRadioButton\n >\n extends _RadioGroupDirectiveBase\n implements\n IRadioGroup,\n ControlValueAccessor,\n ImpdcFormFieldControl<any>,\n AfterContentInit,\n DoCheck,\n OnDestroy,\n IHasErrorState\n{\n @ContentChildren(IMPDC_RADIO_BUTTON, { descendants: true })\n protected _radioOptions!: QueryList<TRadioButton>;\n\n protected readonly _uid = `impdc-radio-group-${nanoid()}`;\n protected _initialized = false;\n\n private _previousControl?: AbstractControl | null;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n /**\n * The unique name for the group of radio options; Autogenerated by default.\n */\n @Input()\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n this._name = value || this._uid;\n this._updateRadioOptionNames();\n }\n protected _name: string = this._uid;\n\n /**\n * Whether or not the nested radio options should display inline.\n */\n @Input()\n public get inline(): boolean {\n return this._inline;\n }\n public set inline(value: BooleanInput) {\n this._inline = coerceBooleanPropertyValue(value);\n this._markRadioOptionsForCheck();\n }\n protected _inline = false;\n\n /**\n * A reference to the currently selected radio button component (eg. `<impdc-radio-button>`).\n */\n @Input()\n public get selected() {\n return this._selected;\n }\n public set selected(selected: TRadioButton | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioOption();\n }\n protected _selected: TRadioButton | null = null;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Event emitted whenever a new radio option is selected.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly change: EventEmitter<RadioChangeEvent> =\n new EventEmitter<RadioChangeEvent>();\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl | null\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @ignore */\n public ngAfterContentInit(): void {\n this._initialized = true;\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n this._markRadioOptionsForCheck();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n\n this._updateSelectedRadioOptionFromValue();\n this._checkSelectedRadioOption();\n this.stateChanges.next();\n }\n }\n protected _value: any;\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n public get focused(): boolean {\n return this._focused;\n }\n protected _focused = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanPropertyValue(value);\n this._markRadioOptionsForCheck();\n this.stateChanges.next();\n }\n protected _disabled = false;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public readonly controlType = 'impdc-radio-group';\n\n public readonly supportsAffixes: boolean = false;\n\n /* ControlValueAccessor */\n /** @ignore */\n writeValue(value: any): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n\n /* Internals */\n\n /** @ignore */\n public emitChangesEvent(): void {\n if (this._initialized) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.change.emit({ source: this._selected!, value: this._value });\n }\n }\n\n /** @ignore */\n public onChangeFn(value: any): void {\n this._cvaOnChange(value);\n }\n\n /** @ignore */\n public touch(): void {\n if (this._cvaOnTouched) {\n this._cvaOnTouched();\n }\n }\n\n protected _checkSelectedRadioOption(): void {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n protected _markRadioOptionsForCheck(): void {\n if (this._radioOptions) {\n this._radioOptions.forEach(option => option.markForCheck());\n }\n }\n\n protected _updateRadioOptionNames(): void {\n if (this._radioOptions) {\n this._radioOptions.forEach(option => {\n option.name = this.name;\n option.markForCheck();\n });\n }\n }\n\n protected _updateSelectedRadioOptionFromValue(): void {\n const isAlreadySelected =\n this._selected !== null && this._selected.value === this._value;\n\n if (this._radioOptions && !isAlreadySelected) {\n this._selected = null;\n this._radioOptions.forEach(option => {\n option.checked = this.value === option.value;\n\n if (option.checked) {\n this._selected = option;\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { RadioGroupDirective } from './radio-group/radio-group.directive';\n\n@NgModule({\n imports: [RadioButtonComponent, RadioGroupDirective],\n exports: [RadioButtonComponent, RadioGroupDirective]\n})\nexport class RadioModule {}\n","import { NgModule } from '@angular/core';\nimport { SelectOptionGroupComponent } from './option-group';\nimport { SelectOptionComponent } from './option';\nimport { SelectValueTagsDisplayComponent } from './value-tags-display';\nimport { SelectComponent } from './select.component';\n\n@NgModule({\n imports: [\n SelectOptionGroupComponent,\n SelectOptionComponent,\n SelectValueTagsDisplayComponent,\n SelectComponent\n ],\n exports: [\n SelectOptionGroupComponent,\n SelectOptionComponent,\n SelectValueTagsDisplayComponent,\n SelectComponent\n ]\n})\nexport class SelectModule {}\n","import { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Input,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport { IconModule } from '../../../icon';\nimport { TagComponent } from '../../../tag';\nimport { FormFieldModule } from '../../component';\nimport { ImpdcFormFieldControl } from '../../shared';\nimport { _SelectComponentBase } from '../select/select.component';\nimport { InputDirective } from '../input';\nimport {\n IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n ISelectOption,\n ISelectValueBadgesParentComponent,\n SelectOptionDisplayComponent,\n SelectValueTagsDisplayComponent\n} from '../select';\n\n/**\n * The `TagSelectComponent` (`<impdc-tag-select>`) is a form control where multiple \"tag\"-like values can\n * be picked from a list of *unique* available options. This component can be used within a `FormFieldComponent`\n * (`<impdc-form-field>`) component or on its own. To use, add `TagSelectComponent` to the `imports` array of\n * the relevant `NgModule` or standalone component.\n */\n@Component({\n selector: 'impdc-tag-select',\n exportAs: 'impdcTagSelect',\n standalone: true,\n imports: [\n CommonModule,\n AsyncPipe,\n ReactiveFormsModule,\n NgbDropdownModule,\n IconModule,\n SelectOptionDisplayComponent,\n SelectValueTagsDisplayComponent,\n FormFieldModule,\n InputDirective,\n TagComponent\n ],\n styleUrl: './tag-select.component.scss',\n templateUrl: './tag-select.component.html',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n 'disabled',\n { name: 'tabIndex', transform: numberAttribute },\n 'search',\n 'placeholder',\n { name: 'required', transform: booleanAttribute },\n 'compareWith',\n 'dropdownContainer',\n 'errorStateMatcher'\n ],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['selectionChange', 'valueChange', 'searchTextChanges'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-tag-select--required]': 'required',\n '[class.impdc-tag-select--disabled]': 'disabled',\n '[class.impdc-tag-select--invalid]': 'errorState',\n '[class.impdc-tag-select--empty]': 'empty',\n '(focus)': 'onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: TagSelectComponent\n },\n {\n provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n useExisting: TagSelectComponent\n },\n {\n provide: IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n useExisting: TagSelectComponent\n }\n ]\n})\nexport class TagSelectComponent\n extends _SelectComponentBase\n implements ISelectValueBadgesParentComponent\n{\n public readonly controlType: string = 'impdc-tag-select';\n public readonly supportsAffixes: boolean = false;\n\n /**\n * Render the control is a readonly state.\n *\n * Semantically distinct from `disabled`, `readonly` controls will still have their values bound in\n * Angular forms and `FormGroup`s, whereas a disabled control's value would be omitted.\n */\n @Input({ transform: booleanAttribute })\n public readonly = false;\n\n /**\n * The maximum number of values that will be displayed inline before truncation occurs.\n */\n @Input({ transform: numberAttribute })\n public truncateThreshold = 8;\n\n /**\n * Text to be shown when displayed values are truncated, allowing the user to view all selected values.\n */\n @Input()\n public showMoreLabel = 'Show more...';\n\n /**\n * Text to be shown when displayed values have been expanded beyond the truncation threshold, allowing\n * the user collapse the view again.\n */\n @Input()\n public showLessLabel = 'Show less...';\n\n constructor(@Attribute('tabindex') tabIndex?: string) {\n super(`impdc-tag-select-${nanoid()}`, tabIndex);\n\n this._multiple = true;\n this._placeholder = 'Add Tags';\n }\n\n /** @ignore */\n public deselectOption(option: ISelectOption): void {\n this._deselectOption(option);\n }\n\n protected toggleDropdown(evt: Event): void {\n if (!this.ngbDropdown || this.disabled) {\n return;\n }\n\n evt.stopPropagation();\n evt.preventDefault();\n this.ngbDropdown.toggle();\n }\n}\n","<impdc-select-value-tags-display\n rounded=\"true\"\n [readonly]=\"readonly\"\n [truncateThreshold]=\"truncateThreshold\"\n [showMoreLabel]=\"showMoreLabel\"\n [showLessLabel]=\"showLessLabel\">\n <div\n ngbDropdown\n #dropdown=\"ngbDropdown\"\n [class.d-none]=\"readonly || disabled\"\n autoClose=\"outside\"\n [container]=\"dropdownContainer\"\n [dropdownClass]=\"dropdownContainer === 'body' ? 'impartner-hex' : ''\"\n (openChange)=\"handleOpenChange($event)\">\n @if (!readonly && !disabled) {\n <impdc-tag\n #toggleButton\n class=\"impdc-tag-select--toggle no-caret\"\n theme=\"outline\"\n [rounded]=\"true\"\n (focus)=\"onFocus()\"\n (click)=\"toggleDropdown($event)\"\n ngbDropdownAnchor>\n {{ empty ? placeholder : '' }}\n <impdc-icon name=\"plus\" theme=\"light\" />\n </impdc-tag>\n }\n <div\n ngbDropdownMenu\n class=\"impdc-tag-select--dropdown-menu bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <div *ngIf=\"search !== 'none'\" class=\"impdc-tag-select--search\">\n <impdc-form-field>\n <span impdcTextPrefix (click)=\"searchInput.focus()\">\n <impdc-icon name=\"search\"></impdc-icon>\n </span>\n <input\n #searchInput\n impdcInput\n [formControl]=\"searchControl\"\n class=\"impdc-tag-select--search-input\"\n type=\"search\"\n (keydown.enter)=\"handleSearchSubmit($event)\"\n (keydown.arrowdown)=\"handleSearchUpDown($event, 'up')\"\n (keydown.arrowup)=\"handleSearchUpDown($event, 'down')\" />\n <span impdcTextSuffix>\n <button\n *ngIf=\"searchControl.value\"\n type=\"button\"\n class=\"impdc-tag-select--clear-btn btn btn-xs btn-link text-gray-400 ms-auto\"\n (click)=\"searchControl.reset(); searchInput.focus()\">\n <impdc-icon name=\"times\" [size]=\"16\"></impdc-icon>\n </button>\n </span>\n </impdc-form-field>\n </div>\n <div class=\"impdc-tag-select--options\">\n @for (option of filteredOptions$ | async; track option.value; let idx =\n $index; let first = $first) { @if (option.groupLabel &&\n option.showGroupLabel) {\n <div class=\"impdc-tag-select--option-group-label\">\n {{ option.groupLabel }}\n </div>\n }\n <impdc-select-option-display\n [class.impdc-select-option--active]=\"idx === activeIndex\"\n [class.impdc-select-option--grouped]=\"!!option.groupLabel\"\n [groupLabel]=\"option.groupLabel\"\n [label]=\"option.label\"\n [value]=\"option.value\"\n [disabled]=\"!!option.disabled\"\n [selected]=\"option.selected\"\n [highlightText]=\"searchControl.value\"\n (mouseenter)=\"markActive(idx)\"\n (focus)=\"markActive(idx)\" />\n }\n </div>\n </div>\n </div>\n</impdc-select-value-tags-display>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n CheckboxModule,\n InputDirective,\n RadioModule,\n SelectModule,\n TagSelectComponent\n} from './controls';\nimport { FormFieldModule } from './component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n FormFieldModule,\n CheckboxModule,\n RadioModule,\n SelectModule,\n TagSelectComponent,\n InputDirective\n ],\n exports: [\n FormFieldModule,\n CheckboxModule,\n RadioModule,\n SelectModule,\n TagSelectComponent,\n InputDirective\n ]\n})\nexport class ImpdcFormsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SizeDetectorDirective } from './directive/index';\n\n@NgModule({\n declarations: [SizeDetectorDirective],\n imports: [CommonModule],\n exports: [SizeDetectorDirective]\n})\nexport class SizeDetectionModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from '../button';\nimport { ImpdcFormsModule } from '../form-field';\nimport { IconModule } from '../icon';\nimport { PaginationComponent } from './pagination.component';\nimport { SizeDetectionModule } from '../size-detection';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ImpdcFormsModule,\n IconModule,\n SizeDetectionModule\n ],\n declarations: [PaginationComponent],\n exports: [ButtonModule, ImpdcFormsModule, IconModule, PaginationComponent]\n})\nexport class PaginationModule {\n constructor() {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'impdc-column-heading',\n templateUrl: './column-heading.component.html',\n styleUrls: ['./column-heading.component.scss']\n})\nexport class ColumnHeadingComponent {\n @Input()\n public isSortable = false;\n\n @Input()\n public columnIndex?: number;\n\n @Input()\n public sortColumnIndex?: number;\n\n @Input()\n public direction: 'asc' | 'desc' = 'asc';\n\n @Input()\n public text = '';\n\n public get sortedColumn(): boolean {\n return (\n this.sortColumnIndex !== undefined &&\n this.sortColumnIndex === this.columnIndex\n );\n }\n\n @Output()\n public sort = new EventEmitter<number>();\n\n public onSort(): void {\n this.sort.emit(this.columnIndex);\n }\n}\n","<a *ngIf=\"isSortable; else notClickable\" class=\"impdc-table-sort\">\n <span>\n {{ text }}\n </span>\n <span\n [ngClass]=\"sortedColumn ? 'visible' : 'invisible'\"\n impdc-icon\n [name]=\"direction === 'asc' ? 'arrow-up' : 'arrow-down'\"></span>\n</a>\n<ng-template #notClickable>\n {{ text }}\n</ng-template>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'impdc-table-bulk-actions',\n templateUrl: './bulk-actions.component.html',\n styleUrls: ['./bulk-actions.component.scss']\n})\nexport class TableBulkActionsComponent {}\n","<div class=\"table-bulk-actions\">\n <div class=\"selected-total\">\n <ng-content select=\"[selectedTotal]\"></ng-content>\n </div>\n <div class=\"bulk-actions\">\n <ng-content select=\"[bulkAction]\"></ng-content>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Optional,\n Output\n} from '@angular/core';\nimport {\n ITableActionsColumnDef,\n ITableRowAction,\n ITableRowItem\n} from '../../interfaces';\nimport { BrandedDirective } from '../../../branding';\nimport { TableThemeHelper } from '../../helpers';\nimport { ButtonTheme } from '../../../button';\nimport { ComponentTheme } from '../../../../types';\n\n@Component({\n selector: 'impdc-row-actions',\n templateUrl: './row-actions.component.html',\n styleUrls: ['./row-actions.component.scss']\n})\nexport class RowActionsComponent {\n @Input({ required: true })\n public columnDef!: ITableActionsColumnDef<any>;\n\n @Input({ required: true })\n public rowItem!: ITableRowItem;\n\n @Input()\n public lastColumn = false;\n\n @Output()\n public actionClick = new EventEmitter<string>();\n\n /** @ignore */\n public branded = false;\n\n public constructor(@Optional() _branded: BrandedDirective) {\n this.branded = _branded ? true : false;\n }\n public isVisible(action: ITableRowAction): boolean {\n if (!action.isVisible) {\n return true;\n }\n\n return action.isVisible(this.rowItem);\n }\n\n public handleActionClick(apiName: string): void {\n this.actionClick.emit(apiName);\n }\n\n public getColor(action: ITableRowAction): string {\n return TableThemeHelper.getColor(action.theme);\n }\n\n protected getButtonThemeFromComponentTheme(\n componentTheme?: ComponentTheme\n ): ButtonTheme {\n switch (componentTheme) {\n case ComponentTheme.Primary:\n return 'primary';\n case ComponentTheme.Danger:\n return 'danger';\n case ComponentTheme.Secondary:\n default:\n return 'secondary';\n }\n }\n}\n","@if (columnDef.actions) { @if (columnDef.actions.length > 2) {\n<div [ngClass]=\"{ 'text-end': lastColumn }\">\n <div\n ngbDropdown\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom-end bottom-start top-end top-start\"\n class=\"lh-1\"\n #dropdown=\"ngbDropdown\">\n <button\n ngbDropdownToggle\n type=\"button\"\n class=\"row-actions-dropdown-toggle btn btn-link btn-sm no-caret p-0\">\n <impdc-icon name=\"ellipsis-v\" size=\"16\" theme=\"solid\"></impdc-icon>\n </button>\n <div ngbDropdownMenu>\n @for (action of columnDef.actions; track action.apiName) { @if\n (isVisible(action)) {\n <button\n type=\"button\"\n ngbDropdownItem\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } }\n </div>\n </div>\n</div>\n} @else {\n<div class=\"d-flex flex-row gap-2 justify-content-end\">\n <ng-container *ngFor=\"let action of columnDef.actions\">\n @if (isVisible(action)) { @if (columnDef.actionType === 'button') {\n <button\n impdcButton\n theme=\"secondary\"\n class=\"btn-xs\"\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } @else if (columnDef.actionType === 'link') {\n <a *ngIf=\"!branded\" (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n <a *ngIf=\"branded\" impdcBranded (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n } @else {\n <span\n impdc-icon\n [name]=\"action.iconName || 'edit'\"\n [ngClass]=\"getColor(action)\"\n class=\"row-actions-item\"\n (click)=\"handleActionClick(action.apiName)\">\n </span>\n } }\n </ng-container>\n</div>\n} }\n","import { Component, Input } from '@angular/core';\n\n/**\n * The `SpinnerComponent` (`<impdc-spinner` or `<div impdc-spinner`) is used when data is processing and content isn't ready to be interacted with yet.\n * To use, import `SpinnerModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-spinner, div[impdc-spinner]',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class SpinnerComponent {\n /**\n * Accessibility text used by screen readers.\n */\n @Input()\n public accessibilityText = 'Loading...';\n}\n","<div class=\"spinner-border\" role=\"status\">\n <span *ngIf=\"accessibilityText\" class=\"visually-hidden\">{{\n accessibilityText\n }}</span>\n</div>\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n/**\n * The `TableDirective` (`<table impdcTable`) that adds Hex styling to a `table` element.\n * To use, import `TableModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Directive({\n selector: 'table[impdcTable]'\n})\nexport class TableDirective {\n /**\n * Stripes every other row in a slightly darker background color.\n */\n @Input()\n striped = false;\n\n @HostBinding('class.table') private classTable = true;\n\n @HostBinding('class.table-striped') private get classTableStriped() {\n return this.striped;\n }\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n ICellRenderer,\n ICustomCellRendererComponents,\n ITableRowItem,\n ITableRowItemValue,\n ITableRowItemValueTypes,\n TableColumnDef\n} from '../interfaces/index';\n\n@Directive({\n selector: '[impdcTableInjectComponent]'\n})\nexport class TableInjectComponentDirective implements OnInit {\n @Input({ required: true }) public columnDef!: TableColumnDef;\n @Input() public value: ITableRowItemValueTypes<ITableRowItemValue> = '';\n @Input() public rowItem: ITableRowItem = { id: 0 };\n @Input() public customCellComponents: ICustomCellRendererComponents = {};\n\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _componentFactoryResolver: ComponentFactoryResolver\n ) {}\n\n public ngOnInit(): void {\n this._renderCustomCell();\n }\n\n private _renderCustomCell(): void {\n const { cellRendererComponent, cellRendererParams } = this.columnDef;\n if (!cellRendererComponent) {\n return;\n }\n\n const item = this.rowItem;\n const customCellComponent =\n this.customCellComponents[cellRendererComponent];\n\n this._viewContainerRef.clear();\n\n const componentFactory =\n this._componentFactoryResolver.resolveComponentFactory<ICellRenderer>(\n customCellComponent\n );\n const componentRef =\n this._viewContainerRef.createComponent<ICellRenderer>(componentFactory);\n\n componentRef.instance.value = this.value;\n componentRef.instance.rowItem = item;\n componentRef.instance.params = cellRendererParams;\n }\n}\n","import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Host,\n Input,\n OnChanges,\n Optional,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { get as getNestedValue, set as setNestedValue } from 'lodash';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { DEBOUNCE_TIME, SORT_COLUMN_INDEX } from '../constants/index';\nimport { TableColumnType } from '../enumerations/index';\nimport {\n ICustomCellRendererComponents,\n ISortByPayload,\n ITableActionsColumnDef,\n ITableEventPayload,\n ITableRowActionPayload,\n ITableRowItem,\n ITableRowItemValue,\n ITableRowItemValueTypes,\n TableColumnDef\n} from '../interfaces/index';\nimport { CheckboxChangeEvent } from '../../form-field';\nimport { TableThemeHelper } from '../helpers';\nimport { ComponentTheme } from '../../../types';\nimport { BrandedDirective } from '../../branding';\nimport { PaginationComponent } from '../../pagination';\nimport { TableBulkActionsComponent } from '../components';\n\n/**\n * The `TableComponent` (`<impdc-table`) is a data table component.\n * To use, import `TableModule` from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-table',\n styleUrls: ['./table.component.scss'],\n templateUrl: './table.component.html'\n})\nexport class TableComponent implements OnChanges {\n /**\n * Whether the table data is currently being loaded. The `<impdc-spinner>` will show if data is loading.\n */\n @Input() public loading = false;\n\n /**\n * The visible columns of the table. Each `ITableColumnDef` defines properties regarding the display, formatting and interaction of the column's cells.\n * Column/cell color precedence is:\n * 1) `fieldColor` - allows an `ITableColumnDef` to delegate the responsibility of cell color to an `ITableRowItem` property.\n * 2) `colorGetter`- allows an `ITableColumnDef` to delegate the responsibility of cell color to a function of the `ITableRowItem` determined by the developer.\n * 3) `color` - a property of an `ITableColumnDef`.\n */\n @Input() public columnDefs: TableColumnDef[] = [];\n\n /**\n * Whether the table is striped.\n */\n @Input() public striped = true;\n\n /**\n * Whether individual rows can be selected. Will be `true` if explicitly set to `true` or `canSelectAllRows` is `true`.\n */\n @Input() public set canSelectRows(value: boolean) {\n this._canSelectRows = value;\n }\n public get canSelectRows(): boolean {\n return this.canSelectAllRows || this._canSelectRows || !!this.bulkActions;\n }\n\n /**\n * Whether all rows can be selected at once. Will be `true` if explicitly set to `true` or if `TableBulkActionsComponent` is content projected.\n */\n @Input()\n public set canSelectAllRows(value: boolean) {\n this._canSelectAllRows = value;\n }\n\n public get canSelectAllRows(): boolean {\n return this._canSelectAllRows || !!this.bulkActions;\n }\n\n /**\n * The placeholder text and empty value display text for `<impdc-select>` instances in cells with a `ITableColumnDef` `columnType` = `SingleSelect` or `MultiSelect`.\n */\n @Input() public selectPlaceholder = '';\n\n /**\n * The `columnDefs` index of the currently sorted column.\n */\n @Input() public sortColumnIndex = SORT_COLUMN_INDEX;\n\n /**\n * The direction of the currently sorted column.\n */\n @Input() public sortDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * The table row data as an array of `ITableRowItem`.\n */\n @Input() public tableData: ITableRowItem[] = [];\n\n /**\n * An array of currently selected IDs from the `tableData` input. Array must be of type `(string | number)[]`.\n */\n @Input()\n public set selectedRowIds(value: (string | number)[]) {\n this._selectedRowIds = [...value];\n }\n public get selectedRowIds(): (string | number)[] {\n return [...this._selectedRowIds];\n }\n\n /**\n * The registered custom cell renderer components available to be used in the table instance.\n * For a given `ITableColumnDef` in the `columnDefs` input, the `cellRendererComponent` property should be set to the key of the registered component in this input.\n */\n @Input() public customCellComponents?: ICustomCellRendererComponents;\n\n /**\n * Event emitted when one or multiple rows are selected. Emits `(string | number)[]` payload.\n */\n @Output() public readonly rowSelect = new EventEmitter<(string | number)[]>();\n\n /**\n * Event emitted when a column is sorted. Emits `ISortByPayload` payload.\n */\n @Output() public readonly sortBy = new EventEmitter<ISortByPayload>();\n\n /**\n * Event emitted when a row link is clicked. Emits `ITableEventPayload` payload.\n */\n @Output() public readonly linkClick = new EventEmitter<ITableEventPayload>();\n\n /**\n * Event emitted when a row action is clicked. Emits an `ITableRowActionPayload` payload.\n */\n @Output() public readonly rowActionClick =\n new EventEmitter<ITableRowActionPayload>();\n\n /** @ignore */\n @ContentChild(PaginationComponent)\n public paginationComponent?: PaginationComponent = undefined;\n\n /** @ignore */\n @ContentChild(TableBulkActionsComponent)\n public bulkActions?: TableBulkActionsComponent = undefined;\n\n /**\n * Event emitted when a row input value is changed. Emitted cells of `columnType` `SinglSelect`, `MultiSelect`, `Input`, `Boolean` or `Icon`.\n * Not emitted if column definition property `disabled` = `true`. Emits `ITableEventPayload` payload.\n */\n @Output() public readonly inputChange =\n new EventEmitter<ITableEventPayload>();\n\n /** @ignore */\n public readonly cellType = TableColumnType;\n /** @ignore */\n public allSelected = true;\n /** @ignore */\n public get someSelected(): boolean {\n return (\n !!this._selectedRowIds &&\n this._selectedRowIds.length > 0 &&\n !!this.tableData &&\n this.tableData.length > 0 &&\n this._selectedRowIds.length < this.tableData.length\n );\n }\n /** @ignore */\n public readonly branded: boolean = false;\n\n /** @ignore */\n public get tableSpan(): number {\n return this.canSelectRows\n ? this.columnDefs.length + 1\n : this.columnDefs.length;\n }\n\n private _canSelectRows = false;\n private _canSelectAllRows = false;\n private _selectedRowIds: (string | number)[] = [];\n private readonly _inputChange = new EventEmitter<ITableEventPayload>();\n\n constructor(\n private readonly _datePipe: DatePipe,\n private readonly _percentPipe: PercentPipe,\n private readonly _decmialPipe: DecimalPipe,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Host() private _branded: BrandedDirective\n ) {\n this.branded = _branded ? true : false;\n this._inputChange\n .pipe(debounceTime(DEBOUNCE_TIME))\n .subscribe(this.inputChange);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['selectedRowIds'] || changes['tableData']) {\n if (\n !this.tableData ||\n !this.tableData.length ||\n !this.selectedRowIds ||\n !this.selectedRowIds.length\n ) {\n this.allSelected = false;\n } else {\n this.allSelected = this.selectedRowIds.length >= this.tableData.length;\n }\n }\n }\n\n public getMailToValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string {\n const { columnType, truncated: truncated } =\n this._getColumnDefByIndex(columnIndex);\n let value = this._getValue(columnIndex, currentRow);\n\n if (columnType !== TableColumnType.Email) {\n return String(value);\n }\n value = value ? `mailto:${value}` : value;\n\n return String(value);\n }\n\n public getStringValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string {\n const value = this.getValue(columnIndex, currentRow);\n\n if (Array.isArray(value)) {\n return value.join(';');\n }\n\n return String(value);\n }\n\n public getValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string | string[] {\n const { columnType, truncated: truncated } =\n this._getColumnDefByIndex(columnIndex);\n let value = this._getValue(columnIndex, currentRow);\n\n switch (columnType) {\n case TableColumnType.Decimal: {\n value = this._decmialPipe.transform(Number(value) || 0) || '';\n break;\n }\n case TableColumnType.Date: {\n const date = new Date(String(value));\n const validDate = date instanceof Date && !isNaN(date.getTime());\n value = validDate\n ? this._datePipe.transform(date, 'MM/dd/yyyy') || ''\n : String(value);\n break;\n }\n case TableColumnType.DateTime: {\n const dateTime = new Date(String(value));\n const validDateTime =\n dateTime instanceof Date && !isNaN(dateTime.getTime());\n value = validDateTime\n ? this._datePipe.transform(dateTime, 'MM/dd/yyyy h:mm:ss a') || ''\n : String(value);\n break;\n }\n case TableColumnType.Link: {\n value = String(value).replace(/(^\\w+:|^)\\/\\//, '');\n break;\n }\n case TableColumnType.Percentage: {\n value = this._percentPipe.transform(Number(value) || 0) || '';\n break;\n }\n case TableColumnType.Url: {\n if (!/(http(s?)):\\/\\//i.test(String(value))) {\n value = `https://${value}`;\n }\n break;\n }\n case TableColumnType.Text: {\n if (Array.isArray(value)) {\n value = value.join('; ');\n }\n\n if (!truncated) {\n return value;\n }\n\n const truncateString = (string = '', maxLength = truncated) =>\n string.length > maxLength\n ? `${string.substring(0, maxLength)}…`\n : string;\n\n !!truncated\n ? (value = truncateString(String(value), truncated))\n : value;\n break;\n }\n case TableColumnType.MultiSelect:\n if (typeof value === 'string') {\n value = value.split(';')?.map(v => v.trim()) || [];\n }\n return value;\n }\n\n return String(value);\n }\n\n public getRawValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): ITableRowItemValueTypes<ITableRowItemValue> {\n const { field } = this._getColumnDefByIndex(columnIndex);\n\n if (!field) {\n return '';\n }\n\n return currentRow[field] || '';\n }\n\n public getCellColor(\n columnDefinition: TableColumnDef,\n item: ITableRowItem\n ): string {\n return TableThemeHelper.getCellColor(columnDefinition, item);\n }\n\n public getTheme(\n columnDefinition: TableColumnDef,\n item: ITableRowItem\n ): ComponentTheme {\n return (\n TableThemeHelper.getTheme(columnDefinition, item) ||\n ComponentTheme.Primary\n );\n }\n\n public isSortedColumn(columnIndex: number): boolean {\n return columnIndex === this.sortColumnIndex;\n }\n\n public isRowSelected(id: string | number): boolean {\n return this.selectedRowIds.includes(id);\n }\n\n public handleSelectAll(event: CheckboxChangeEvent): void {\n if (!this.canSelectAllRows || !this.tableData) {\n return;\n }\n\n if (event.checked) {\n this._selectedRowIds = this.tableData?.map(row => row.id) || [];\n } else {\n this._selectedRowIds = [];\n }\n\n this._selectedRowIds.sort();\n this.allSelected = this.selectedRowIds.length >= this.tableData.length;\n\n this.rowSelect.emit(this.selectedRowIds);\n }\n\n public handleSort(columnIndex: number): void {\n if (columnIndex === this.sortColumnIndex) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortColumnIndex = columnIndex;\n this.sortDirection = 'asc';\n }\n\n const field = this._getColumnDefByIndex(columnIndex).field || '';\n\n this.sortBy.emit({\n columnIndex,\n field,\n direction: this.sortDirection\n });\n }\n\n public handleRowSelect(\n event: CheckboxChangeEvent,\n rowId: number | string\n ): void {\n if (!this.canSelectRows) {\n return;\n }\n\n if (event.checked && !this._selectedRowIds.includes(rowId)) {\n this._selectedRowIds.push(rowId);\n } else if (!event.checked && this._selectedRowIds.includes(rowId)) {\n const idx = this._selectedRowIds.indexOf(rowId);\n if (idx > -1) {\n this._selectedRowIds.splice(idx, 1);\n }\n }\n\n if (this._selectedRowIds.length) {\n this._selectedRowIds.sort();\n }\n\n this.allSelected = this.selectedRowIds.length >= this.tableData.length;\n this.rowSelect.emit(this.selectedRowIds);\n }\n\n public handleCellValueChange(\n columnIndex: number,\n rowIndex: number,\n value: string | number | boolean | string[]\n ): void {\n const { field, columnType } = this._getColumnDefByIndex(columnIndex);\n let currentValue: string | number | boolean | string[] = value;\n\n if (columnType !== TableColumnType.Boolean && !Array.isArray(value)) {\n currentValue = isNaN(Number(value)) ? value : Number(value);\n }\n const item = this.tableData[rowIndex];\n\n setNestedValue(item, String(field), currentValue);\n\n this._inputChange.emit({\n columnIndex,\n item,\n value: currentValue\n });\n\n this._changeDetectorRef.detectChanges();\n }\n\n public handleLinkClick(columnIndex: number, item: ITableRowItem): void {\n this.linkClick.emit({\n item,\n columnIndex\n });\n }\n\n public handleActionClick(\n columnIndex: number,\n item: ITableRowItem,\n actionApiName: string\n ) {\n this.rowActionClick.emit({\n item,\n columnIndex,\n actionApiName\n });\n }\n\n protected columnDefIsActions(\n columnDef: TableColumnDef<any>\n ): columnDef is ITableActionsColumnDef<any> {\n return columnDef.columnType === TableColumnType.Actions;\n }\n\n private _getColumnDefByIndex(columnIndex: number): TableColumnDef {\n return this.columnDefs[columnIndex];\n }\n\n private _getValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string | string[] {\n try {\n const { field, valueGetter } = this._getColumnDefByIndex(columnIndex);\n\n const value: string | string[] = valueGetter\n ? valueGetter(currentRow)\n : (getNestedValue(currentRow, String(field), '') as string | string[]);\n\n return value || '';\n } catch (e) {\n return '';\n }\n }\n}\n","@if (tableData) {\n<table impdcTable [striped]=\"striped\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (canSelectRows) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row; let rowIndex = $index) {\n <tr>\n @if (canSelectRows) {\n <td>\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row)\">\n @if (!branded) {\n <a>\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a target=\"_blank\" [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded [attr.href]=\"getMailToValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n allowClear=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"\n handleActionClick(colIndex, row, $event)\n \"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SpinnerComponent],\n exports: [SpinnerComponent]\n})\nexport class SpinnerModule {}\n","import {\n CommonModule,\n DatePipe,\n DecimalPipe,\n PercentPipe\n} from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button';\nimport { TableComponent } from './containers/table.component';\nimport { TableDirective } from './directives';\nimport { PaginationModule } from '../pagination';\nimport { IconModule } from '../icon';\nimport { ImpdcFormsModule } from '../form-field';\nimport { SpinnerModule } from '../spinner';\nimport {\n ColumnHeadingComponent,\n RowActionsComponent,\n TableBulkActionsComponent\n} from './components';\nimport { TableInjectComponentDirective } from './directives';\nimport { BadgeModule } from '../badge';\nimport { BrandingModule } from '../branding';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n PaginationModule,\n IconModule,\n ImpdcFormsModule,\n FormsModule,\n SpinnerModule,\n BadgeModule,\n BrandingModule,\n NgbDropdownModule\n ],\n declarations: [\n TableDirective,\n TableComponent,\n ColumnHeadingComponent,\n TableInjectComponentDirective,\n TableBulkActionsComponent,\n RowActionsComponent\n ],\n exports: [\n ButtonModule,\n TableDirective,\n ColumnHeadingComponent,\n TableBulkActionsComponent,\n PaginationModule,\n TableComponent,\n IconModule,\n TableInjectComponentDirective,\n BrandingModule,\n RowActionsComponent\n ],\n providers: [DatePipe, PercentPipe, DecimalPipe]\n})\nexport class TableModule {\n constructor() {}\n}\n","import { ComponentSize } from '../../../types';\n\nexport const ModalComponentSizesArr = [\n ComponentSize.Small,\n ComponentSize.Medium,\n ComponentSize.Large,\n ComponentSize.XLarge,\n ComponentSize.Fullscreen\n];\n\nexport type ModalComponentSizes = (typeof ModalComponentSizesArr)[number];\n","export enum ModalTheme {\n Simple = 'simple',\n Working = 'working',\n Destructive = 'destructive'\n}\n\nexport const ModalThemesArr = [\n ModalTheme.Simple,\n ModalTheme.Working,\n ModalTheme.Destructive\n];\n\nexport type ModalThemes = (typeof ModalThemesArr)[number];\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport {\n Subject,\n filter,\n fromEvent,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs';\nimport { FontAwesomeIcon, FontAwesomeIconTheme } from '../../constants';\nimport { IInteractableComponent, InteractionService } from '../../services';\nimport { ComponentSize } from '../../types';\nimport { ButtonTheme } from '../button';\nimport { ModalComponentSizes, ModalTheme, ModalThemes } from './types';\n\n/**\n * The `ModalComponent` (`<impdc-modal`) displays over the content of the page when a user action is required.\n * To use, import `ModalModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ModalModule` imports and exports BackdropModule, [ButtonModule](./?path=/docs/design-components-button),\n * and [IconModule](./?path=/docs/design-components-icon).\n */\n@Component({\n selector: 'impdc-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n host: {\n class: 'impdc modal',\n '[class.fade]': 'fade',\n '[class.in]': 'fade && shown',\n '[class.show]': 'shown',\n '[class.dismissable]': 'dismissable',\n tabindex: '-1'\n }\n})\nexport class ModalComponent\n implements OnInit, OnDestroy, IInteractableComponent\n{\n private readonly _interactableId = `impdc-modal-${nanoid()}`;\n private readonly _closed$ = new Subject<void>();\n private _initialized = false;\n private _show = false;\n\n @ViewChild('dialogElement')\n private _dialogElementRef?: ElementRef<HTMLElement>;\n\n /**\n * Determines if the Modal should be shown immediately.\n */\n @Input()\n set show(show: boolean) {\n if (show) {\n this.open();\n } else {\n this.close();\n }\n }\n\n get show(): boolean {\n return this._show;\n }\n\n /**\n * The theme of the Modal. Affects the layout of the Modal as well as some colors.\n */\n @Input()\n theme: ModalThemes = ModalTheme.Simple;\n\n /**\n * The size of the Modal.\n */\n @Input()\n size: ModalComponentSizes = ComponentSize.Medium;\n\n /**\n * The Font Awesome 5 icon name. Only supported when the theme is Working or Destructive.\n */\n @Input()\n iconName?: FontAwesomeIcon;\n\n /**\n * The Font Awesome 5 icon style. Fewer icons support the Regular theme and will fallback to Solid\n * if not supported.\n */\n @Input()\n iconTheme: FontAwesomeIconTheme = 'light';\n\n /**\n * The subject text of the Modal.\n */\n @Input()\n titleText = '';\n\n /**\n * The fallback button text to accept the Modal. This is bypassed if you content-project the accept button.\n */\n @Input()\n acceptText = 'OK';\n\n /**\n * Allows the Modal to be dismissed. This is different from `accept` and `deny`. If a Modal is meant to be re-opened frequently it should be dismissable.\n */\n @Input()\n dismissable?: boolean;\n\n /**\n * Determines if the Modal should fade in/out.\n */\n @Input()\n fade = true;\n\n /**\n * Shows a backdrop behind the Modal.\n */\n @Input()\n backdrop = true;\n\n /**\n * Contains the dismiss button content projection.\n */\n @ViewChild('dismissEl', { static: false })\n dismissEl!: ElementRef;\n\n /**\n * Contains the deny button content projection.\n */\n @ViewChild('denyEl', { static: false })\n denyEl!: ElementRef;\n\n /**\n * Contains the accept button content projection.\n */\n @ViewChild('acceptEl', { static: false })\n acceptEl!: ElementRef;\n\n /**\n * Event emitted when the Modal content is dismissed.\n */\n @Output()\n dismiss = new EventEmitter<MouseEvent | Event>();\n\n /**\n * Event emitted when the Modal content is denied.\n */\n @Output()\n deny = new EventEmitter<MouseEvent | Event>();\n\n /**\n * Event emitted when the Modal content is accepted.\n */\n @Output()\n accept = new EventEmitter<MouseEvent | Event>();\n\n constructor(\n private readonly _interactionService: InteractionService,\n private readonly _elementRef: ElementRef<HTMLElement>\n ) {}\n\n get interactableId(): string {\n return this._interactableId;\n }\n\n get valid(): boolean {\n return this._initialized;\n }\n\n get shown(): boolean {\n return this.valid && this._show;\n }\n\n get showWorkingIcon(): boolean {\n return !!this.iconName && this.theme === ModalTheme.Working;\n }\n\n get showDestructiveIcon(): boolean {\n return !!this.iconName && this.theme === ModalTheme.Destructive;\n }\n\n get acceptFallbackTheme(): ButtonTheme {\n return this.theme === ModalTheme.Destructive ? 'danger' : 'primary';\n }\n\n get hideHeader(): boolean {\n return !this.titleText && !this.dismissable;\n }\n\n ngOnInit(): void {\n this._interactionService.add(this);\n\n if (this.dismissable === undefined && this.theme === ModalTheme.Working) {\n this.dismissable = true;\n }\n\n if (this.iconName === undefined && this.theme === ModalTheme.Destructive) {\n this.iconName = 'exclamation-triangle';\n }\n\n this._initialized = true;\n }\n\n ngOnDestroy(): void {\n this._interactionService.remove(this.interactableId);\n this._disableEventHandling();\n }\n\n protected handleDismiss(event: MouseEvent | Event): void {\n if (\n !this.dismissable ||\n !!this.dismissEl?.nativeElement?.firstChild?.disabled\n ) {\n return;\n }\n this.close();\n this.dismiss.emit(event);\n }\n\n protected handleDeny(event: MouseEvent | Event): void {\n if (!!this.denyEl?.nativeElement?.firstChild?.disabled) {\n return;\n }\n this.close();\n this.deny.emit(event);\n }\n\n protected handleAccept(event: MouseEvent | Event): void {\n if (!!this.acceptEl?.nativeElement?.firstChild?.disabled) {\n return;\n }\n this.close();\n this.accept.emit(event);\n }\n\n /**\n * Opens/shows the modal. Can be used programmatically.\n */\n open(): void {\n if (this.backdrop) {\n this._interactionService.queueBackdrop(this.interactableId);\n }\n this._show = true;\n this._setupEventHandling();\n }\n\n /**\n * Closes/hides the modal. Can be used programmatically.\n */\n close(): void {\n this._show = false;\n this._interactionService.dequeueBackdrop(this.interactableId);\n this._disableEventHandling();\n }\n\n private _setupEventHandling(): void {\n const { nativeElement } = this._elementRef;\n\n fromEvent<KeyboardEvent>(nativeElement, 'keydown')\n .pipe(\n takeUntil(this._closed$),\n filter(evt => evt.key === 'Escape')\n )\n .subscribe(evt => {\n if (this.dismissable && !evt.defaultPrevented) {\n Promise.resolve().then(() => {\n this.handleDismiss(evt);\n evt.stopPropagation();\n });\n }\n });\n\n fromEvent<KeyboardEvent>(nativeElement, 'keydown')\n .pipe(\n takeUntil(this._closed$),\n filter(evt => evt.key === 'Enter')\n )\n .subscribe(evt => {\n if (!evt.defaultPrevented) {\n Promise.resolve().then(() => {\n this.handleAccept(evt);\n evt.stopPropagation();\n });\n }\n });\n\n let preventClose = false;\n if (this._dialogElementRef) {\n // listen to 'mousedown' and 'mouseup' to prevent dismissal when mouse is pressed inside\n // of the dialog window and then released outside\n fromEvent<MouseEvent>(this._dialogElementRef.nativeElement, 'mousedown')\n .pipe(\n takeUntil(this._closed$),\n tap(() => {\n preventClose = false;\n }),\n switchMap(() =>\n fromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(\n takeUntil(this._closed$),\n take(1)\n )\n ),\n filter(({ target }) => nativeElement === target)\n )\n .subscribe(() => {\n preventClose = true;\n });\n }\n\n // listen to 'click' events to dismiss on component/container click, except when\n // clicking inside the dialog window or when prevented by the above 'mousedown'\n // and 'mouseup' handlers\n fromEvent<MouseEvent>(nativeElement, 'click')\n .pipe(takeUntil(this._closed$))\n .subscribe(evt => {\n if (nativeElement === evt.target && !preventClose) {\n Promise.resolve().then(() => {\n this.handleDismiss(evt);\n evt.stopPropagation();\n });\n }\n\n preventClose = false;\n });\n }\n\n private _disableEventHandling(): void {\n this._closed$.next();\n }\n}\n","<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { IBackdropComponent, InteractionService } from '../../services';\nimport { Subject, takeUntil } from 'rxjs';\n\n/**\n * The `BackdropComponent` (`<impdc-backdrop`) is a component to mask the background when an interaction is taking place.\n * This component needs to be added to the body of the host application if a backdrop is desired.\n * To use, import `BackdropModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-backdrop',\n templateUrl: './backdrop.component.html',\n styleUrls: ['./backdrop.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BackdropComponent\n implements OnInit, OnDestroy, IBackdropComponent\n{\n private readonly _ngDestroy = new Subject<void>();\n private _valid = true;\n private _showBackdrop = false;\n\n constructor(\n private readonly _interactionService: InteractionService,\n private readonly _changeDetector: ChangeDetectorRef\n ) {}\n\n get valid(): boolean {\n return this._valid;\n }\n\n get show(): boolean {\n return this.valid && this._showBackdrop;\n }\n\n ngOnInit(): void {\n this._interactionService.registerBackdrop(this);\n this._interactionService.showBackdrop$\n .pipe(takeUntil(this._ngDestroy))\n .subscribe(showBackdrop => {\n this._showBackdrop = showBackdrop;\n this._changeDetector.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this._interactionService.unregisterBackdrop(this);\n this._ngDestroy.next();\n this._ngDestroy.complete();\n }\n\n invalidate(): void {\n this._valid = false;\n }\n\n validate(): void {\n this._valid = true;\n }\n}\n","<div *ngIf=\"valid\" class=\"impdc modal-backdrop fade\" [class.show]=\"show\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BackdropComponent } from './backdrop.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [BackdropComponent],\n exports: [BackdropComponent]\n})\nexport class BackdropModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BackdropModule } from '../backdrop';\nimport { ButtonModule } from '../button';\nimport { IconModule } from '../icon';\nimport { ModalComponent } from './modal.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n BackdropModule,\n ButtonModule,\n IconModule\n ],\n declarations: [ModalComponent],\n exports: [BackdropModule, ButtonModule, IconModule, ModalComponent]\n})\nexport class ModalModule {\n constructor() {}\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * The `ProgressBarComponent` (`<impdc-progress-bar`) is a display-only slider to show progress.\n * To use, import `ProgressBarModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss']\n})\nexport class ProgressBarComponent {\n /**\n * The left/subject text of the Progress Bar.\n */\n @Input()\n public labelText = '';\n\n /**\n * The right/status text of the Progress Bar.\n */\n @Input()\n public statusText = '';\n\n /**\n * The current value of the Progress Bar represented as a number between 0 and 100.\n */\n @Input()\n public progressPercentage = 0;\n\n constructor() {}\n}\n","<div class=\"progress-container\">\n <div class=\"progress-text\">\n <div class=\"text-left\">\n {{ labelText }}\n </div>\n <div class=\"text-right\">\n {{ statusText }}\n </div>\n </div>\n <div class=\"bar-bg\">\n <div\n class=\"bar\"\n role=\"progressbar\"\n [style.width.%]=\"progressPercentage\"\n [attr.aria-valuenow]=\"progressPercentage\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ProgressBarComponent],\n exports: [ProgressBarComponent]\n})\nexport class ProgressBarModule {}\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'impdc-dropdown-item',\n templateUrl: './dropdown-item.component.html'\n})\nexport class DropdownItemComponent {\n /**\n * Used in DropdownComponent to determine if the projected content should be rendered or it's a divider.\n */\n @Input()\n divider = false;\n\n @ViewChild(TemplateRef) template!: TemplateRef<never>;\n}\n","<ng-template>\n <ng-content></ng-content>\n</ng-template>\n","import {\n Component,\n Input,\n HostListener,\n Output,\n EventEmitter,\n HostBinding,\n QueryList,\n ContentChildren,\n OnInit,\n OnDestroy\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport { IInteractableComponent, InteractionService } from '../../services';\nimport { ButtonTheme } from '../button';\nimport { DropdownItemComponent } from './components';\nimport { DropdownPosition } from './types';\n\n/**\n * The `DropdownComponent` (`<impdc-dropdown` or `<any impdc-dropdown`) contains a button that toggles a dropdown where a user\n * can select various actions. Items within must be wrapped with `DropdownItemComponent` (`<impdc-dropdown-item`).\n * To use, import `DropdownModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `DropdownModule` imports and exports [ButtonModule](./?path=/docs/design-components-button).\n */\n@Component({\n selector: 'impdc-dropdown, [impdc-dropdown]',\n exportAs: 'impdcDropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent\n implements OnInit, OnDestroy, IInteractableComponent\n{\n private readonly _interactableId = `impdc-dropdown-${nanoid()}`;\n private _initialized = false;\n\n /**\n * Whether or not the dropdown list is showing.\n */\n @Input()\n show = false;\n\n /**\n * The content projected `DropdownItemComponent` children.\n */\n @ContentChildren(DropdownItemComponent)\n items!: QueryList<DropdownItemComponent>;\n\n /**\n * The theme of the button affecting text, icons, backgrounds, and borders.\n */\n @Input()\n buttonTheme: ButtonTheme = 'primary';\n\n /**\n * The text of the button.\n */\n @Input()\n buttonText = '';\n\n // we don't want headerText to be available right now\n // @Input()\n //headerText: string = '';\n\n /**\n * Where the list shows relative to the button when it is showing.\n */\n @Input()\n position: DropdownPosition = 'down';\n\n /**\n * If true, the icon is split from the button and only clicking the icon triggers the list showing/hiding.\n */\n @Input()\n split = false;\n\n /**\n * Emitted when the dropdown is toggled.\n */\n @Output()\n toggle = new EventEmitter<boolean>();\n\n /**\n * Emitted when the button is clicked.\n */\n @Output()\n public buttonClick = new EventEmitter<MouseEvent>();\n\n @HostBinding('class.btn-group') private classBtnGroup = true;\n\n @HostBinding('class.dropdown') private get classDropdown() {\n return this.position === 'down';\n }\n\n @HostBinding('class.dropend') private get classDropend() {\n return this.position === 'right';\n }\n\n @HostBinding('class.dropstart') private get classDropstart() {\n return this.position === 'left';\n }\n\n @HostBinding('class.dropup') private get classDropup() {\n return this.position === 'up';\n }\n\n @HostListener('click')\n handleHostClick($event: MouseEvent): void {\n $event.stopPropagation();\n }\n\n @HostListener('document:click')\n handleDocumentClick(): void {\n if (this.show) {\n this.hide();\n }\n }\n\n constructor(private _interactionService: InteractionService) {}\n\n get interactableId(): string {\n return this._interactableId;\n }\n\n get valid(): boolean {\n return this._initialized;\n }\n\n get shown(): boolean {\n return this.valid && this.show;\n }\n\n ngOnInit(): void {\n this._interactionService.add(this);\n }\n\n ngOnDestroy(): void {\n this._interactionService.remove(this.interactableId);\n }\n\n handleToggle(): void {\n this.show = this._interactionService.toggle(this);\n this.toggle.emit(this.show);\n }\n\n handleButtonClick(event: MouseEvent): void {\n this.buttonClick.emit(event);\n }\n\n hide(): void {\n this.show = false;\n this.toggle.emit(this.show);\n }\n}\n","<ng-container *ngIf=\"!linkEl.children.length\">\n <button\n *ngIf=\"!split; else splitTemplate\"\n impdcButton\n [theme]=\"buttonTheme\"\n [text]=\"buttonText\"\n class=\"dropdown-toggle\"\n [class.show]=\"show\"\n data-bs-toggle=\"dropdown\"\n [attr.aria-expanded]=\"show\"\n (click)=\"handleToggle(); $event.stopPropagation()\"></button>\n\n <ng-template #splitTemplate>\n <button\n impdcButton\n [theme]=\"buttonTheme\"\n [text]=\"buttonText\"\n (click)=\"handleButtonClick($event)\"></button>\n <button\n impdcButton\n [theme]=\"buttonTheme\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [class.show]=\"show\"\n [attr.aria-expanded]=\"show\"\n (click)=\"handleToggle(); $event.stopPropagation()\">\n <span class=\"visually-hidden\">Toggle Dropdown</span>\n </button>\n </ng-template>\n</ng-container>\n\n<ul\n class=\"dropdown-menu\"\n [class.dropdown-menu-end]=\"false\"\n [class.show]=\"show\"\n (click)=\"$event.stopPropagation()\">\n <!-- <li *ngIf=\"headerText\">\n <h6 class=\"dropdown-header\">{{ headerText }}</h6>\n </li> -->\n <li *ngFor=\"let item of items\">\n <span *ngIf=\"!item.divider; else dividerTemplate\" class=\"dropdown-item\">\n <ng-content *ngTemplateOutlet=\"item.template\"></ng-content>\n </span>\n </li>\n</ul>\n\n<ng-template #dividerTemplate>\n <hr class=\"dropdown-divider\" />\n</ng-template>\n\n<a\n #linkEl\n class=\"impdc-dropdown-link\"\n [class.hide]=\"!linkEl.children.length\"\n [class.impdc-dropdown-open]=\"show\"\n data-bs-toggle=\"dropdown\"\n [attr.aria-expanded]=\"show\"\n (click)=\"handleToggle(); $event.stopPropagation()\">\n <ng-content select=\"[toggle]\"></ng-content>\n</a>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button';\nimport { DropdownComponent } from './dropdown.component';\nimport { DropdownItemComponent } from './components';\n\n@NgModule({\n imports: [CommonModule, ButtonModule],\n declarations: [DropdownItemComponent, DropdownComponent],\n exports: [ButtonModule, DropdownItemComponent, DropdownComponent]\n})\nexport class DropdownModule {\n constructor() {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AlertTheme } from './theme';\n\n/**\n * The `AlertComponent` (`<impdc-alert` or `<any impdc-alert`) is intended to show information or feedback inline with content.\n * To use, import `AlertModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-alert, [impdc-alert]',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n /**\n * The theme of the Alert affecting text, icons, backgrounds, and borders.\n */\n @Input()\n theme: AlertTheme = 'warning';\n\n /**\n * Determines if the Alert should be shown immediately.\n */\n @Input() show = false;\n\n /**\n * The heading text of the Alert. Content can also be projected in the heading area using a `heading` directive.\n */\n @Input() headingText = '';\n\n /**\n * The body text of the Alert. Content can also be projected into the body area using default projection.\n */\n @Input() bodyText = '';\n\n /**\n * By default, an Alert is a \"floating\" notification. When set to \"inline\", these \"floating\" styles are replaced.\n */\n @Input() inline = false;\n\n /**\n * Removes the Alert icon provided by the theme or projected into the icon area using the `icon` directive.\n */\n @Input() hideIcon = false;\n\n /**\n * Allows the Alert to be dismissed.\n */\n @Input() dismissible = true;\n\n /**\n * Event emitted when the Alert is dismissed.\n */\n @Output()\n dismiss = new EventEmitter<void>();\n\n get componentClasses(): string {\n const themeClass =\n this.theme === 'warning'\n ? 'alert-warning'\n : this.theme === 'info'\n ? 'alert-info'\n : this.theme === 'danger'\n ? 'alert-danger'\n : this.theme === 'success'\n ? 'alert-success'\n : '';\n const inlineClass = this.inline ? ' alert-inline' : '';\n const dismissibleClass = this.dismissible ? ' alert-dismissible' : '';\n return themeClass + inlineClass + dismissibleClass;\n }\n\n get themeIconName(): string {\n return this.theme === 'warning'\n ? 'exclamation-circle'\n : this.theme === 'info'\n ? 'info-circle'\n : this.theme === 'danger'\n ? 'times-circle'\n : this.theme === 'success'\n ? 'check-circle'\n : '';\n }\n\n closeAlert(): void {\n if (!this.dismissible) {\n return;\n }\n this.show = false;\n this.dismiss.emit();\n }\n}\n","<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertComponent } from './alert.component';\nimport { IconModule } from '../icon';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [AlertComponent],\n exports: [IconModule, AlertComponent]\n})\nexport class AlertModule {}\n","import {\n Directive,\n Output,\n EventEmitter,\n HostBinding,\n HostListener\n} from '@angular/core';\n\n@Directive({\n selector: '[impdcFileDrop]'\n})\nexport class FileDropDirective {\n @HostBinding('class.file-hover')\n fileHovering = false;\n\n @Output() filesDropped = new EventEmitter<FileList>();\n\n @HostListener('dragover', ['$event']) onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.fileHovering = true;\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.fileHovering = false;\n }\n\n @HostListener('drop', ['$event']) public OnDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.fileHovering = false;\n let fileList = event.dataTransfer?.files;\n if (fileList) {\n this.filesDropped.emit(fileList);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'humanReadableByteSize'\n})\nexport class HumanReadableByteSizePipe implements PipeTransform {\n transform(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes}B`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const num = bytes / Math.pow(1024, i);\n const round = Math.round(num);\n const display =\n round < 10 ? num.toFixed(2) : round < 100 ? num.toFixed(1) : round;\n\n return `${display}${'KMGTPEZY'[i - 1]}B`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport { BooleanInput, coerceBooleanPropertyValue } from '../../utilities';\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n IMPDC_FORM_ROOT,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../form-field';\nimport { FileDropDirective } from './directives';\n\nconst _FileUploadComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * The `FileUploadComponent` (`<impdc-file-upload` or `<any impdc-file-upload`) is a file selector that supports drag and drop.\n * To use, import `FileUploadModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-file-upload, [impdc-file-upload]',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-file-upload',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.impdc-file-upload--required]': 'required',\n '[class.impdc-file-upload--disabled]': 'disabled',\n '[class.impdc-file-upload--invalid]': 'errorState',\n '[class.impdc-file-upload--multiple]': 'multiple',\n '[class.impdc-file-upload--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: FileUploadComponent\n }\n ]\n})\nexport class FileUploadComponent\n extends _FileUploadComponentBase\n implements\n ControlValueAccessor,\n Validator,\n ImpdcFormFieldControl<File | File[]>,\n ICanUpdateErrorState,\n IHasErrorState,\n DoCheck,\n OnDestroy\n{\n @ViewChild(FileDropDirective, { read: ElementRef })\n protected fileDropElementRef!: ElementRef<HTMLElement>;\n\n /** @ignore */\n @ViewChild('fileUploadInputElt', { static: false })\n public fileUploadInputEltRef!: ElementRef<HTMLInputElement>;\n\n /**\n * Whether the control supports uploading multiple files.\n */\n @Input()\n multiple = false;\n\n /**\n * The instructional text to display in the file upload dropzone.\n */\n @Input()\n uploadText = 'Drag and drop files here or click to upload';\n\n /**\n * The comma-delimited list of file types that are accepted by the control.\n */\n @Input()\n accept = '';\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n public get canUpload(): boolean {\n return this.multiple || this._value.length === 0;\n }\n\n private get acceptTypes(): string[] {\n if (!this.accept || !this.accept.length) {\n return [];\n }\n\n return this.accept\n .split(',')\n .map(a => a.trim())\n .filter(a => !!a);\n }\n\n public get empty(): boolean {\n return this._value.length === 0;\n }\n\n protected get filesForDisplay(): readonly File[] {\n return this._value || [];\n }\n\n private _cvaOnChange: Function | undefined;\n private _cvaOnTouched: Function | undefined;\n private _uid = `impdc-file-upload-${nanoid()}`;\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl | null\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.control?.addValidators(() => {\n return this.validate();\n });\n }\n\n this.id = this.id;\n }\n\n /** @ignore */\n public handleChange(event: Event) {\n const fileList: FileList | null = ((event.target as HTMLInputElement) || {})\n .files;\n\n if (!fileList) {\n return;\n }\n\n this._mergeNewFilesWithExistingFiles(fileList);\n }\n\n /** @ignore */\n public handleDrop(event: FileList) {\n if (this.disabled || !event) {\n return;\n }\n\n this._mergeNewFilesWithExistingFiles(event);\n }\n\n /** @ignore */\n public removeFile(fileIndex: number): void {\n const newFilesArr = [...this._value];\n newFilesArr.splice(fileIndex, 1);\n\n this._updateValueFromInteraction(newFilesArr);\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this.fileDropElementRef.nativeElement.focus(options);\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n\n /**\n * The file(s) currently uploaded into the control. Returns `File | null` when `multiple` is `false`,\n * and `File[]` when `multiple` is `true`.\n */\n @Input()\n public get value(): File | File[] | null {\n return this.multiple ? [...this._value] : this._value[0];\n }\n public set value(newValue: File | File[] | null) {\n if (newValue !== this._value) {\n if (Array.isArray(newValue)) {\n this._value = newValue ? [...newValue] : [];\n } else {\n this._value = newValue ? [newValue] : [];\n }\n }\n\n const fileList = this._getFileList(this._value);\n\n if (\n this.fileUploadInputEltRef &&\n this.fileUploadInputEltRef.nativeElement\n ) {\n this.fileUploadInputEltRef.nativeElement.files = fileList;\n }\n }\n private _value: readonly File[] = [];\n\n /** @ignore */\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n public readonly controlType: string = 'impdc-file-upload';\n public readonly supportsAffixes: boolean = false;\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(value: File[]): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: Function): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: Function): void {\n this._cvaOnTouched = fn;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /* Validator */\n\n /**\n * @ignore\n */\n public validate(): ValidationErrors | null {\n return !this.disabled && this.required && this._value.length === 0\n ? { required: true }\n : null;\n }\n\n /* Internals */\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _onBlur(): void {\n this._focused = false;\n\n if (!this.disabled) {\n this._cvaOnTouched && this._cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _updateValueFromInteraction(newValue: File[]): void {\n this.value = newValue;\n\n this._cvaOnChange && this._cvaOnChange(this.value);\n this._cvaOnTouched && this._cvaOnTouched();\n this.stateChanges.next();\n }\n\n private _mergeNewFilesWithExistingFiles(fileList: FileList | null) {\n if (!fileList) {\n return;\n }\n\n if (this._value && this._value.length == 1 && !this.multiple) {\n return;\n }\n\n const tempFiles = [...this._value];\n\n Array.from(fileList).forEach(newFile => {\n if (!this.multiple && tempFiles.length > 0) {\n return;\n }\n const existingFile = tempFiles.find(\n existing =>\n existing.name === newFile.name &&\n existing.lastModified === newFile.lastModified &&\n existing.size === newFile.size\n );\n\n if (existingFile) {\n return;\n }\n\n if (this._acceptedFileType(newFile.type, newFile.name)) {\n tempFiles.push(newFile);\n }\n });\n\n this._updateValueFromInteraction(tempFiles);\n }\n\n private _getFileList(files: readonly File[]): FileList {\n const dataTransfer = new DataTransfer();\n\n files.forEach(file => {\n dataTransfer.items.add(file);\n });\n\n return dataTransfer.files;\n }\n\n private _getExtensions(fileName: string): string[] {\n const nameSegments = fileName.split('.');\n let extensions: string[] = [];\n\n if (nameSegments.length < 2) {\n return extensions;\n }\n\n const extension = `.${nameSegments.slice(1).join('.')}`;\n extensions.push(extension);\n\n if (nameSegments.length === 2) {\n return extensions;\n }\n\n const sub = `.${nameSegments.slice(2).join('.')}`;\n const subExtensions = this._getExtensions(sub);\n extensions = [...extensions, ...subExtensions];\n\n return extensions;\n }\n\n private _acceptedFileType(type: string, fileName: string): boolean {\n if (!this.acceptTypes || this.acceptTypes.length === 0) {\n return true;\n }\n\n const acceptedByType = this.acceptTypes.includes(type);\n\n if (acceptedByType) {\n return true;\n }\n\n const fileExtensions = this._getExtensions(fileName);\n\n if (!fileExtensions || fileExtensions.length === 0) {\n return false;\n }\n\n const acceptedByExtension = this.acceptTypes.some(type =>\n fileExtensions.includes(type)\n );\n\n return acceptedByExtension;\n }\n}\n","<div class=\"impdc-file-upload-container\">\n <div\n class=\"impdc-file-upload-dropzone\"\n [ngClass]=\"{\n 'hide-upload': !canUpload\n }\"\n impdcFileDrop\n (filesDropped)=\"handleDrop($event)\"\n (keyup.enter)=\"fileUploadInputElt.click()\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n [tabindex]=\"disabled ? '-1' : '0'\">\n <input\n class=\"file-upload-input\"\n type=\"file\"\n #fileUploadInputElt\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n (change)=\"handleChange($event)\"\n tabindex=\"-1\" />\n <span\n impdc-icon\n theme=\"regular\"\n name=\"cloud-upload-alt\"\n class=\"upload-icon\"></span>\n <p class=\"upload-text\">{{ uploadText }}</p>\n </div>\n <div class=\"current-files\" *ngIf=\"filesForDisplay.length\">\n <ng-container *ngFor=\"let file of filesForDisplay; let idx = index\">\n <div class=\"current-file\">\n <div class=\"current-file-details\">\n <div class=\"name\">{{ file.name }}</div>\n <div class=\"size\">{{ file.size | humanReadableByteSize }}</div>\n </div>\n <div *ngIf=\"!disabled\" class=\"current-file-actions\">\n <button\n impdcButton\n theme=\"close\"\n tabindex=\"0\"\n (keyup.enter)=\"removeFile(idx)\"\n (click)=\"removeFile(idx)\"></button>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FileDropDirective } from './directives';\nimport { FileUploadComponent } from './file-upload.component';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from '../button';\nimport { IconModule } from '../icon';\nimport { HumanReadableByteSizePipe } from './pipes';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ButtonModule, IconModule],\n declarations: [\n FileDropDirective,\n FileUploadComponent,\n HumanReadableByteSizePipe\n ],\n exports: [IconModule, FileDropDirective, FileUploadComponent]\n})\nexport class FileUploadModule {\n constructor() {}\n}\n","import { Component, Input } from '@angular/core';\nimport { ComponentSize, PrimaryComponentSizes } from '../../types';\n\n/**\n * The `AvatarComponent` (`<impdc-avatar`) is a rounded user avatar/icon with an optional status color.\n * For a horizontal container, see [AvatarGroupComponent](./?path=/docs/design-components-avatar--group).\n * To use, import `AvatarModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss']\n})\nexport class AvatarComponent {\n /**\n * The image source url to display as the Avatar's background.\n */\n @Input() imgSrc = '';\n\n /**\n * Initials to display if an `imgSrc` is not available.\n */\n @Input() initials = '';\n\n /**\n * A status to display as part of the Avatar.\n */\n @Input() status: '' | 'active' | 'inactive' | 'busy' = '';\n\n /**\n * The size of the Avatar.\n */\n @Input() size: PrimaryComponentSizes = ComponentSize.Medium;\n\n get avatarHasImg(): boolean {\n return this.imgSrc && this.imgSrc.length > 0 ? true : false;\n }\n}\n","<div class=\"avatar-container\">\n <span class=\"avatar-status\" *ngIf=\"status\" [ngClass]=\"[size, status]\"></span>\n\n <img\n class=\"avatar\"\n *ngIf=\"avatarHasImg\"\n [attr.src]=\"imgSrc\"\n [ngClass]=\"size\" />\n <div\n class=\"avatar initials\"\n *ngIf=\"!avatarHasImg && initials\"\n [ngClass]=\"size\">\n {{ initials.toUpperCase() }}\n </div>\n\n <div\n class=\"avatar fallback\"\n *ngIf=\"!avatarHasImg && !initials\"\n [ngClass]=\"size\">\n <span impdc-icon name=\"user\"></span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '../icon';\nimport { AvatarComponent } from './avatar.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [AvatarComponent],\n exports: [IconModule, AvatarComponent]\n})\nexport class AvatarModule {}\n","import { Component } from '@angular/core';\n\n/**\n * The `AvatarGroupComponent` (`<impdc-avatar-group`) is a horizontal container for [AvatarComponent](./?path=/docs/design-components-avatar--single).\n * To use, import `AvatarGroupModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `AvatarGroupModule` also imports and exports [AvatarModule](./?path=/docs/design-components-avatar--single)\n */\n@Component({\n selector: 'impdc-avatar-group',\n templateUrl: './avatar-group.component.html',\n styleUrls: ['./avatar-group.component.scss']\n})\nexport class AvatarGroupComponent {}\n","<div class=\"avatar-group\">\n <ng-content select=\"impdc-avatar\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarGroupComponent } from './avatar-group.component';\nimport { AvatarModule } from '../avatar/avatar.module';\n\n@NgModule({\n declarations: [AvatarGroupComponent],\n imports: [CommonModule, AvatarModule],\n exports: [AvatarModule, AvatarGroupComponent]\n})\nexport class AvatarGroupModule {}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'impdc-breadcrumb-item',\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n `\n})\nexport class BreadcrumbItemComponent {\n @ViewChild('content', { read: TemplateRef })\n public contentTemplate!: TemplateRef<never>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n HostBinding,\n Input,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\n\n/**\n * The `BreadcrumbComponent` (`<impdc-breadcrumb` or `<div impdc-breadcrumb`) is for historical navigation so the user can get back\n * to a previous page. Items within must be wrapped with `BreadcrumbItemComponent` (`<impdc-breadcrumb-item`).\n * To use, import `BreadcrumbModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-breadcrumb, div[impdc-breadcrumb]',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent implements AfterViewInit {\n /**\n * Sets the `aria-label` attribute for the Breadcrumb's `nav` element for accessibility.\n */\n @Input()\n public label = '';\n\n @HostBinding('class.impdc-breadcrumb') private impdcBreadcrumb = true;\n\n @ContentChildren(BreadcrumbItemComponent)\n protected breadcrumbItems!: QueryList<BreadcrumbItemComponent>;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n this._changeDetectorRef.detectChanges();\n }\n}\n","<nav class=\"impdc-breadcrumb\" [attr.aria-label]=\"label || 'breadcrumb'\">\n <ol>\n <li\n *ngFor=\"let breadcrumbItem of breadcrumbItems; last as isLast\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <ng-container\n [ngTemplateOutlet]=\"breadcrumbItem.contentTemplate\"></ng-container>\n </li>\n </ol>\n</nav>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n declarations: [BreadcrumbItemComponent, BreadcrumbComponent],\n imports: [CommonModule],\n exports: [BreadcrumbItemComponent, BreadcrumbComponent]\n})\nexport class BreadcrumbModule {}\n","import { Injectable } from '@angular/core';\nimport { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\n\nexport function IMPDC_DATETIME_PICKER_FORMATTER_FACTORY() {\n return new ImpdcDatetimeISOFormatter();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: IMPDC_DATETIME_PICKER_FORMATTER_FACTORY\n})\nexport abstract class ImpdcDatetimeFormatter {\n abstract format(\n date: NgbDateStruct,\n time?:\n | NgbTimeStruct\n | null\n | { value: NgbTimeStruct | null; withSeconds: boolean }\n ): string;\n}\n\n@Injectable()\nexport class ImpdcDatetimeISOFormatter extends ImpdcDatetimeFormatter {\n public format(\n date: NgbDateStruct,\n time?:\n | NgbTimeStruct\n | null\n | { value: NgbTimeStruct | null; withSeconds: boolean }\n ): string {\n let result = `${date.year}-${this._padNumberString(\n date.month\n )}-${this._padNumberString(date.day)}`;\n\n if (!!time) {\n let timeValue =\n 'withSeconds' in time ? time : { value: time, withSeconds: true };\n\n if (!!timeValue.value) {\n result += ` ${this._padNumberString(\n timeValue.value.hour\n )}:${this._padNumberString(timeValue.value.minute)}`;\n\n if (timeValue.withSeconds) {\n result += `:${this._padNumberString(timeValue.value.second)}`;\n }\n }\n }\n\n return result;\n }\n\n private _padNumberString(value: number): string {\n return `0${value}`.slice(-2);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n NgbDate,\n NgbDatepicker,\n NgbDatepickerI18n\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ImpdcFormsModule } from '../../../form-field';\nimport { IconModule } from '../../../icon';\n\ntype NgbDatepickerViewModel = NgbDatepicker['model'];\ntype NgbNavigationEvent = Parameters<NgbDatepicker['onNavigateEvent']>[0];\n\n@Component({\n selector: 'impdc-datepicker-nav',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ImpdcFormsModule, IconModule],\n templateUrl: './datepicker-nav.component.html',\n styleUrls: ['./datepicker-nav.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class DatepickerNavComponent implements OnInit, AfterViewChecked {\n private readonly _cd = inject(ChangeDetectorRef);\n private readonly _destroyRef$ = inject(DestroyRef);\n protected readonly monthControl = new FormControl<number | null>(null);\n protected readonly yearControl = new FormControl<number | null>(null);\n protected readonly datepickerI18n = inject(NgbDatepickerI18n);\n\n @Input({ required: true })\n public date!: NgbDate;\n\n @Input({ required: true })\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n this._disabled = value;\n\n if (value) {\n this.monthControl.disable();\n this.yearControl.disable();\n } else {\n this.monthControl.enable();\n this.yearControl.enable();\n }\n }\n private _disabled = false;\n\n @Input({ required: true })\n public prevDisabled: boolean = false;\n\n @Input({ required: true })\n public nextDisabled: boolean = false;\n\n @Input({ required: true })\n public selectBoxes!: NgbDatepickerViewModel['selectBoxes'];\n\n @Output() navigate = new EventEmitter<NgbNavigationEvent>();\n @Output() selected = new EventEmitter<NgbDate>();\n\n public onClickGoPrevious(event: MouseEvent) {\n (event.currentTarget as HTMLElement).focus();\n this.navigate.emit(0);\n }\n\n public onClickGoNext(event: MouseEvent) {\n (event.currentTarget as HTMLElement).focus();\n this.navigate.emit(1);\n }\n\n public changeMonth(month: number) {\n this.selected.emit(new NgbDate(this.date.year, month, 1));\n }\n\n public changeYear(year: number) {\n this.selected.emit(new NgbDate(year, this.date.month, 1));\n }\n\n public ngOnInit() {\n this.monthControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef$))\n .subscribe(month => !!month && this.changeMonth(month));\n\n this.yearControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef$))\n .subscribe(year => !!year && this.changeYear(year));\n\n this._applyDateToControls(this.date);\n }\n\n public ngAfterViewChecked() {\n this._applyDateToControls(this.date);\n }\n\n private _applyDateToControls(dateValue?: NgbDate): void {\n if (dateValue) {\n if (this.date.month !== this.monthControl.value) {\n this.monthControl.setValue(this.date.month);\n this._cd.markForCheck();\n }\n\n if (this.date.year !== this.yearControl.value) {\n this.yearControl.setValue(this.date.year);\n this._cd.markForCheck();\n }\n }\n }\n}\n","<div class=\"d-flex justify-content-between align-items-center\">\n <button\n class=\"impdc-datepicker-nav-prev btn btn-link me-auto\"\n (click)=\"onClickGoPrevious($event)\"\n [disabled]=\"disabled || prevDisabled\">\n <impdc-icon name=\"chevron-left\" size=\"12\"></impdc-icon>\n </button>\n\n <div class=\"d-flex\">\n <impdc-select\n [formControl]=\"monthControl\"\n [dropdownContainer]=\"null\"\n allowClear=\"false\"\n class=\"impdc-datepicker-nav-month no-caret\">\n <impdc-select-option\n *ngFor=\"let month of selectBoxes.months\"\n [value]=\"month\"\n [label]=\"datepickerI18n.getMonthFullName(month, date.year)\" />\n </impdc-select>\n <impdc-select\n [formControl]=\"yearControl\"\n [dropdownContainer]=\"null\"\n allowClear=\"false\"\n class=\"impdc-datepicker-nav-year no-caret\">\n @for (year of selectBoxes.years; track year) {\n <impdc-select-option\n [value]=\"year\"\n [label]=\"datepickerI18n.getYearNumerals(year)\" />\n }\n </impdc-select>\n </div>\n\n <button\n class=\"impdc-datepicker-nav-next btn btn-link ms-auto\"\n (click)=\"onClickGoNext($event)\"\n [disabled]=\"disabled || nextDisabled\">\n <impdc-icon name=\"chevron-right\" size=\"12\"></impdc-icon>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\nimport {\n NgbCalendar,\n NgbDate,\n NgbDatepickerMonth\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ContentTemplateContext } from '@ng-bootstrap/ng-bootstrap/datepicker/datepicker-content-template-context';\nimport { DayTemplateContext } from '@ng-bootstrap/ng-bootstrap/datepicker/datepicker-day-template-context';\n\nimport { DatepickerNavComponent } from '../datepicker-nav';\n\n@Component({\n selector: 'impdc-datepicker-template-host',\n standalone: true,\n imports: [NgbDatepickerMonth, DatepickerNavComponent],\n templateUrl: './datepicker-template-host.component.html',\n styleUrls: ['./datepicker-template-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerTemplateHostComponent {\n private readonly _calendar = inject(NgbCalendar);\n\n public readonly isWeekend = (date: NgbDate) =>\n this._calendar.getWeekday(date) >= 6;\n\n public readonly isToday = (date: NgbDate) =>\n this._calendar.getToday().equals(date);\n\n @ViewChild('dayTemplate', {\n read: TemplateRef<DayTemplateContext>,\n static: true\n })\n public dayTemplateRef!: TemplateRef<DayTemplateContext>;\n\n @ViewChild('contentTemplate', {\n read: TemplateRef<ContentTemplateContext>,\n static: true\n })\n public contentTemplateRef!: TemplateRef<ContentTemplateContext>;\n}\n","<ng-template\n #dayTemplate\n let-date\n let-currentMonth=\"currentMonth\"\n let-selected=\"selected\"\n let-disabled=\"disabled\"\n let-focused=\"focused\">\n <span\n class=\"impdc-datepicker-day\"\n [class.impdc-datepicker-day--today]=\"isToday(date)\"\n [class.impdc-datepicker-day--weekend]=\"isWeekend(date)\"\n [class.impdc-datepicker-day--focused]=\"focused\"\n [class.impdc-datepicker-day--selected]=\"selected\"\n [class.impdc-datepicker-day--other-month]=\"date.month !== currentMonth\"\n [class.impdc-datepicker-day--disabled]=\"disabled\">\n {{ date.day }}\n </span>\n</ng-template>\n\n<ng-template #contentTemplate let-dp>\n <div class=\"impdc-datepicker-content p-4\">\n <impdc-datepicker-nav\n [date]=\"dp.model.firstDate!\"\n [disabled]=\"dp.model.disabled\"\n [prevDisabled]=\"dp.model.prevDisabled\"\n [nextDisabled]=\"dp.model.nextDisabled\"\n [selectBoxes]=\"dp.model.selectBoxes\"\n (navigate)=\"dp.onNavigateEvent($event)\"\n (selected)=\"dp.onNavigateDateSelect($event)\"></impdc-datepicker-nav>\n <div class=\"custom-month-grid\">\n @for (month of dp.state.months; track month) {\n <div>\n <ngb-datepicker-month [month]=\"month\"></ngb-datepicker-month>\n </div>\n }\n </div>\n </div>\n</ng-template>\n","import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\n\nexport const DEFAULT_USE_MERIDIAN_LABEL = 'Use 24-hour format';\nexport const DEFAULT_MIN_DATE: NgbDateStruct = {\n year: 1900,\n month: 1,\n day: 1\n} as const;\nexport const DEFAULT_MAX_DATE: NgbDateStruct = {\n year: 2099,\n month: 12,\n day: 31\n} as const;\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl } from '@angular/forms';\nimport { ButtonModule } from '../../../button';\nimport { IDatetimePickerValue } from '../../types';\nimport { DatetimePickerComponent } from '../datetime-picker/datetime-picker.component';\n\n@Component({\n selector: 'impdc-datetime-picker-input-footer',\n standalone: true,\n imports: [CommonModule, ButtonModule],\n templateUrl: './datetime-picker-input-footer.component.html',\n styleUrls: ['./datetime-picker-input-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatetimePickerInputFooterComponent implements OnInit {\n private readonly _cd = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n protected readonly datetimePickerFormControl =\n new FormControl<IDatetimePickerValue<any, any> | null>(null);\n\n @Input({ required: true })\n public datetimePicker!: DatetimePickerComponent;\n\n @Input()\n public initialValue: IDatetimePickerValue<any, any> | null = null;\n\n @Input()\n public cancelLabel: string = 'Cancel';\n\n @Input()\n public clearLabel: string = 'Clear';\n\n @Input()\n public saveLabel: string = 'Save';\n\n @Output()\n public readonly datetimeSelected = new EventEmitter<IDatetimePickerValue<\n any,\n any\n > | null>();\n\n @Output()\n public readonly closeRequested = new EventEmitter<void>();\n\n public ngOnInit() {\n this.datetimePickerFormControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(v => this.datetimePicker.writeValue(v));\n this.datetimePickerFormControl.reset(this.initialValue);\n this.datetimePicker.registerOnChange(\n (value: IDatetimePickerValue<unknown, unknown> | null) => {\n this.datetimePickerFormControl.setValue(value, { emitEvent: false });\n this._cd.markForCheck();\n }\n );\n }\n\n public allowSave(): boolean {\n const currentValue = this.datetimePickerFormControl.value;\n\n return (\n !!currentValue?.date &&\n (!this.datetimePicker.withTime || !!currentValue.time)\n );\n }\n\n public clearAndClose() {\n this.datetimePickerFormControl.reset(null);\n this.saveAndClose();\n }\n\n public saveAndClose() {\n this.datetimeSelected.emit(this.datetimePickerFormControl.value);\n this.closePicker();\n }\n\n public closePicker() {\n this.closeRequested.emit();\n }\n}\n","<div class=\"d-flex gap-3\">\n <button class=\"btn btn-link me-auto\" type=\"button\" (click)=\"clearAndClose()\">\n {{ clearLabel }}\n </button>\n <button impdcButton theme=\"secondary\" (click)=\"closePicker()\">\n {{ cancelLabel }}\n </button>\n <button\n impdcButton\n theme=\"primary\"\n [disabled]=\"!allowSave()\"\n (click)=\"saveAndClose()\">\n {{ saveLabel }}\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { CommonModule, TranslationWidth } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport {\n NgbDateAdapter,\n NgbDateStruct,\n NgbDatepicker,\n NgbDatepickerModule,\n NgbTimepickerModule\n} from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport { Subject, debounceTime } from 'rxjs';\n\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n IMPDC_FORM_ROOT,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n ImpdcFormsModule,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../../../form-field';\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n DEFAULT_USE_MERIDIAN_LABEL\n} from '../../constants';\nimport { IDatetimePickerValue } from '../../types';\nimport { DatepickerTemplateHostComponent } from '../datepicker-template-host';\nimport { DatetimePickerInputFooterComponent } from '../datetime-picker-input-footer';\n\ninterface ITimeOptions {\n readonly border: boolean;\n readonly layout: 'inline' | 'stacked';\n}\n\nexport const DEFAULT_TIME_LAYOUT: ITimeOptions = {\n border: false,\n layout: 'inline'\n} as const;\n\nconst _DatetimePickerComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * A control for selecting date or datetime via an inline calendar control.\n *\n * Implements [ControlValueAccessor](https://angular.io/api/forms/ControlValueAccessor) to support two-way binding with\n * Angular forms via usage of the \\`[(ngModel)]\\`, \\`[formControl]\\`, and \\`[formControlName]\\` directives.\n *\n * The date and time controls inside this component leverage the value adapter patterns and services of NG-Bootstrap's\n * [Datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview#date-model) and\n * [Timepicker](https://ng-bootstrap.github.io/#/components/timepicker/examples#adapter) components when working with input values.\n * This means that `date` values will be [NgbDateStruct](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateStruct)\n * objects and `time` values will be [NgbTimeStruct](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeStruct) objects\n * by default, and the [NgbDateAdapter](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateAdapter) and\n * [NgbTimeAdapter](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeAdapter) services will be used to handle them respectively.\n * If usage of alternative date and time models is desired, consult NG-Bootstrap's documentation for directions.\n */\n@Component({\n selector: 'impdc-datetime-picker',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgbDatepickerModule,\n NgbTimepickerModule,\n DatepickerTemplateHostComponent,\n DatetimePickerInputFooterComponent,\n ImpdcFormsModule\n ],\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-datetime-picker--required]': 'required',\n '[class.impdc-datetime-picker--disabled]': 'disabled',\n '[class.impdc-datetime-picker--invalid]': 'errorState',\n '[class.impdc-datetime-picker--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: DatetimePickerComponent\n }\n ]\n})\nexport class DatetimePickerComponent\n extends _DatetimePickerComponentBase\n implements\n ControlValueAccessor,\n DoCheck,\n OnChanges,\n OnDestroy,\n OnInit,\n ImpdcFormFieldControl<IDatetimePickerValue<any, any> | null>,\n ICanUpdateErrorState,\n IHasErrorState\n{\n private readonly _changeDetector = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _hostElement = inject(ElementRef);\n private readonly _ngbDateAdapter = inject(NgbDateAdapter<any>);\n private readonly _uid = `impdc-datetime-picker-${nanoid()}`;\n private _previousControl?: AbstractControl | null;\n\n protected readonly NgTranslationWidth = TranslationWidth;\n protected readonly formGroup = inject(FormBuilder).group({\n date: new FormControl<any>(null),\n time: new FormControl<any>(null),\n useMeridian: new FormControl<boolean>(true, { nonNullable: true })\n });\n protected cvaOnChange = (_: any) => {};\n protected cvaOnTouched = () => {};\n\n @ViewChild(NgbDatepicker, { static: true })\n protected ngbDatepicker!: NgbDatepicker;\n\n /**\n * A callback function that can be evaluated to decide if a given date is disabled\n * in the calendar view.\n *\n * @param date An [`NgbDate`](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDate) value describing the singular date being evaluated.\n * @param current The month and year selected for the current calendar view.\n */\n @Input()\n public markDateDisabled?: (\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ) => boolean;\n\n /**\n * The earliest allowable date for display or selection.\n *\n * @default { year: 1900, month: 1, day: 1 }\n */\n @Input()\n public get minDate(): NgbDateStruct {\n return { ...this._minDate };\n }\n public set minDate(value: NgbDateStruct | null) {\n this._minDate = value || DEFAULT_MIN_DATE;\n }\n private _minDate: NgbDateStruct = DEFAULT_MIN_DATE;\n\n /**\n * The latest allowable date for display or selection.\n *\n * @default { year: 2099, month: 12, day: 31 }\n */\n @Input()\n public get maxDate(): NgbDateStruct {\n return { ...this._maxDate };\n }\n public set maxDate(value: NgbDateStruct | null) {\n this._maxDate = value || DEFAULT_MAX_DATE;\n }\n private _maxDate: NgbDateStruct = DEFAULT_MAX_DATE;\n\n /**\n * Configurable options for setting the layout of the date and time controls within the component.\n */\n @Input()\n public get timeLayout(): ITimeOptions {\n return { ...this._timeLayout };\n }\n public set timeLayout(value: Partial<ITimeOptions>) {\n this._timeLayout = {\n ...DEFAULT_TIME_LAYOUT,\n ...value\n };\n }\n private _timeLayout: ITimeOptions = { ...DEFAULT_TIME_LAYOUT };\n\n /**\n * Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.\n */\n @Input()\n public meridianToggleLabel: string = DEFAULT_USE_MERIDIAN_LABEL;\n\n /**\n * Set whether to display controls for selecting a time value in addition to the date.\n */\n @Input()\n public withTime = false;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Events fire when raw value of picker input changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n @Output()\n public readonly valueChange: EventEmitter<IDatetimePickerValue<\n any,\n any\n > | null> = new EventEmitter<IDatetimePickerValue<any, any> | null>();\n\n /** @ignore */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly blur = new EventEmitter<FocusEvent>();\n\n constructor(\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.id = this.id;\n }\n\n /** @ignore */\n public focus(): void {\n this.ngbDatepicker.focus();\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /** @ignore */\n public ngOnInit(): void {\n this.formGroup.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef), debounceTime(100))\n .subscribe(formValue => {\n const changeValue = this._getValueFromFormModel(formValue);\n this.cvaOnChange(changeValue);\n this.valueChange.emit(changeValue);\n this.cvaOnTouched();\n });\n }\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(obj: IDatetimePickerValue<any, any> | any): void {\n let newValue: Partial<IDatetimePickerValue> = {};\n if (obj && 'date' in obj) {\n newValue = {\n ...newValue,\n date: obj.date\n };\n }\n\n if (this.withTime && obj && 'time' in obj) {\n newValue = {\n ...newValue,\n time: obj.time\n };\n }\n\n this.formGroup.patchValue(newValue, { emitEvent: false });\n if ('date' in newValue) {\n this.ngbDatepicker.focusDate(\n this._ngbDateAdapter.fromModel(newValue.date)\n );\n }\n\n this.stateChanges.next();\n }\n\n /** @ignore */\n public registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: any): void {\n this.cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n if (isDisabled) {\n this.formGroup.disable();\n } else {\n this.formGroup.enable();\n }\n }\n\n /* ImpdcFormFieldControl */\n\n @Input()\n public get value(): IDatetimePickerValue<any, any> | null {\n return this._getValueFromFormModel(this.formGroup.value);\n }\n public set value(value: IDatetimePickerValue<any, any> | null) {\n this.writeValue(value);\n }\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused;\n }\n protected _focused = false;\n\n public readonly controlType: string = 'impdc-datetime-picker';\n public readonly supportsAffixes: boolean = false;\n\n /* Internals */\n\n protected get useMeridian(): boolean {\n return this.formGroup.getRawValue().useMeridian;\n }\n\n protected get useMeridianLabelText(): string {\n return this.meridianToggleLabel?.trim() || DEFAULT_USE_MERIDIAN_LABEL;\n }\n\n protected handleFocusOut(evt: FocusEvent): void {\n if (\n !evt.relatedTarget ||\n !this._hostElement.nativeElement.contains(evt.relatedTarget)\n ) {\n this._onBlur(evt);\n }\n }\n\n private _getValueFromFormModel(\n formValue: Partial<{ date: any; time: any; useMeridian: any }>\n ): IDatetimePickerValue<any, any> | null {\n if (!formValue.date && !formValue.time) {\n return null;\n }\n\n let result: IDatetimePickerValue<any, any> = {\n date: formValue.date\n };\n\n if (this.withTime) {\n result = {\n ...result,\n time: formValue.time\n };\n }\n\n return result;\n }\n\n private _dateIsOutsideCurrentMonth(\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ): boolean {\n return !!current && date.month !== current.month;\n }\n\n protected readonly markDateDisabledFn = (\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ) => {\n return (\n this._dateIsOutsideCurrentMonth(date, current) ||\n (!!this.markDateDisabled && this.markDateDisabled(date, current))\n );\n };\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _onBlur(focusEvent: FocusEvent): void {\n this._focused = false;\n\n if (!this.disabled) {\n this.cvaOnTouched();\n this.blur.emit(focusEvent);\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n}\n","<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"useMeridianLabelText\"\n formControlName=\"useMeridian\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"useMeridian\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { IDatetimePickerValue } from '../../types';\nimport {\n NgbDateAdapter,\n NgbDateStruct,\n NgbDropdownModule,\n NgbTimeAdapter\n} from '@ng-bootstrap/ng-bootstrap';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n IMPDC_FORM_ROOT,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../../../form-field';\nimport { ImpdcDatetimeFormatter } from '../../services';\nimport { DatetimePickerComponent } from '../datetime-picker/datetime-picker.component';\nimport { DatetimePickerInputFooterComponent } from '../datetime-picker-input-footer';\nimport { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE } from '../../constants';\n\nexport interface IDatetimePickerPopupButtonLabels {\n readonly cancelLabel: string;\n readonly clearLabel: string;\n readonly saveLabel: string;\n}\n\nexport const DEFAULT_POPUP_BUTTON_LABELS: IDatetimePickerPopupButtonLabels = {\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n saveLabel: 'Save'\n} as const;\n\nconst _DatetimePickerInputComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * A control for selecting date or datetime via an interactive dropdown control.\n *\n * Implements [ControlValueAccessor](https://angular.io/api/forms/ControlValueAccessor) to support two-way binding with\n * Angular forms via usage of the \\`[(ngModel)]\\`, \\`[formControl]\\`, and \\`[formControlName]\\` directives.\n *\n * The date and time controls inside this component leverage the value adapter patterns and services of NG-Bootstrap's\n * [Datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview#date-model) and\n * [Timepicker](https://ng-bootstrap.github.io/#/components/timepicker/examples#adapter) components when working with input values.\n * This means that `date` values will be [NgbDateStruct](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateStruct)\n * objects and `time` values will be [NgbTimeStruct](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeStruct) objects\n * by default, and the [NgbDateAdapter](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateAdapter) and\n * [NgbTimeAdapter](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeAdapter) services will be used to handle them respectively.\n * If usage of alternative date and time models is desired, consult NG-Bootstrap's documentation for directions.\n */\n@Component({\n selector: 'impdc-datetime-picker-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatetimePickerComponent,\n DatetimePickerInputFooterComponent,\n NgbDropdownModule\n ],\n templateUrl: './datetime-picker-input.component.html',\n styleUrls: ['./datetime-picker-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-control]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-datetime-picker-input--required]': 'required',\n '[class.impdc-datetime-picker-input--disabled]': 'disabled',\n '[class.impdc-datetime-picker-input--invalid]': 'errorState',\n '[class.impdc-datetime-picker-input--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: DatetimePickerInputComponent\n }\n ]\n})\nexport class DatetimePickerInputComponent\n extends _DatetimePickerInputComponentBase\n implements\n ControlValueAccessor,\n DoCheck,\n OnChanges,\n OnDestroy,\n OnInit,\n ImpdcFormFieldControl<IDatetimePickerValue<any, any> | null>,\n ICanUpdateErrorState,\n IHasErrorState\n{\n private readonly _changeDetector = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _ngbDateAdapter = inject(NgbDateAdapter<any>);\n private readonly _ngbTimeAdapter = inject(NgbTimeAdapter<any>);\n private readonly _datetimeFormatter = inject(ImpdcDatetimeFormatter);\n private readonly _uid = `impdc-datetime-picker-input-${nanoid()}`;\n private _previousControl?: AbstractControl | null;\n private _dropdownOpen = false;\n\n protected readonly datetimePickerControl =\n new FormControl<IDatetimePickerValue<any, any> | null>(null);\n protected cvaOnChange = (_: any) => {};\n protected cvaOnTouched = () => {};\n\n @ViewChild('toggleButton', { static: true, read: ElementRef })\n protected _toggleButtonRef!: ElementRef<HTMLButtonElement>;\n\n /**\n * A callback function that can be evaluated to decide if a given date is disabled\n * in the calendar view.\n *\n * @param date An [`NgbDate`](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDate) value describing the singular date being evaluated.\n * @param current The month and year selected for the current calendar view.\n */\n @Input()\n public markDateDisabled?: (\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ) => boolean;\n\n /**\n * The earliest allowable date for display or selection.\n *\n * @default { year: 1900, month: 1, day: 1 }\n */\n @Input()\n public get minDate(): NgbDateStruct {\n return { ...this._minDate };\n }\n public set minDate(value: NgbDateStruct | null) {\n this._minDate = value || DEFAULT_MIN_DATE;\n }\n private _minDate: NgbDateStruct = DEFAULT_MIN_DATE;\n\n /**\n * The latest allowable date for display or selection.\n *\n * @default { year: 2099, month: 12, day: 31 }\n */\n @Input()\n public get maxDate(): NgbDateStruct {\n return { ...this._maxDate };\n }\n public set maxDate(value: NgbDateStruct | null) {\n this._maxDate = value || DEFAULT_MAX_DATE;\n }\n private _maxDate: NgbDateStruct = DEFAULT_MAX_DATE;\n\n /**\n * Set whether to display controls for selecting a time value in addition to the date.\n */\n @Input()\n public withTime = false;\n\n /**\n * Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.\n */\n @Input()\n public meridianToggleLabel: string = 'Use 24-hour format';\n\n /**\n * Object dictating the labels used for the buttons displayed in the footer of the datetime picker popup.\n *\n * @default { cancelLabel: \"Cancel\", clearLabel: \"Clear\", saveLabel: \"Save\" }\n */\n @Input()\n public get popupButtonLabels(): IDatetimePickerPopupButtonLabels {\n return this._popupButtonLabels;\n }\n public set popupButtonLabels(\n value: Partial<IDatetimePickerPopupButtonLabels>\n ) {\n this._popupButtonLabels = {\n ...DEFAULT_POPUP_BUTTON_LABELS,\n ...value\n };\n }\n private _popupButtonLabels = DEFAULT_POPUP_BUTTON_LABELS;\n\n /**\n * The placeholder text that will be displayed when no selection has been made.\n *\n * @default YYYY-MM-DD hh:mm\n */\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n public set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder = '';\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Events fire when raw value of picker input changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n @Output()\n public readonly valueChange: EventEmitter<IDatetimePickerValue<\n any,\n any\n > | null> = new EventEmitter<IDatetimePickerValue<any, any> | null>();\n\n constructor(\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.id = this.id;\n }\n\n /** @ignore */\n public get empty(): boolean {\n return !this.value;\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this._toggleButtonRef.nativeElement.focus(options);\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /** @ignore */\n public ngOnInit() {\n this.datetimePickerControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(v => {\n this.cvaOnChange(v);\n this.valueChange.emit(v);\n this._updateDisplayedValue(v);\n });\n }\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(obj: any): void {\n this.datetimePickerControl.setValue(obj, { emitEvent: false });\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: any): void {\n this.cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n if (isDisabled) {\n this.datetimePickerControl.disable();\n } else {\n this.datetimePickerControl.enable();\n }\n\n this._changeDetector.markForCheck();\n }\n\n /* ImpdcFormFieldControl */\n\n @Input()\n public get value(): IDatetimePickerValue<any, any> | null {\n return this.datetimePickerControl.value;\n }\n public set value(value: IDatetimePickerValue<any, any> | null) {\n if (value !== this.datetimePickerControl.value) {\n this.datetimePickerControl.setValue(value);\n this.stateChanges.next();\n }\n }\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused || this._dropdownOpen;\n }\n protected _focused = false;\n\n public readonly controlType: string = 'impdc-datetime-picker-input';\n public readonly supportsAffixes: boolean = true;\n\n /* Internals */\n\n protected displayedValue: string = '';\n\n protected get placeholderText(): string {\n return (\n this.placeholder?.trim() || `YYYY-MM-DD${this.withTime ? ' hh:mm' : ''}`\n );\n }\n\n protected updateValue(newValue: IDatetimePickerValue<any, any> | null): void {\n this.datetimePickerControl.setValue(newValue);\n }\n\n protected handleOpenChange(isOpen: boolean): void {\n this._dropdownOpen = isOpen;\n\n if (isOpen) {\n this._onFocus();\n } else {\n this._onBlur();\n }\n\n this.stateChanges.next();\n }\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _onBlur(): void {\n this._focused = false;\n\n if (!this.disabled && !this._dropdownOpen) {\n this.cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _updateDisplayedValue(\n datetimePickerValue: IDatetimePickerValue<any, any> | null\n ): void {\n let newValue = '';\n if (datetimePickerValue) {\n const convertedDateValue = this._ngbDateAdapter.fromModel(\n datetimePickerValue.date\n );\n\n if (convertedDateValue) {\n newValue = this._datetimeFormatter.format(convertedDateValue, {\n value: this.withTime\n ? this._ngbTimeAdapter.fromModel(datetimePickerValue.time)\n : null,\n withSeconds: false\n });\n }\n }\n\n this.displayedValue = newValue;\n }\n}\n","<div\n ngbDropdown\n #ngbDropdown=\"ngbDropdown\"\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom bottom-start bottom-end top top-start top-end\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"h-100 w-100\">\n <button\n #toggleButton\n class=\"impdc-datetime-picker--toggle btn border-0 h-100 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n ngbDropdownToggle>\n @if (!displayedValue) {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--placeholder\"\n >{{ placeholderText }}</span\n >\n } @else {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--value-text\"\n >{{ displayedValue }}</span\n >\n }\n </button>\n <div\n ngbDropdownMenu\n class=\"impdc-datetime-picker--dropdown w-100 bg-white overflow-y-visible text-gray-600\"\n tabindex=\"-1\">\n <ng-container *ngIf=\"ngbDropdown.isOpen()\">\n <impdc-datetime-picker\n #picker\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [markDateDisabled]=\"markDateDisabled\"\n [withTime]=\"withTime\"\n [meridianToggleLabel]=\"meridianToggleLabel\"\n [timeLayout]=\"{ layout: 'stacked', border: true }\" />\n <div\n class=\"border-gray-200 border-top d-flex flex-column gap-4 mt-2 p-4 w-100\">\n <impdc-datetime-picker-input-footer\n [datetimePicker]=\"picker\"\n [initialValue]=\"datetimePickerControl.value\"\n [cancelLabel]=\"popupButtonLabels.cancelLabel\"\n [clearLabel]=\"popupButtonLabels.clearLabel\"\n [saveLabel]=\"popupButtonLabels.saveLabel\"\n (datetimeSelected)=\"updateValue($event)\"\n (closeRequested)=\"ngbDropdown.close()\" />\n </div>\n </ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport {\n DatetimePickerComponent,\n DatetimePickerInputComponent\n} from './components';\n\nconst DATETIME_PICKER_DIRECTIVES = [\n DatetimePickerComponent,\n DatetimePickerInputComponent\n];\n\n@NgModule({\n imports: DATETIME_PICKER_DIRECTIVES,\n exports: DATETIME_PICKER_DIRECTIVES\n})\nexport class DatetimePickerModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TextHighlightModule } from './text-highlight';\nimport { ButtonModule } from './button';\nimport { TableModule } from './table';\nimport { ModalModule } from './modal';\nimport { IconModule } from './icon';\nimport { ProgressBarModule } from './progress-bar';\nimport { DropdownModule } from './dropdown';\nimport { AlertModule } from './alert';\nimport { FileUploadModule } from './file-upload';\nimport { AvatarModule } from './avatar';\nimport { AvatarGroupModule } from './avatar-group';\nimport { BadgeModule } from './badge';\nimport { BreadcrumbModule } from './breadcrumb';\nimport { BrandingModule } from './branding';\nimport { DatetimePickerModule } from './datetime-picker';\nimport { TagComponent } from './tag';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TextHighlightModule,\n IconModule,\n BadgeModule,\n TagComponent,\n ProgressBarModule,\n ButtonModule,\n TableModule,\n DropdownModule,\n AlertModule,\n ModalModule,\n FileUploadModule,\n AvatarModule,\n AvatarGroupModule,\n BreadcrumbModule,\n BrandingModule,\n DatetimePickerModule\n ],\n exports: [\n TextHighlightModule,\n IconModule,\n BadgeModule,\n TagComponent,\n ProgressBarModule,\n ButtonModule,\n TableModule,\n DropdownModule,\n AlertModule,\n ModalModule,\n FileUploadModule,\n AvatarModule,\n AvatarGroupModule,\n BreadcrumbModule,\n BrandingModule,\n DatetimePickerModule\n ]\n})\nexport default class DesignComponentsModule {}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n HostBinding\n} from '@angular/core';\n\n/**\n * The `ButtonGroupComponent` (`<impdc-button-group` or `<any impdc-button-group`) is a container for multiple [ButtonComponent](./?path=/docs/design-components-button)s.\n * To use, import `ButtonGroupModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ButtonGroupModule` imports and exports [ButtonModule](./?path=/docs/design-components-button).\n */\n@Component({\n selector: 'impdc-button-group, [impdc-button-group]',\n templateUrl: './button-group.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonGroupComponent {\n /**\n * Changes the orientation of the Button Group to vertical, making any Button within it stack vertically.\n */\n @Input()\n vertical = false;\n\n /**\n * Sets the `aria-label` attribute for the Button Group's element.\n */\n @Input()\n ariaLabel = '';\n\n @HostBinding('class.btn-group') private get classBtnGroup() {\n return !this.vertical;\n }\n\n @HostBinding('class.btn-group-vertical') private get classBtnGroupVertical() {\n return this.vertical;\n }\n\n @HostBinding('attr.role') private attrRole = 'group';\n\n @HostBinding('attr.aria-label') private get attrAriaLabel() {\n return this.ariaLabel || undefined;\n }\n}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button/button.module';\nimport { ButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule],\n declarations: [ButtonGroupComponent],\n exports: [ButtonModule, ButtonGroupComponent]\n})\nexport class ButtonGroupModule {\n constructor() {}\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * The `CardHeadingComponent` (`<impdc-card-heading` or `<div impdc-card-heading`) is used to display projected content as a card with a consistent heading.\n * To use, import `CardHeadingModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-card-heading, div[impdc-card-heading]',\n templateUrl: './card-heading.component.html',\n styleUrls: ['./card-heading.component.scss']\n})\nexport class CardHeadingComponent {\n /**\n * The subject text for a Card.\n */\n @Input()\n public title = '';\n\n /**\n * The description, subtitle, or other pre-text for a Card.\n */\n @Input()\n public description = '';\n\n constructor() {}\n}\n","<div class=\"card-heading\">\n <div class=\"heading\">\n <div class=\"heading-left\">\n <div class=\"heading-avatar\">\n <ng-content select=\"impdc-avatar\"></ng-content>\n </div>\n <div class=\"heading-title\">\n <h3 *ngIf=\"title\">{{ title }}</h3>\n <span class=\"description\" *ngIf=\"description\">{{ description }}</span>\n </div>\n </div>\n <div class=\"heading-actions\">\n <ng-content select=\"button[impdcButton]\"></ng-content>\n </div>\n </div>\n <div class=\"card-heading-body\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CardHeadingComponent } from './card-heading.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CardHeadingComponent],\n exports: [CardHeadingComponent]\n})\nexport class CardHeadingModule {\n constructor() {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IElementSize } from '../size-detection';\n\n/**\n * The `ScrollableComponent` (`<impdc-scrollable` or `<div impdc-scrollable`) is a container that hides items that wouldn't fit\n * with arrows on the left and right to slide between them.\n * To use, import `ScrollableModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ScrollableModule` also imports and exports [BrandingModule](./?path=/docs/design-components-directives-impdcbranded).\n */\n@Component({\n selector: 'impdc-scrollable, div[impdc-scrollable]',\n templateUrl: './scrollable.component.html',\n styleUrls: ['./scrollable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScrollableComponent implements OnChanges, AfterViewInit {\n private readonly GET_ANCESTOR_BG_SEARCH_DEPTH = 64;\n /**\n * The base amount to scroll.\n */\n @Input()\n public scrollUnit = 20;\n\n /**\n * Used in combination with `scrollUnit` to determine how far the Scrollable scrolls when directional arrows are clicked.\n */\n @Input()\n public clickScrollMultiplier = 5;\n\n @HostBinding('style.--impdc-scrollable-bg')\n private _scrollableBgColor: string | null = null;\n\n public get canScrollLeft(): boolean {\n if (!this._contentElement) {\n return false;\n }\n\n return Math.floor(this._contentElement.scrollLeft) > 0;\n }\n\n public get canScrollRight(): boolean {\n if (!this._contentElement) {\n return false;\n }\n\n return (\n Math.ceil(this._contentElement.scrollLeft + this._width) <\n this._contentElement.scrollWidth\n );\n }\n\n private _width = 0;\n\n @ViewChild('container', { static: false })\n public containerRef: ElementRef | undefined;\n\n private get _containerElement(): HTMLDivElement | null {\n if (!this.containerRef) {\n return null;\n }\n\n return this.containerRef.nativeElement;\n }\n\n @ViewChild('content', { static: false })\n public contentRef: ElementRef | undefined;\n\n private get _contentElement(): HTMLDivElement | null {\n if (!this.contentRef) {\n return null;\n }\n\n return this.contentRef.nativeElement;\n }\n\n constructor(\n private _cd: ChangeDetectorRef,\n private readonly _hostElementRef: ElementRef\n ) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['scrollUnit'] || changes['clickScrollMultiplier']) {\n if (this._containerElement) {\n this._width = this._containerElement?.clientWidth;\n this._cd.detectChanges();\n }\n }\n }\n\n public ngAfterViewInit(): void {\n this._width = this.contentRef?.nativeElement.width;\n this._cd.detectChanges();\n\n Promise.resolve().then(() => this._getBackgroundColorForButtons());\n }\n\n public async scroll(direction: number): Promise<void> {\n if (!this._contentElement) {\n return;\n }\n\n let pixels = direction * this.scrollUnit * this.clickScrollMultiplier;\n let position = 0;\n\n if (!pixels) {\n if (direction === 1) {\n position = this._contentElement.scrollWidth;\n }\n } else {\n position = this._contentElement.scrollLeft + pixels;\n }\n\n await this._scrollToPosition(this._contentElement, position);\n\n this._cd.detectChanges();\n }\n\n public widthChanged(elementSize: IElementSize): void {\n if (!elementSize || !elementSize.width) {\n return;\n }\n this._width = elementSize.width;\n this._cd.detectChanges();\n }\n\n private async _scrollToPosition(container: HTMLDivElement, position: number) {\n position = Math.round(position);\n\n if (container.scrollLeft === position) {\n return;\n }\n\n let resolveFn: (value: unknown) => void;\n let scrollListener: () => void;\n let timeoutId: any;\n\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n const finished = () => {\n container.removeEventListener('scroll', scrollListener);\n resolveFn(null);\n };\n\n scrollListener = () => {\n clearTimeout(timeoutId);\n\n // scroll is finished when either the position has been reached, or 100ms have elapsed since the last scroll event\n if (container.scrollLeft === position) {\n finished();\n } else {\n timeoutId = setTimeout(finished, 100);\n }\n };\n\n container.addEventListener('scroll', scrollListener);\n\n container.scrollTo({\n left: position,\n behavior: 'smooth'\n });\n\n return promise;\n }\n\n private _getBackgroundColorForButtons(): void {\n let backgroundColor = this._getBackGroundColor(\n this._hostElementRef.nativeElement\n );\n\n if (!backgroundColor) {\n backgroundColor = this._getAncestorBackgroundColor();\n }\n\n if (this._scrollableBgColor !== backgroundColor) {\n this._scrollableBgColor = backgroundColor;\n this._cd.detectChanges();\n }\n }\n\n private _getAncestorBackgroundColor(): string | null {\n type parentBgResult = {\n parent: HTMLElement | null;\n backgroundColor: string | null;\n };\n\n let result: parentBgResult = {\n parent: this._hostElementRef.nativeElement.parentElement,\n backgroundColor: null\n };\n\n let count = this.GET_ANCESTOR_BG_SEARCH_DEPTH;\n\n function getParentBackgroundColor(\n currentContext: parentBgResult,\n getBackgroundColor: (element: HTMLElement) => string | null\n ): parentBgResult {\n const result: parentBgResult = { parent: null, backgroundColor: null };\n if (currentContext && currentContext.parent) {\n result.backgroundColor = getBackgroundColor(currentContext.parent);\n\n if (!result.backgroundColor) {\n result.parent = currentContext.parent.parentElement;\n }\n }\n\n return result;\n }\n\n while (count > 0) {\n if (result.backgroundColor) {\n break;\n }\n result = getParentBackgroundColor(result, this._getBackGroundColor);\n\n if (!result.parent) {\n break;\n }\n count = count - 1;\n }\n\n return result.backgroundColor;\n }\n\n private _getBackGroundColor(element: HTMLElement): string | null {\n const computedBackgroundColor =\n getComputedStyle(element)['backgroundColor'];\n\n if (computedBackgroundColor !== 'rgba(0, 0, 0, 0)') {\n return computedBackgroundColor;\n }\n\n return element.style.backgroundColor;\n }\n}\n","<div\n class=\"impdc-scrollable\"\n #container\n impdcSizeDetector\n (resized)=\"widthChanged($event)\">\n <a class=\"impdc-scrollable-left\" (click)=\"scroll(-1)\" *ngIf=\"canScrollLeft\">\n <i impdc-icon name=\"chevron-left\" class=\"default\"></i>\n </a>\n <div #content class=\"content-container\">\n <ng-content></ng-content>\n </div>\n <a class=\"impdc-scrollable-right\" (click)=\"scroll(1)\" *ngIf=\"canScrollRight\">\n <i impdc-icon name=\"chevron-right\" class=\"default\"></i>\n </a>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrandingModule } from '../branding';\nimport { SizeDetectionModule } from '../size-detection';\nimport { ScrollableComponent } from './scrollable.component';\n\n@NgModule({\n imports: [CommonModule, SizeDetectionModule, BrandingModule],\n declarations: [ScrollableComponent],\n exports: [ScrollableComponent, BrandingModule]\n})\nexport class ScrollableModule {\n constructor() {}\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n Observable,\n startWith,\n Subject\n} from 'rxjs';\nimport { FontAwesomeIcons } from '../../constants';\nimport { BooleanInput, coerceBooleanPropertyValue } from '../../utilities';\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n IMPDC_FORM_ROOT,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../form-field';\n\nexport class ImpdcSelectIconChange {\n constructor(public source: SelectIconComponent, public value: any) {}\n}\n\nconst _SelectIconComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * The `SelectIconComponent` (`<impdc-select-icon`) is a select dropdown with search that shows all standard icons from Bootstrap 5.\n * To use, import `SelectIconModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-select-icon',\n templateUrl: './select-icon.component.html',\n styleUrls: ['./select-icon.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-select-icon',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-select]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-select-icon--required]': 'required',\n '[class.impdc-select-icon--disabled]': 'disabled',\n '[class.impdc-select-icon--invalid]': 'errorState',\n '[class.impdc-select-icon--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: SelectIconComponent\n }\n ]\n})\nexport class SelectIconComponent\n extends _SelectIconComponentBase\n implements\n ControlValueAccessor,\n ImpdcFormFieldControl<string | null>,\n ICanUpdateErrorState,\n IHasErrorState,\n DoCheck,\n OnChanges,\n OnDestroy\n{\n @ViewChild('toggleButton', { static: true, read: ElementRef })\n protected _toggleButtonRef!: ElementRef<HTMLButtonElement>;\n\n protected readonly filteredOptions$: Observable<string[]>;\n protected readonly searchControl = new FormControl<string>('');\n protected readonly _uid = `impdc-select-icon-${nanoid()}`;\n protected _dropdownOpen = false;\n\n private readonly _iconOptionsSubject = new BehaviorSubject<readonly string[]>(\n FontAwesomeIcons\n );\n private _previousControl?: AbstractControl | null;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n /**\n * Set whether or not an input field will appear for searching and\n * filtering icon options.\n * @default true\n */\n @Input()\n public allowSearch: boolean;\n\n public get iconOptions(): string[] {\n return [...this._iconOptionsSubject.value];\n }\n\n /**\n * Set to override the default set of FontAwesome icon options.\n */\n @Input()\n public set iconOptions(iconOptions: string[]) {\n if (iconOptions) {\n this._iconOptionsSubject.next([...iconOptions]);\n }\n }\n\n /**\n * Set whether or not to show the icon names as labels for icon options.\n * @default true\n */\n @Input()\n public showText: boolean;\n\n /**\n * Set whether or not to show the name of the selected icon inside the control.\n * @default true\n */\n @Input()\n public showSelectedText: boolean;\n\n /**\n * The placeholder text that will be displayed when no selection has been made.\n *\n * @default \\- Select -\n */\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n public set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder = '- Select -';\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /** Events fire when selection has been changed by the user. */\n @Output()\n public readonly selectionChange: EventEmitter<ImpdcSelectIconChange> =\n new EventEmitter<ImpdcSelectIconChange>();\n\n /**\n * Events fire when raw value of select changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n @Output()\n public readonly valueChange = new EventEmitter<string | null>();\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n this.allowSearch = false;\n this.showText = true;\n this.showSelectedText = true;\n\n const debouncedSearchValues = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(200),\n distinctUntilChanged()\n );\n this.filteredOptions$ = combineLatest([\n debouncedSearchValues,\n this._iconOptionsSubject.asObservable()\n ]).pipe(\n map(([searchTerm, iconOptions]) => {\n if (!searchTerm) {\n return [...iconOptions];\n }\n\n const searchTermLowerCase = searchTerm.toLowerCase();\n return iconOptions.filter(\n option => option.toLowerCase().indexOf(searchTermLowerCase) > -1\n );\n })\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.id = this.id;\n }\n\n public get empty(): boolean {\n return !this.value;\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this._toggleButtonRef.nativeElement.focus(options);\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(value: string): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n\n /* ImpdcFormFieldControl */\n\n @Input()\n public get value(): string | null {\n return this._value;\n }\n public set value(value: string | null) {\n const newValue =\n (value && this.iconOptions.find(opt => opt === value)) || null;\n\n if (newValue !== this._value) {\n this._value = newValue;\n this.stateChanges.next();\n }\n }\n private _value: string | null = null;\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused || this._dropdownOpen;\n }\n protected _focused = false;\n\n public readonly controlType: string = 'impdc-select-icon';\n public readonly supportsAffixes: boolean = true;\n\n /* Internals */\n\n protected handleOpenChange(isOpen: boolean): void {\n this._dropdownOpen = isOpen;\n this.searchControl.reset();\n\n if (isOpen) {\n this._onFocus();\n } else {\n this._onBlur();\n }\n\n this.stateChanges.next();\n }\n\n protected selectIcon(iconName: string): void {\n if (iconName !== this.value) {\n this.value = iconName;\n this.valueChange.emit(this.value);\n this._cvaOnChange(this.value);\n this.selectionChange.emit(this._buildChangeEvent(this.value));\n this._changeDetector.markForCheck();\n }\n\n if (this._dropdownOpen) {\n this.focus();\n }\n }\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the CVA touched callback only if the dropdown is closed.\n */\n protected _onBlur(): void {\n this._focused = false;\n\n if (!this.disabled && !this._dropdownOpen) {\n this._cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _buildChangeEvent(value: string | null): ImpdcSelectIconChange {\n return new ImpdcSelectIconChange(this, value);\n }\n}\n","<div\n ngbDropdown\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select-icon--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select-icon--text impdc-select-icon--placeholder\"\n *ngSwitchCase=\"true\">\n {{ placeholder }}\n </span>\n <div\n class=\"impdc-select-icon--text impdc-select-icon--value-text\"\n *ngSwitchCase=\"false\">\n <i impdc-icon [name]=\"value ?? undefined\"></i>\n <span *ngIf=\"showSelectedText\" class=\"ms-2\">{{ value }}</span>\n </div>\n </ng-container>\n </button>\n <div ngbDropdownMenu class=\"select-icon-dropdown-menu\" tabindex=\"-1\">\n <div *ngIf=\"allowSearch\" class=\"select-icon-search\">\n <impdc-form-field>\n <span impdcTextPrefix><i impdc-icon name=\"search\"></i></span>\n <input\n impdcInput\n [formControl]=\"searchControl\"\n class=\"select-icon-search-input\"\n type=\"search\" />\n </impdc-form-field>\n </div>\n <div class=\"select-icon-grid\">\n <button\n *ngFor=\"let iconName of filteredOptions$ | async\"\n type=\"button\"\n (click)=\"selectIcon(iconName)\"\n class=\"icon-option\"\n [class.selected]=\"value === iconName\"\n [title]=\"iconName\"\n [attr.aria-labelledby]=\"showText ? id + '_' + iconName : null\">\n <div class=\"icon-container\">\n <i impdc-icon [name]=\"iconName\" class=\"fs-2xl\"></i>\n </div>\n <div\n id=\"{{ id }}_{{ iconName }}\"\n class=\"icon-label\"\n [class.sr-only]=\"!showText\">\n {{ iconName }}\n </div>\n </button>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n NgbDropdownModule,\n NgbTypeaheadModule\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ImpdcFormsModule } from '../form-field';\nimport { SelectIconComponent } from './select-icon.component';\nimport { IconModule } from '../icon';\n\n@NgModule({\n declarations: [SelectIconComponent],\n imports: [\n CommonModule,\n ImpdcFormsModule,\n IconModule,\n NgbTypeaheadModule,\n NgbDropdownModule,\n ReactiveFormsModule\n ],\n exports: [SelectIconComponent]\n})\nexport class SelectIconModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostBinding,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { ComponentTheme } from '../../types';\n\n/**\n * The `CardHeadingComponent` (`<impdc-data-card` or `<any impdc-data-card`) is to display data snapshots with support for\n * previous values and differences.\n *\n * To use, import `DataCardModule` or another module that imports and exports that module from `@impartner/design-components`.\n *\n * An icon may be displayed in the card via Angular content projection and the `icon` attribute.\n */\n@Component({\n selector: 'impdc-data-card, [impdc-data-card]',\n templateUrl: './data-card.component.html',\n styleUrls: ['./data-card.component.scss']\n})\nexport class DataCardComponent {\n protected readonly BadgeTheme = ComponentTheme;\n\n @ViewChild('iconContentEl', { static: true, read: ElementRef<HTMLElement> })\n protected iconContentElementRef!: ElementRef<HTMLElement>;\n\n /**\n * The subject text for the Data Card.\n */\n @Input()\n title = '';\n\n /**\n * The current data value. Any number/currency format is supported.\n */\n @Input()\n current = '0';\n\n /**\n * The previous data value. Any number/currency format is supported.\n * Only displayed when an icon is not provided via Angular content projection.\n */\n @Input()\n previous = '';\n\n /**\n * The difference between the current and previous values. A numerical or percentage value is preferred,\n * but any number/currency format is supported.\n */\n @Input()\n difference = '';\n\n /**\n * Text for the link at the bottom of the Data Card. If provided, enables the `linkClicked` event to be emitted.\n */\n @Input()\n linkText = '';\n\n /**\n * When stacking multiple Data Card elements together, it's common to combine their borders.\n */\n @Input()\n sharedBorders = true;\n\n /**\n * Changes the color of the icon.\n */\n @Input()\n iconColor = '';\n\n /**\n * Changes the color of the icon's background.\n */\n @Input()\n iconBgColor = '';\n\n /**\n * Emitted when the link text is clicked.\n */\n @Output()\n linkClicked = new EventEmitter<MouseEvent | Event>();\n\n /**\n * Emitted when the corner content is clicked.\n */\n @Output()\n cornerClicked = new EventEmitter<MouseEvent | Event>();\n\n @HostBinding('class') private get classDataCard(): string {\n return 'card impdc-data-card';\n }\n\n @HostBinding('class.impdc-data-card-shared-borders')\n private get classDataCardSharedBorders(): boolean {\n return this.sharedBorders;\n }\n\n get differenceNumber(): number {\n return Number(this.difference.replace(/[^0-9\\.-]+/g, ''));\n }\n\n get differenceNegative(): boolean {\n return this.differenceNumber < 0;\n }\n\n get differencePositive(): boolean {\n return this.differenceNumber > 0;\n }\n\n get differenceDisplay(): string {\n return this.difference.replace('-', '');\n }\n\n protected get hasIcon(): boolean {\n return !!this.iconContentElementRef.nativeElement.children.length;\n }\n\n protected handleLinkClick(event: MouseEvent | Event): void {\n this.linkClicked.emit(event);\n }\n\n protected handleCornerClick(event: MouseEvent | Event): void {\n this.cornerClicked.emit(event);\n }\n}\n","<div class=\"card-body impdc-data-card-body\">\n <div\n #iconContentEl\n class=\"impdc-data-card-icon\"\n [style.color]=\"iconColor ? iconColor : undefined\"\n [style.background-color]=\"iconBgColor ? iconBgColor : undefined\"\n [class.d-none]=\"!hasIcon\">\n <ng-content select=\"[icon]\"></ng-content>\n </div>\n <div class=\"impdc-data-card-container\">\n <div class=\"impdc-data-card-title\" [class.title-attention]=\"!hasIcon\">\n {{ title }}\n </div>\n <div class=\"impdc-data-card-data\">\n <ng-content></ng-content>\n <span\n *ngIf=\"current\"\n class=\"data-current\"\n [class.data-current-enlarged]=\"!hasIcon && !previous && !difference\"\n [innerText]=\"current\"></span>\n <span class=\"data-other\">\n <span\n *ngIf=\"!hasIcon && previous\"\n class=\"data-previous\"\n [innerText]=\"previous\"></span>\n <impdc-badge\n *ngIf=\"difference\"\n [text]=\"differenceDisplay\"\n [icon]=\"\n differencePositive\n ? 'arrow-up'\n : differenceNegative\n ? 'arrow-down'\n : ''\n \"\n [theme]=\"\n differencePositive\n ? BadgeTheme.Success\n : differenceNegative\n ? BadgeTheme.Danger\n : BadgeTheme.Light\n \"\n [hideBg]=\"hasIcon\"\n [rounded]=\"true\"></impdc-badge>\n </span>\n </div>\n </div>\n <div\n #cornerContentEl\n class=\"impdc-data-card-corner\"\n [class.d-none]=\"!cornerContentEl.children.length\"\n (click)=\"handleCornerClick($event); $event.stopPropagation()\">\n <ng-content select=\"[corner]\"></ng-content>\n </div>\n</div>\n<div\n class=\"card-footer impdc-data-card-footer\"\n [class.d-none]=\"!linkText && !footerContentEl.children.length\">\n <div #footerContentEl [class.d-none]=\"!footerContentEl.children.length\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n <a\n *ngIf=\"linkText\"\n class=\"footer-link\"\n (click)=\"handleLinkClick($event); $event.stopPropagation()\"\n >{{ linkText }}</a\n >\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DataCardComponent } from './data-card.component';\nimport { IconModule } from '../icon';\nimport { BadgeModule } from '../badge';\n\n@NgModule({\n imports: [CommonModule, IconModule, BadgeModule],\n declarations: [DataCardComponent],\n exports: [IconModule, DataCardComponent]\n})\nexport class DataCardModule {\n constructor() {}\n}\n","/*\n * Public API Surface of design-components\n */\n\n// do not export design or utilities\n\nexport * from './constants';\nexport * from './types';\nexport * from './services';\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IconComponent","getNestedValue","i1.CornerHintDirective","i2.ErrorDirective","i3.RootFormGroupDirective","i3.RootNgFormDirective","i4.HintDirective","i5.LabelDirective","i6.PrefixDirective","i7.SuffixDirective","i1","i2.ErrorStateMatcher","i3.IconComponent","i1.IconComponent","i4.IconComponent","i5.FormFieldComponent","i2.ButtonComponent","i4","i6.SelectOptionComponent","i7.SelectComponent","i8.InputDirective","i9.SizeDetectorDirective","i1.ErrorStateMatcher","i3.ToggleComponent","i4.ToggleInputComponent","i1.UniqueSelectionDispatcher","i2.ToggleComponent","i3.ToggleInputComponent","i1.BrandedDirective","i2","i3.ButtonComponent","i4.BrandedDirective","i5.IconComponent","i6","debounceTime","setNestedValue","i2.BrandedDirective","i3.BrandedDirective","i5.CheckboxComponent","i9","i10.SpinnerComponent","i11.BadgeComponent","i12.TableDirective","i13.ColumnHeadingComponent","i14.TableInjectComponentDirective","i15.RowActionsComponent","i1.InteractionService","i3","i4.ButtonComponent","i6.FileDropDirective","i7.HumanReadableByteSizePipe","i3.SelectOptionComponent","i4.SelectComponent","i1.ButtonComponent","i5.RootFormGroupDirective","i6.CheckboxComponent","i2.SizeDetectorDirective","i4.FormFieldComponent","i5.PrefixDirective","i6.InputDirective","i7.IconComponent","i8","i2.BadgeComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"impartner-design-components.mjs","sources":["../../../../projects/design-components/src/constants/fontawesome-icons.ts","../../../../projects/design-components/src/types/component-size.ts","../../../../projects/design-components/src/types/component-theme.ts","../../../../projects/design-components/src/services/interaction.service.ts","../../../../projects/design-components/src/lib/text-highlight/text-highlight.component.ts","../../../../projects/design-components/src/lib/text-highlight/text-highlight.module.ts","../../../../projects/design-components/src/lib/icon/icon.component.ts","../../../../projects/design-components/src/lib/icon/icon.component.html","../../../../projects/design-components/src/lib/button/button.component.ts","../../../../projects/design-components/src/lib/button/button.component.html","../../../../projects/design-components/src/lib/branding/branded.directive.ts","../../../../projects/design-components/src/lib/branding/branding.module.ts","../../../../projects/design-components/src/lib/icon/icon.module.ts","../../../../projects/design-components/src/lib/button/button.module.ts","../../../../projects/design-components/src/lib/table/constants/table.constants.ts","../../../../projects/design-components/src/lib/table/constants/public-table.constants.ts","../../../../projects/design-components/src/lib/table/enumerations/table-column-type.ts","../../../../projects/design-components/src/lib/table/helpers/table-theme.helper.ts","../../../../projects/design-components/src/utilities/boolean-props.ts","../../../../projects/design-components/src/utilities/number-props.ts","../../../../projects/design-components/src/utilities/sanitize.ts","../../../../projects/design-components/src/utilities/dc.ts","../../../../projects/design-components/src/utilities/lc.ts","../../../../projects/design-components/src/lib/form-field/component/directives/corner-hint.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/error.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/form-root.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/hint.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/label.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/prefix.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/suffix.directive.ts","../../../../projects/design-components/src/lib/form-field/component/directives/index.ts","../../../../projects/design-components/src/lib/form-field/form-field-errors.ts","../../../../projects/design-components/src/lib/form-field/shared/form-field-control.ts","../../../../projects/design-components/src/lib/form-field/component/form-field.component.ts","../../../../projects/design-components/src/lib/form-field/component/form-field.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/option-group/select-option-group.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option/select-option.component.ts","../../../../projects/design-components/src/lib/badge/types/badge-size.ts","../../../../projects/design-components/src/lib/badge/badge.component.ts","../../../../projects/design-components/src/lib/badge/badge.component.html","../../../../projects/design-components/src/lib/badge/badge.module.ts","../../../../projects/design-components/src/lib/form-field/services/error-state-matcher.service.ts","../../../../projects/design-components/src/lib/form-field/services/unique-selection-dispatcher.service.ts","../../../../projects/design-components/src/lib/form-field/component/form-field.module.ts","../../../../projects/design-components/src/lib/form-field/shared/disabled.mixin.ts","../../../../projects/design-components/src/lib/form-field/shared/error-state.mixin.ts","../../../../projects/design-components/src/lib/form-field/shared/tab-index.mixin.ts","../../../../projects/design-components/src/lib/form-field/controls/input/input.directive.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option-parent.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option-display/select-option-display.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/option-display/select-option-display.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/select-model.ts","../../../../projects/design-components/src/lib/tag/tag.component.ts","../../../../projects/design-components/src/lib/tag/tag.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.html","../../../../projects/design-components/src/lib/form-field/controls/select/select.component.ts","../../../../projects/design-components/src/lib/form-field/controls/select/select.component.html","../../../../projects/design-components/src/lib/size-detection/directive/size-detector.directive.ts","../../../../projects/design-components/src/lib/pagination/pagination.component.ts","../../../../projects/design-components/src/lib/pagination/pagination.component.html","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.ts","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/toggle.component.ts","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/toggle.component.html","../../../../projects/design-components/src/lib/form-field/controls/shared/toggle/toggle.module.ts","../../../../projects/design-components/src/lib/form-field/controls/checkbox/checkbox.component.ts","../../../../projects/design-components/src/lib/form-field/controls/checkbox/checkbox.component.html","../../../../projects/design-components/src/lib/form-field/controls/checkbox/checkbox.module.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/interfaces/radio-change-event.interface.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/injection-tokens.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/radio-button/radio-button.component.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/radio-button/radio-button.component.html","../../../../projects/design-components/src/lib/form-field/controls/radio/radio-group/radio-group.directive.ts","../../../../projects/design-components/src/lib/form-field/controls/radio/radio.module.ts","../../../../projects/design-components/src/lib/form-field/controls/select/select.module.ts","../../../../projects/design-components/src/lib/form-field/controls/tag-select/tag-select.component.ts","../../../../projects/design-components/src/lib/form-field/controls/tag-select/tag-select.component.html","../../../../projects/design-components/src/lib/form-field/impdc-forms.module.ts","../../../../projects/design-components/src/lib/size-detection/size-detection.module.ts","../../../../projects/design-components/src/lib/pagination/pagination.module.ts","../../../../projects/design-components/src/lib/table/components/column-heading/column-heading.component.ts","../../../../projects/design-components/src/lib/table/components/column-heading/column-heading.component.html","../../../../projects/design-components/src/lib/table/components/bulk-actions/bulk-actions.component.ts","../../../../projects/design-components/src/lib/table/components/bulk-actions/bulk-actions.component.html","../../../../projects/design-components/src/lib/table/components/row-actions/row-actions.component.ts","../../../../projects/design-components/src/lib/table/components/row-actions/row-actions.component.html","../../../../projects/design-components/src/lib/spinner/spinner.component.ts","../../../../projects/design-components/src/lib/spinner/spinner.component.html","../../../../projects/design-components/src/lib/table/directives/collapse-monitor.directive.ts","../../../../projects/design-components/src/lib/table/directives/table.directive.ts","../../../../projects/design-components/src/lib/table/directives/table-inject-component.directive.ts","../../../../projects/design-components/src/lib/table/containers/table.component.ts","../../../../projects/design-components/src/lib/table/containers/table.component.html","../../../../projects/design-components/src/lib/spinner/spinner.module.ts","../../../../projects/design-components/src/lib/table/table.module.ts","../../../../projects/design-components/src/lib/modal/types/modal-component-sizes.ts","../../../../projects/design-components/src/lib/modal/types/modal-theme.ts","../../../../projects/design-components/src/lib/modal/modal.component.ts","../../../../projects/design-components/src/lib/modal/modal.component.html","../../../../projects/design-components/src/lib/backdrop/backdrop.component.ts","../../../../projects/design-components/src/lib/backdrop/backdrop.component.html","../../../../projects/design-components/src/lib/backdrop/backdrop.module.ts","../../../../projects/design-components/src/lib/modal/modal.module.ts","../../../../projects/design-components/src/lib/progress-bar/progress-bar.component.ts","../../../../projects/design-components/src/lib/progress-bar/progress-bar.component.html","../../../../projects/design-components/src/lib/progress-bar/progress-bar.module.ts","../../../../projects/design-components/src/lib/dropdown/components/dropdown-item/dropdown-item.component.ts","../../../../projects/design-components/src/lib/dropdown/components/dropdown-item/dropdown-item.component.html","../../../../projects/design-components/src/lib/dropdown/dropdown.component.ts","../../../../projects/design-components/src/lib/dropdown/dropdown.component.html","../../../../projects/design-components/src/lib/dropdown/dropdown.module.ts","../../../../projects/design-components/src/lib/alert/alert.component.ts","../../../../projects/design-components/src/lib/alert/alert.component.html","../../../../projects/design-components/src/lib/alert/alert.module.ts","../../../../projects/design-components/src/lib/file-upload/directives/file-drop.directive.ts","../../../../projects/design-components/src/lib/file-upload/pipes/human-readable-byte-size.pipe.ts","../../../../projects/design-components/src/lib/file-upload/file-upload.component.ts","../../../../projects/design-components/src/lib/file-upload/file-upload.component.html","../../../../projects/design-components/src/lib/file-upload/file-upload.module.ts","../../../../projects/design-components/src/lib/avatar/avatar.component.ts","../../../../projects/design-components/src/lib/avatar/avatar.component.html","../../../../projects/design-components/src/lib/avatar/avatar.module.ts","../../../../projects/design-components/src/lib/avatar-group/avatar-group.component.ts","../../../../projects/design-components/src/lib/avatar-group/avatar-group.component.html","../../../../projects/design-components/src/lib/avatar-group/avatar-group.module.ts","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb-item.component.ts","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb.component.ts","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb.component.html","../../../../projects/design-components/src/lib/breadcrumb/breadcrumb.module.ts","../../../../projects/design-components/src/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.html","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.html","../../../../projects/design-components/src/lib/datetime-picker/constants/datetime-picker-defaults.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.html","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker/datetime-picker.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker/datetime-picker.component.html","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.ts","../../../../projects/design-components/src/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.html","../../../../projects/design-components/src/lib/datetime-picker/datetime-picker.module.ts","../../../../projects/design-components/src/lib/design-components.module.ts","../../../../projects/design-components/src/lib/button-group/button-group.component.ts","../../../../projects/design-components/src/lib/button-group/button-group.component.html","../../../../projects/design-components/src/lib/button-group/button-group.module.ts","../../../../projects/design-components/src/lib/card-heading/card-heading.component.ts","../../../../projects/design-components/src/lib/card-heading/card-heading.component.html","../../../../projects/design-components/src/lib/card-heading/card-heading.module.ts","../../../../projects/design-components/src/lib/scrollable/scrollable.component.ts","../../../../projects/design-components/src/lib/scrollable/scrollable.component.html","../../../../projects/design-components/src/lib/scrollable/scrollable.module.ts","../../../../projects/design-components/src/lib/select-icon/select-icon.component.ts","../../../../projects/design-components/src/lib/select-icon/select-icon.component.html","../../../../projects/design-components/src/lib/select-icon/select-icon.module.ts","../../../../projects/design-components/src/lib/data-card/data-card.component.ts","../../../../projects/design-components/src/lib/data-card/data-card.component.html","../../../../projects/design-components/src/lib/data-card/data-card.module.ts","../../../../projects/design-components/src/public-api.ts","../../../../projects/design-components/src/impartner-design-components.ts"],"sourcesContent":["export const FontAwesomeIconThemes: string[] = ['solid', 'regular', 'light'];\n\nexport type FontAwesomeIconTheme = (typeof FontAwesomeIconThemes)[number];\n\nexport const FontAwesomeIcons: string[] = [\n 'yin-yang',\n 'yen-sign',\n 'x-ray',\n 'wrench',\n 'wreath',\n 'won-sign',\n 'wine-glass-alt',\n 'wine-glass',\n 'wine-bottle',\n 'windsock',\n 'window-restore',\n 'window-minimize',\n 'window-maximize',\n 'window-frame-open',\n 'window-frame',\n 'window-close',\n 'window-alt',\n 'window',\n 'wind-warning',\n 'wind-turbine',\n 'wind',\n 'wifi-slash',\n 'wifi-2',\n 'wifi-1',\n 'wifi',\n 'whistle',\n 'wheelchair',\n 'wheat',\n 'whale',\n 'weight-hanging',\n 'weight',\n 'webcam-slash',\n 'webcam',\n 'waveform-path',\n 'waveform',\n 'wave-triangle',\n 'wave-square',\n 'wave-sine',\n 'water-rise',\n 'water-lower',\n 'water',\n 'watch-fitness',\n 'watch-calculator',\n 'watch',\n 'washer',\n 'warehouse-alt',\n 'warehouse',\n 'wand-magic',\n 'wand',\n 'wallet',\n 'walking',\n 'walkie-talkie',\n 'walker',\n 'wagon-covered',\n 'vr-cardboard',\n 'vote-yea',\n 'vote-nay',\n 'volume-up',\n 'volume-slash',\n 'volume-off',\n 'volume-mute',\n 'volume-down',\n 'volume',\n 'volleyball-ball',\n 'volcano',\n 'voicemail',\n 'viruses',\n 'virus-slash',\n 'virus',\n 'violin',\n 'vihara',\n 'video-slash',\n 'video-plus',\n 'video',\n 'vials',\n 'vial',\n 'vhs',\n 'vest-patches',\n 'vest',\n 'venus-mars',\n 'venus-double',\n 'venus',\n 'vector-square',\n 'value-absolute',\n 'vacuum-robot',\n 'vacuum',\n 'utensils-alt',\n 'utensils',\n 'utensil-spoon',\n 'utensil-knife',\n 'utensil-fork',\n 'users-slash',\n 'users-medical',\n 'users-crown',\n 'users-cog',\n 'users-class',\n 'users',\n 'user-visor',\n 'user-unlock',\n 'user-times',\n 'user-tie',\n 'user-tag',\n 'user-slash',\n 'user-shield',\n 'user-secret',\n 'user-robot',\n 'user-plus',\n 'user-nurse',\n 'user-ninja',\n 'user-music',\n 'user-minus',\n 'user-md-chat',\n 'user-md',\n 'user-lock',\n 'user-injured',\n 'user-headset',\n 'user-hard-hat',\n 'user-graduate',\n 'user-friends',\n 'user-edit',\n 'user-crown',\n 'user-cowboy',\n 'user-cog',\n 'user-clock',\n 'user-circle',\n 'user-check',\n 'user-chart',\n 'user-astronaut',\n 'user-alt-slash',\n 'user-alt',\n 'user-alien',\n 'user',\n 'usd-square',\n 'usd-circle',\n 'usb-drive',\n 'upload',\n 'unlock-alt',\n 'unlock',\n 'unlink',\n 'university',\n 'universal-access',\n 'union',\n 'unicorn',\n 'undo-alt',\n 'undo',\n 'underline',\n 'umbrella-beach',\n 'umbrella',\n 'ufo-beam',\n 'ufo',\n 'typewriter',\n 'tv-retro',\n 'tv-music',\n 'tv-alt',\n 'tv',\n 'turtle',\n 'turntable',\n 'turkey',\n 'tty',\n 'tshirt',\n 'trumpet',\n 'truck-ramp',\n 'truck-plow',\n 'truck-pickup',\n 'truck-moving',\n 'truck-monster',\n 'truck-loading',\n 'truck-couch',\n 'truck-container',\n 'truck',\n 'trophy-alt',\n 'trophy',\n 'triangle-music',\n 'triangle',\n 'trees',\n 'tree-palm',\n 'tree-large',\n 'tree-decorated',\n 'tree-christmas',\n 'tree-alt',\n 'tree',\n 'treasure-chest',\n 'trash-undo-alt',\n 'trash-undo',\n 'trash-restore-alt',\n 'trash-restore',\n 'trash-alt',\n 'trash',\n 'transporter-empty',\n 'transporter-3',\n 'transporter-2',\n 'transporter-1',\n 'transporter',\n 'transgender-alt',\n 'transgender',\n 'tram',\n 'train',\n 'trailer',\n 'traffic-light-stop',\n 'traffic-light-slow',\n 'traffic-light-go',\n 'traffic-light',\n 'traffic-cone',\n 'trademark',\n 'tractor',\n 'tornado',\n 'torii-gate',\n 'torah',\n 'toothbrush',\n 'tooth',\n 'tools',\n 'toolbox',\n 'tombstone-alt',\n 'tombstone',\n 'toilet-paper-slash',\n 'toilet-paper-alt',\n 'toilet-paper',\n 'toilet',\n 'toggle-on',\n 'toggle-off',\n 'tired',\n 'tire-rugged',\n 'tire-pressure-warning',\n 'tire-flat',\n 'tire',\n 'tint-slash',\n 'tint',\n 'times-square',\n 'times-octagon',\n 'times-hexagon',\n 'times-circle',\n 'times',\n 'tilde',\n 'ticket-alt',\n 'ticket',\n 'thunderstorm-sun',\n 'thunderstorm-moon',\n 'thunderstorm',\n 'thumbtack',\n 'thumbs-up',\n 'thumbs-down',\n 'theta',\n 'thermometer-three-quarters',\n 'thermometer-quarter',\n 'thermometer-half',\n 'thermometer-full',\n 'thermometer-empty',\n 'thermometer',\n 'theater-masks',\n 'th-list',\n 'th-large',\n 'th',\n 'text-width',\n 'text-size',\n 'text-height',\n 'text',\n 'terminal',\n 'tennis-ball',\n 'tenge',\n 'temperature-up',\n 'temperature-low',\n 'temperature-hot',\n 'temperature-high',\n 'temperature-frigid',\n 'temperature-down',\n 'telescope',\n 'teeth-open',\n 'teeth',\n 'taxi',\n 'tasks-alt',\n 'tasks',\n 'tape',\n 'tanakh',\n 'tally',\n 'tags',\n 'tag',\n 'taco',\n 'tachometer-slowest',\n 'tachometer-slow',\n 'tachometer-fastest',\n 'tachometer-fast',\n 'tachometer-average',\n 'tachometer-alt-slowest',\n 'tachometer-alt-slow',\n 'tachometer-alt-fastest',\n 'tachometer-alt-fast',\n 'tachometer-alt-average',\n 'tachometer-alt',\n 'tachometer',\n 'tablets',\n 'tablet-rugged',\n 'tablet-android-alt',\n 'tablet-android',\n 'tablet-alt',\n 'tablet',\n 'table-tennis',\n 'table',\n 'syringe',\n 'sync-alt',\n 'sync',\n 'synagogue',\n 'swords-laser',\n 'swords',\n 'sword-laser-alt',\n 'sword-laser',\n 'sword',\n 'swimming-pool',\n 'swimmer',\n 'swatchbook',\n 'surprise',\n 'superscript',\n 'sunset',\n 'sunrise',\n 'sunglasses',\n 'sun-haze',\n 'sun-dust',\n 'sun-cloud',\n 'sun',\n 'suitcase-rolling',\n 'suitcase',\n 'subway',\n 'subscript',\n 'stroopwafel',\n 'strikethrough',\n 'stretcher',\n 'street-view',\n 'stream',\n 'store-slash',\n 'store-alt-slash',\n 'store-alt',\n 'store',\n 'stopwatch-20',\n 'stopwatch',\n 'stop-circle',\n 'stop',\n 'stomach',\n 'stocking',\n 'sticky-note',\n 'stethoscope',\n 'step-forward',\n 'step-backward',\n 'steering-wheel',\n 'steak',\n 'starship-freighter',\n 'starship',\n 'stars',\n 'starfighter-alt',\n 'starfighter',\n 'star-shooting',\n 'star-of-life',\n 'star-of-david',\n 'star-half-alt',\n 'star-half',\n 'star-exclamation',\n 'star-christmas',\n 'star-and-crescent',\n 'star',\n 'stamp',\n 'staff',\n 'squirrel',\n 'square-root-alt',\n 'square-root',\n 'square-full',\n 'square',\n 'sprinkler',\n 'spray-can',\n 'splotch',\n 'spinner-third',\n 'spinner',\n 'spider-web',\n 'spider-black-widow',\n 'spider',\n 'spell-check',\n 'speakers',\n 'speaker',\n 'sparkles',\n 'spade',\n 'space-station-moon-alt',\n 'space-station-moon',\n 'space-shuttle',\n 'spa',\n 'soup',\n 'sort-up',\n 'sort-size-up-alt',\n 'sort-size-up',\n 'sort-size-down-alt',\n 'sort-size-down',\n 'sort-shapes-up-alt',\n 'sort-shapes-up',\n 'sort-shapes-down-alt',\n 'sort-shapes-down',\n 'sort-numeric-up-alt',\n 'sort-numeric-up',\n 'sort-numeric-down-alt',\n 'sort-numeric-down',\n 'sort-down',\n 'sort-circle-up',\n 'sort-circle-down',\n 'sort-circle',\n 'sort-amount-up-alt',\n 'sort-amount-up',\n 'sort-amount-down-alt',\n 'sort-amount-down',\n 'sort-alt',\n 'sort-alpha-up-alt',\n 'sort-alpha-up',\n 'sort-alpha-down-alt',\n 'sort-alpha-down',\n 'sort',\n 'solar-system',\n 'solar-panel',\n 'socks',\n 'soap',\n 'snowplow',\n 'snowmobile',\n 'snowman',\n 'snowflakes',\n 'snowflake',\n 'snowboarding',\n 'snow-blowing',\n 'snooze',\n 'snake',\n 'sms',\n 'smoking-ban',\n 'smoking',\n 'smoke',\n 'smog',\n 'smile-wink',\n 'smile-plus',\n 'smile-beam',\n 'smile',\n 'sliders-v-square',\n 'sliders-v',\n 'sliders-h-square',\n 'sliders-h',\n 'sleigh',\n 'sledding',\n 'slash',\n 'skull-crossbones',\n 'skull-cow',\n 'skull',\n 'skiing-nordic',\n 'skiing',\n 'ski-lift',\n 'ski-jump',\n 'skeleton',\n 'skating',\n 'sitemap',\n 'siren-on',\n 'siren',\n 'sink',\n 'sim-card',\n 'signature',\n 'signal-stream',\n 'signal-slash',\n 'signal-alt-slash',\n 'signal-alt-3',\n 'signal-alt-2',\n 'signal-alt-1',\n 'signal-alt',\n 'signal-4',\n 'signal-3',\n 'signal-2',\n 'signal-1',\n 'signal',\n 'sign-out-alt',\n 'sign-out',\n 'sign-language',\n 'sign-in-alt',\n 'sign-in',\n 'sign',\n 'sigma',\n 'sickle',\n 'shuttlecock',\n 'shuttle-van',\n 'shredder',\n 'shower',\n 'shovel-snow',\n 'shovel',\n 'shopping-cart',\n 'shopping-basket',\n 'shopping-bag',\n 'shoe-prints',\n 'shish-kebab',\n 'shipping-timed',\n 'shipping-fast',\n 'ship',\n 'shield-virus',\n 'shield-cross',\n 'shield-check',\n 'shield-alt',\n 'shield',\n 'shekel-sign',\n 'sheep',\n 'share-square',\n 'share-alt-square',\n 'share-alt',\n 'share-all',\n 'share',\n 'shapes',\n 'server',\n 'sensor-smoke',\n 'sensor-on',\n 'sensor-fire',\n 'sensor-alert',\n 'sensor',\n 'send-backward',\n 'send-back',\n 'seedling',\n 'search-plus',\n 'search-minus',\n 'search-location',\n 'search-dollar',\n 'search',\n 'sd-card',\n 'scythe',\n 'scrubber',\n 'scroll-old',\n 'scroll',\n 'screwdriver',\n 'school',\n 'scarf',\n 'scarecrow',\n 'scanner-touchscreen',\n 'scanner-keyboard',\n 'scanner-image',\n 'scanner',\n 'scalpel-path',\n 'scalpel',\n 'saxophone',\n 'sax-hot',\n 'save',\n 'sausage',\n 'satellite-dish',\n 'satellite',\n 'sandwich',\n 'salad',\n 'sad-tear',\n 'sad-cry',\n 'sack-dollar',\n 'sack',\n 'rv',\n 'rupee-sign',\n 'running',\n 'ruler-vertical',\n 'ruler-triangle',\n 'ruler-horizontal',\n 'ruler-combined',\n 'ruler',\n 'ruble-sign',\n 'rss-square',\n 'rss',\n 'router',\n 'route-interstate',\n 'route-highway',\n 'route',\n 'rocket-launch',\n 'rocket',\n 'robot',\n 'road',\n 'rings-wedding',\n 'ring',\n 'ribbon',\n 'retweet-alt',\n 'retweet',\n 'restroom',\n 'republican',\n 'reply-all',\n 'reply',\n 'repeat-alt',\n 'repeat-1-alt',\n 'repeat-1',\n 'repeat',\n 'remove-format',\n 'registered',\n 'refrigerator',\n 'redo-alt',\n 'redo',\n 'recycle',\n 'rectangle-wide',\n 'rectangle-portrait',\n 'rectangle-landscape',\n 'record-vinyl',\n 'receipt',\n 'raygun',\n 'random',\n 'ramp-loading',\n 'ram',\n 'raindrops',\n 'rainbow',\n 'radio-alt',\n 'radio',\n 'radiation-alt',\n 'radiation',\n 'radar',\n 'racquet',\n 'rabbit-fast',\n 'rabbit',\n 'quran',\n 'quote-right',\n 'quote-left',\n 'quidditch',\n 'question-square',\n 'question-circle',\n 'question',\n 'qrcode',\n 'puzzle-piece',\n 'pumpkin',\n 'pump-soap',\n 'pump-medical',\n 'projector',\n 'project-diagram',\n 'procedures',\n 'print-slash',\n 'print-search',\n 'print',\n 'presentation',\n 'prescription-bottle-alt',\n 'prescription-bottle',\n 'prescription',\n 'praying-hands',\n 'pray',\n 'power-off',\n 'pound-sign',\n 'portrait',\n 'portal-exit',\n 'portal-enter',\n 'popcorn',\n 'poop',\n 'poo-storm',\n 'poo',\n 'poll-people',\n 'poll-h',\n 'poll',\n 'police-box',\n 'podium-star',\n 'podium',\n 'podcast',\n 'plus-square',\n 'plus-octagon',\n 'plus-hexagon',\n 'plus-circle',\n 'plus',\n 'plug',\n 'play-circle',\n 'play',\n 'planet-ringed',\n 'planet-moon',\n 'plane-slash',\n 'plane-departure',\n 'plane-arrival',\n 'plane-alt',\n 'plane',\n 'place-of-worship',\n 'pizza-slice',\n 'pizza',\n 'pills',\n 'piggy-bank',\n 'pig',\n 'pie',\n 'piano-keyboard',\n 'piano',\n 'pi',\n 'photo-video',\n 'phone-volume',\n 'phone-square-alt',\n 'phone-square',\n 'phone-slash',\n 'phone-rotary',\n 'phone-plus',\n 'phone-office',\n 'phone-laptop',\n 'phone-alt',\n 'phone',\n 'person-sign',\n 'person-dolly-empty',\n 'person-dolly',\n 'person-carry',\n 'person-booth',\n 'percentage',\n 'percent',\n 'pepper-hot',\n 'people-carry',\n 'people-arrows',\n 'pennant',\n 'pencil-ruler',\n 'pencil-paintbrush',\n 'pencil-alt',\n 'pencil',\n 'pen-square',\n 'pen-nib',\n 'pen-fancy',\n 'pen-alt',\n 'pen',\n 'pegasus',\n 'peace',\n 'paw-claws',\n 'paw-alt',\n 'paw',\n 'pause-circle',\n 'pause',\n 'paste',\n 'pastafarianism',\n 'passport',\n 'parking-slash',\n 'parking-circle-slash',\n 'parking-circle',\n 'parking',\n 'paragraph-rtl',\n 'paragraph',\n 'parachute-box',\n 'paperclip',\n 'paper-plane',\n 'pallet-alt',\n 'pallet',\n 'palette',\n 'paint-roller',\n 'paint-brush-alt',\n 'paint-brush',\n 'pager',\n 'page-break',\n 'overline',\n 'oven',\n 'outlet',\n 'outdent',\n 'otter',\n 'ornament',\n 'omega',\n 'om',\n 'oil-temp',\n 'oil-can',\n 'octagon',\n 'object-ungroup',\n 'object-group',\n 'notes-medical',\n 'not-equal',\n 'newspaper',\n 'neuter',\n 'network-wired',\n 'narwhal',\n 'music-slash',\n 'music-alt-slash',\n 'music-alt',\n 'music',\n 'mug-tea',\n 'mug-marshmallows',\n 'mug-hot',\n 'mug',\n 'mp3-player',\n 'mouse-pointer',\n 'mouse-alt',\n 'mouse',\n 'mountains',\n 'mountain',\n 'motorcycle',\n 'mosque',\n 'mortar-pestle',\n 'moon-stars',\n 'moon-cloud',\n 'moon',\n 'monument',\n 'monkey',\n 'monitor-heart-rate',\n 'money-check-edit-alt',\n 'money-check-edit',\n 'money-check-alt',\n 'money-check',\n 'money-bill-wave-alt',\n 'money-bill-wave',\n 'money-bill-alt',\n 'money-bill',\n 'mobile-android-alt',\n 'mobile-android',\n 'mobile-alt',\n 'mobile',\n 'mitten',\n 'mistletoe',\n 'minus-square',\n 'minus-octagon',\n 'minus-hexagon',\n 'minus-circle',\n 'minus',\n 'mind-share',\n 'microwave',\n 'microscope',\n 'microphone-stand',\n 'microphone-slash',\n 'microphone-alt-slash',\n 'microphone-alt',\n 'microphone',\n 'microchip',\n 'meteor',\n 'mercury',\n 'menorah',\n 'memory',\n 'meh-rolling-eyes',\n 'meh-blank',\n 'meh',\n 'megaphone',\n 'medkit',\n 'medal',\n 'meat',\n 'mask',\n 'mars-stroke-v',\n 'mars-stroke-h',\n 'mars-stroke',\n 'mars-double',\n 'mars',\n 'marker',\n 'map-signs',\n 'map-pin',\n 'map-marker-times',\n 'map-marker-smile',\n 'map-marker-slash',\n 'map-marker-question',\n 'map-marker-plus',\n 'map-marker-minus',\n 'map-marker-exclamation',\n 'map-marker-edit',\n 'map-marker-check',\n 'map-marker-alt-slash',\n 'map-marker-alt',\n 'map-marker',\n 'map-marked-alt',\n 'map-marked',\n 'map',\n 'mandolin',\n 'male',\n 'mailbox',\n 'mail-bulk',\n 'magnet',\n 'magic',\n 'mace',\n 'lungs-virus',\n 'lungs',\n 'luggage-cart',\n 'luchador',\n 'low-vision',\n 'loveseat',\n 'long-arrow-up',\n 'long-arrow-right',\n 'long-arrow-left',\n 'long-arrow-down',\n 'long-arrow-alt-up',\n 'long-arrow-alt-right',\n 'long-arrow-alt-left',\n 'long-arrow-alt-down',\n 'lock-open-alt',\n 'lock-open',\n 'lock-alt',\n 'lock',\n 'location-slash',\n 'location-circle',\n 'location-arrow',\n 'location',\n 'list-ul',\n 'list-ol',\n 'list-music',\n 'list-alt',\n 'list',\n 'lira-sign',\n 'lips',\n 'link',\n 'line-height',\n 'line-columns',\n 'lights-holiday',\n 'lightbulb-slash',\n 'lightbulb-on',\n 'lightbulb-exclamation',\n 'lightbulb-dollar',\n 'lightbulb',\n 'light-switch-on',\n 'light-switch-off',\n 'light-switch',\n 'light-ceiling',\n 'life-ring',\n 'level-up-alt',\n 'level-up',\n 'level-down-alt',\n 'level-down',\n 'less-than-equal',\n 'less-than',\n 'lemon',\n 'leaf-oak',\n 'leaf-maple',\n 'leaf-heart',\n 'leaf',\n 'layer-plus',\n 'layer-minus',\n 'layer-group',\n 'laugh-wink',\n 'laugh-squint',\n 'laugh-beam',\n 'laugh',\n 'lasso',\n 'laptop-medical',\n 'laptop-house',\n 'laptop-code',\n 'laptop',\n 'language',\n 'landmark-alt',\n 'landmark',\n 'lamp-floor',\n 'lamp-desk',\n 'lamp',\n 'lambda',\n 'knife-kitchen',\n 'kiwi-bird',\n 'kite',\n 'kiss-wink-heart',\n 'kiss-beam',\n 'kiss',\n 'kidneys',\n 'khanda',\n 'keynote',\n 'keyboard',\n 'key-skeleton',\n 'key',\n 'kerning',\n 'kazoo',\n 'kaaba',\n 'jug',\n 'joystick',\n 'journal-whills',\n 'joint',\n 'jedi',\n 'jack-o-lantern',\n 'italic',\n 'island-tropical',\n 'inventory',\n 'intersection',\n 'integral',\n 'inhaler',\n 'info-square',\n 'info-circle',\n 'info',\n 'infinity',\n 'industry-alt',\n 'industry',\n 'indent',\n 'inbox-out',\n 'inbox-in',\n 'inbox',\n 'images',\n 'image-polaroid',\n 'image',\n 'igloo',\n 'id-card-alt',\n 'id-card',\n 'id-badge',\n 'icons-alt',\n 'icons',\n 'icicles',\n 'ice-skate',\n 'ice-cream',\n 'i-cursor',\n 'hurricane',\n 'humidity',\n 'hryvnia',\n 'house-user',\n 'house-signal',\n 'house-return',\n 'house-night',\n 'house-leave',\n 'house-flood',\n 'house-day',\n 'house-damage',\n 'house',\n 'hourglass-start',\n 'hourglass-half',\n 'hourglass-end',\n 'hourglass',\n 'hotel',\n 'hotdog',\n 'hot-tub',\n 'hospitals',\n 'hospital-user',\n 'hospital-symbol',\n 'hospital-alt',\n 'hospital',\n 'horse-saddle',\n 'horse-head',\n 'horse',\n 'horizontal-rule',\n 'hood-cloak',\n 'home-lg-alt',\n 'home-lg',\n 'home-heart',\n 'home-alt',\n 'home',\n 'holly-berry',\n 'hockey-sticks',\n 'hockey-puck',\n 'hockey-mask',\n 'history',\n 'hippo',\n 'hiking',\n 'highlighter',\n 'hexagon',\n 'helmet-battle',\n 'helicopter',\n 'heat',\n 'heartbeat',\n 'heart-square',\n 'heart-rate',\n 'heart-circle',\n 'heart-broken',\n 'heart',\n 'headset',\n 'headphones-alt',\n 'headphones',\n 'heading',\n 'head-vr',\n 'head-side-virus',\n 'head-side-medical',\n 'head-side-mask',\n 'head-side-headphones',\n 'head-side-cough-slash',\n 'head-side-cough',\n 'head-side-brain',\n 'head-side',\n 'hdd',\n 'hat-wizard',\n 'hat-witch',\n 'hat-winter',\n 'hat-santa',\n 'hat-cowboy-side',\n 'hat-cowboy',\n 'hat-chef',\n 'hashtag',\n 'hard-hat',\n 'hanukiah',\n 'handshake-slash',\n 'handshake-alt-slash',\n 'handshake-alt',\n 'handshake',\n 'hands-wash',\n 'hands-usd',\n 'hands-helping',\n 'hands-heart',\n 'hands',\n 'hand-spock',\n 'hand-sparkles',\n 'hand-scissors',\n 'hand-rock',\n 'hand-receiving',\n 'hand-pointer',\n 'hand-point-up',\n 'hand-point-right',\n 'hand-point-left',\n 'hand-point-down',\n 'hand-peace',\n 'hand-paper',\n 'hand-middle-finger',\n 'hand-lizard',\n 'hand-holding-water',\n 'hand-holding-usd',\n 'hand-holding-seedling',\n 'hand-holding-medical',\n 'hand-holding-magic',\n 'hand-holding-heart',\n 'hand-holding-box',\n 'hand-holding',\n 'hand-heart',\n 'hamsa',\n 'hammer-war',\n 'hammer',\n 'hamburger',\n 'h4',\n 'h3',\n 'h2',\n 'h1',\n 'h-square',\n 'guitars',\n 'guitar-electric',\n 'guitar',\n 'grip-vertical',\n 'grip-lines-vertical',\n 'grip-lines',\n 'grip-horizontal',\n 'grin-wink',\n 'grin-tongue-wink',\n 'grin-tongue-squint',\n 'grin-tongue',\n 'grin-tears',\n 'grin-stars',\n 'grin-squint-tears',\n 'grin-squint',\n 'grin-hearts',\n 'grin-beam-sweat',\n 'grin-beam',\n 'grin-alt',\n 'grin',\n 'grimace',\n 'greater-than-equal',\n 'greater-than',\n 'gramophone',\n 'graduation-cap',\n 'gopuram',\n 'golf-club',\n 'golf-ball',\n 'globe-stand',\n 'globe-snow',\n 'globe-europe',\n 'globe-asia',\n 'globe-americas',\n 'globe-africa',\n 'globe',\n 'glasses-alt',\n 'glasses',\n 'glass-whiskey-rocks',\n 'glass-whiskey',\n 'glass-martini-alt',\n 'glass-martini',\n 'glass-citrus',\n 'glass-cheers',\n 'glass-champagne',\n 'glass',\n 'gingerbread-man',\n 'gifts',\n 'gift-card',\n 'gift',\n 'ghost',\n 'genderless',\n 'gem',\n 'gavel',\n 'gas-pump-slash',\n 'gas-pump',\n 'garage-open',\n 'garage-car',\n 'garage',\n 'gamepad-alt',\n 'gamepad',\n 'game-console-handheld',\n 'game-board-alt',\n 'game-board',\n 'galaxy',\n 'futbol',\n 'funnel-dollar',\n 'function',\n 'frown-open',\n 'frown',\n 'frosty-head',\n 'frog',\n 'french-fries',\n 'fragile',\n 'forward',\n 'forklift',\n 'football-helmet',\n 'football-ball',\n 'font-case',\n 'font',\n 'folders',\n 'folder-upload',\n 'folder-tree',\n 'folder-times',\n 'folder-plus',\n 'folder-open',\n 'folder-minus',\n 'folder-download',\n 'folder',\n 'fog',\n 'flux-capacitor',\n 'flute',\n 'flushed',\n 'flower-tulip',\n 'flower-daffodil',\n 'flower',\n 'flask-potion',\n 'flask-poison',\n 'flask',\n 'flashlight',\n 'flame',\n 'flag-usa',\n 'flag-checkered',\n 'flag-alt',\n 'flag',\n 'fist-raised',\n 'fish-cooked',\n 'fish',\n 'first-aid',\n 'fireplace',\n 'fire-smoke',\n 'fire-extinguisher',\n 'fire-alt',\n 'fire',\n 'fingerprint',\n 'filter',\n 'film-canister',\n 'film-alt',\n 'film',\n 'fill-drip',\n 'fill',\n 'files-medical',\n 'file-word',\n 'file-video',\n 'file-user',\n 'file-upload',\n 'file-times',\n 'file-spreadsheet',\n 'file-signature',\n 'file-search',\n 'file-prescription',\n 'file-powerpoint',\n 'file-plus',\n 'file-pdf',\n 'file-music',\n 'file-minus',\n 'file-medical-alt',\n 'file-medical',\n 'file-invoice-dollar',\n 'file-invoice',\n 'file-import',\n 'file-image',\n 'file-export',\n 'file-exclamation',\n 'file-excel',\n 'file-edit',\n 'file-download',\n 'file-csv',\n 'file-contract',\n 'file-code',\n 'file-check',\n 'file-chart-pie',\n 'file-chart-line',\n 'file-certificate',\n 'file-audio',\n 'file-archive',\n 'file-alt',\n 'file',\n 'fighter-jet',\n 'field-hockey',\n 'female',\n 'feather-alt',\n 'feather',\n 'fax',\n 'faucet-drip',\n 'faucet',\n 'fast-forward',\n 'fast-backward',\n 'farm',\n 'fan-table',\n 'fan',\n 'eye-slash',\n 'eye-evil',\n 'eye-dropper',\n 'eye',\n 'external-link-square-alt',\n 'external-link-square',\n 'external-link-alt',\n 'external-link',\n 'expand-wide',\n 'expand-arrows-alt',\n 'expand-arrows',\n 'expand-alt',\n 'expand',\n 'exclamation-triangle',\n 'exclamation-square',\n 'exclamation-circle',\n 'exclamation',\n 'exchange-alt',\n 'exchange',\n 'euro-sign',\n 'ethernet',\n 'eraser',\n 'equals',\n 'envelope-square',\n 'envelope-open-text',\n 'envelope-open-dollar',\n 'envelope-open',\n 'envelope',\n 'engine-warning',\n 'empty-set',\n 'ellipsis-v-alt',\n 'ellipsis-v',\n 'ellipsis-h-alt',\n 'ellipsis-h',\n 'elephant',\n 'eject',\n 'egg-fried',\n 'egg',\n 'edit',\n 'eclipse-alt',\n 'eclipse',\n 'ear-muffs',\n 'ear',\n 'dungeon',\n 'dumpster-fire',\n 'dumpster',\n 'dumbbell',\n 'duck',\n 'dryer-alt',\n 'dryer',\n 'drumstick-bite',\n 'drumstick',\n 'drum-steelpan',\n 'drum',\n 'drone-alt',\n 'drone',\n 'dreidel',\n 'draw-square',\n 'draw-polygon',\n 'draw-circle',\n 'dragon',\n 'drafting-compass',\n 'download',\n 'dove',\n 'dot-circle',\n 'door-open',\n 'door-closed',\n 'donate',\n 'dolly-flatbed-empty',\n 'dolly-flatbed-alt',\n 'dolly-flatbed',\n 'dolly-empty',\n 'dolly',\n 'dollar-sign',\n 'dog-leashed',\n 'dog',\n 'do-not-enter',\n 'dna',\n 'dizzy',\n 'divide',\n 'disease',\n 'disc-drive',\n 'directions',\n 'diploma',\n 'digital-tachograph',\n 'digging',\n 'dice-two',\n 'dice-three',\n 'dice-six',\n 'dice-one',\n 'dice-four',\n 'dice-five',\n 'dice-d8',\n 'dice-d6',\n 'dice-d4',\n 'dice-d20',\n 'dice-d12',\n 'dice-d10',\n 'dice',\n 'diamond',\n 'diagnoses',\n 'dharmachakra',\n 'dewpoint',\n 'desktop-alt',\n 'desktop',\n 'democrat',\n 'deer-rudolph',\n 'deer',\n 'debug',\n 'deaf',\n 'database',\n 'dagger',\n 'cut',\n 'curling',\n 'cubes',\n 'cube',\n 'crutches',\n 'crutch',\n 'crown',\n 'crow',\n 'crosshairs',\n 'cross',\n 'crop-alt',\n 'crop',\n 'croissant',\n 'cricket',\n 'credit-card-front',\n 'credit-card-blank',\n 'credit-card',\n 'cowbell-more',\n 'cowbell',\n 'cow',\n 'couch',\n 'corn',\n 'copyright',\n 'copy',\n 'cookie-bite',\n 'cookie',\n 'conveyor-belt-alt',\n 'conveyor-belt',\n 'container-storage',\n 'construction',\n 'concierge-bell',\n 'computer-speaker',\n 'computer-classic',\n 'compress-wide',\n 'compress-arrows-alt',\n 'compress-alt',\n 'compress',\n 'compass-slash',\n 'compass',\n 'compact-disc',\n 'comments-dollar',\n 'comments-alt-dollar',\n 'comments-alt',\n 'comments',\n 'comment-times',\n 'comment-smile',\n 'comment-slash',\n 'comment-plus',\n 'comment-music',\n 'comment-minus',\n 'comment-medical',\n 'comment-lines',\n 'comment-exclamation',\n 'comment-edit',\n 'comment-dots',\n 'comment-dollar',\n 'comment-check',\n 'comment-alt-times',\n 'comment-alt-smile',\n 'comment-alt-slash',\n 'comment-alt-plus',\n 'comment-alt-music',\n 'comment-alt-minus',\n 'comment-alt-medical',\n 'comment-alt-lines',\n 'comment-alt-exclamation',\n 'comment-alt-edit',\n 'comment-alt-dots',\n 'comment-alt-dollar',\n 'comment-alt-check',\n 'comment-alt',\n 'comment',\n 'comet',\n 'columns',\n 'coins',\n 'coin',\n 'cogs',\n 'cog',\n 'coffin-cross',\n 'coffin',\n 'coffee-togo',\n 'coffee-pot',\n 'coffee',\n 'code-merge',\n 'code-commit',\n 'code-branch',\n 'code',\n 'cocktail',\n 'club',\n 'clouds-sun',\n 'clouds-moon',\n 'clouds',\n 'cloud-upload-alt',\n 'cloud-upload',\n 'cloud-sun-rain',\n 'cloud-sun',\n 'cloud-snow',\n 'cloud-sleet',\n 'cloud-showers-heavy',\n 'cloud-showers',\n 'cloud-rainbow',\n 'cloud-rain',\n 'cloud-music',\n 'cloud-moon-rain',\n 'cloud-moon',\n 'cloud-meatball',\n 'cloud-hail-mixed',\n 'cloud-hail',\n 'cloud-drizzle',\n 'cloud-download-alt',\n 'cloud-download',\n 'cloud',\n 'closed-captioning',\n 'clone',\n 'clock',\n 'clipboard-user',\n 'clipboard-prescription',\n 'clipboard-list-check',\n 'clipboard-list',\n 'clipboard-check',\n 'clipboard',\n 'clinic-medical',\n 'claw-marks',\n 'clarinet',\n 'city',\n 'circle-notch',\n 'circle',\n 'church',\n 'chimney',\n 'child',\n 'chevron-up',\n 'chevron-square-up',\n 'chevron-square-right',\n 'chevron-square-left',\n 'chevron-square-down',\n 'chevron-right',\n 'chevron-left',\n 'chevron-down',\n 'chevron-double-up',\n 'chevron-double-right',\n 'chevron-double-left',\n 'chevron-double-down',\n 'chevron-circle-up',\n 'chevron-circle-right',\n 'chevron-circle-left',\n 'chevron-circle-down',\n 'chess-rook-alt',\n 'chess-rook',\n 'chess-queen-alt',\n 'chess-queen',\n 'chess-pawn-alt',\n 'chess-pawn',\n 'chess-knight-alt',\n 'chess-knight',\n 'chess-king-alt',\n 'chess-king',\n 'chess-clock-alt',\n 'chess-clock',\n 'chess-board',\n 'chess-bishop-alt',\n 'chess-bishop',\n 'chess',\n 'cheeseburger',\n 'cheese-swiss',\n 'cheese',\n 'check-square',\n 'check-double',\n 'check-circle',\n 'check',\n 'chart-scatter',\n 'chart-pie-alt',\n 'chart-pie',\n 'chart-network',\n 'chart-line-down',\n 'chart-line',\n 'chart-bar',\n 'chart-area',\n 'charging-station',\n 'chalkboard-teacher',\n 'chalkboard',\n 'chair-office',\n 'chair',\n 'certificate',\n 'cctv',\n 'cauldron',\n 'cat-space',\n 'cat',\n 'cassette-tape',\n 'cash-register',\n 'cart-plus',\n 'cart-arrow-down',\n 'cars',\n 'carrot',\n 'caret-up',\n 'caret-square-up',\n 'caret-square-right',\n 'caret-square-left',\n 'caret-square-down',\n 'caret-right',\n 'caret-left',\n 'caret-down',\n 'caret-circle-up',\n 'caret-circle-right',\n 'caret-circle-left',\n 'caret-circle-down',\n 'caravan-alt',\n 'caravan',\n 'car-wash',\n 'car-tilt',\n 'car-side',\n 'car-mechanic',\n 'car-garage',\n 'car-crash',\n 'car-bus',\n 'car-bump',\n 'car-building',\n 'car-battery',\n 'car-alt',\n 'car',\n 'capsules',\n 'cannabis',\n 'candy-corn',\n 'candy-cane',\n 'candle-holder',\n 'campground',\n 'campfire',\n 'camera-retro',\n 'camera-polaroid',\n 'camera-movie',\n 'camera-home',\n 'camera-alt',\n 'camera',\n 'camcorder',\n 'calendar-week',\n 'calendar-times',\n 'calendar-star',\n 'calendar-plus',\n 'calendar-minus',\n 'calendar-exclamation',\n 'calendar-edit',\n 'calendar-day',\n 'calendar-check',\n 'calendar-alt',\n 'calendar',\n 'calculator-alt',\n 'calculator',\n 'cactus',\n 'cabinet-filing',\n 'business-time',\n 'bus-school',\n 'bus-alt',\n 'bus',\n 'burrito',\n 'burn',\n 'burger-soda',\n 'bullseye-pointer',\n 'bullseye-arrow',\n 'bullseye',\n 'bullhorn',\n 'building',\n 'bug',\n 'brush',\n 'browser',\n 'broom',\n 'broadcast-tower',\n 'bring-front',\n 'bring-forward',\n 'briefcase-medical',\n 'briefcase',\n 'bread-slice',\n 'bread-loaf',\n 'brain',\n 'braille',\n 'brackets-curly',\n 'brackets',\n 'boxing-glove',\n 'boxes-alt',\n 'boxes',\n 'box-usd',\n 'box-up',\n 'box-tissue',\n 'box-open',\n 'box-heart',\n 'box-full',\n 'box-fragile',\n 'box-check',\n 'box-ballot',\n 'box-alt',\n 'box',\n 'bowling-pins',\n 'bowling-ball',\n 'bow-arrow',\n 'border-top',\n 'border-style-alt',\n 'border-style',\n 'border-right',\n 'border-outer',\n 'border-none',\n 'border-left',\n 'border-inner',\n 'border-center-v',\n 'border-center-h',\n 'border-bottom',\n 'border-all',\n 'booth-curtain',\n 'boot',\n 'boombox',\n 'books-medical',\n 'books',\n 'bookmark',\n 'book-user',\n 'book-spells',\n 'book-reader',\n 'book-open',\n 'book-medical',\n 'book-heart',\n 'book-dead',\n 'book-alt',\n 'book',\n 'bong',\n 'bone-break',\n 'bone',\n 'bomb',\n 'bolt',\n 'bold',\n 'blog',\n 'blinds-raised',\n 'blinds-open',\n 'blinds',\n 'blind',\n 'blender-phone',\n 'blender',\n 'blanket',\n 'birthday-cake',\n 'biohazard',\n 'binoculars',\n 'biking-mountain',\n 'biking',\n 'bicycle',\n 'bible',\n 'bezier-curve',\n 'betamax',\n 'bells',\n 'bell-slash',\n 'bell-school-slash',\n 'bell-school',\n 'bell-plus',\n 'bell-on',\n 'bell-exclamation',\n 'bell',\n 'beer',\n 'bed-empty',\n 'bed-bunk',\n 'bed-alt',\n 'bed',\n 'battery-three-quarters',\n 'battery-slash',\n 'battery-quarter',\n 'battery-half',\n 'battery-full',\n 'battery-empty',\n 'battery-bolt',\n 'bath',\n 'bat',\n 'basketball-hoop',\n 'basketball-ball',\n 'baseball-ball',\n 'baseball',\n 'bars',\n 'barcode-scan',\n 'barcode-read',\n 'barcode-alt',\n 'barcode',\n 'banjo',\n 'band-aid',\n 'ban',\n 'ballot-check',\n 'ballot',\n 'ball-pile',\n 'balance-scale-right',\n 'balance-scale-left',\n 'balance-scale',\n 'bahai',\n 'bags-shopping',\n 'badger-honey',\n 'badge-sheriff',\n 'badge-percent',\n 'badge-dollar',\n 'badge-check',\n 'badge',\n 'bacterium',\n 'bacteria',\n 'bacon',\n 'backward',\n 'backspace',\n 'backpack',\n 'baby-carriage',\n 'baby',\n 'axe-battle',\n 'axe',\n 'award',\n 'audio-description',\n 'atom-alt',\n 'atom',\n 'atlas',\n 'at',\n 'asterisk',\n 'assistive-listening-systems',\n 'arrows-v',\n 'arrows-h',\n 'arrows-alt-v',\n 'arrows-alt-h',\n 'arrows-alt',\n 'arrows',\n 'arrow-up',\n 'arrow-to-top',\n 'arrow-to-right',\n 'arrow-to-left',\n 'arrow-to-bottom',\n 'arrow-square-up',\n 'arrow-square-right',\n 'arrow-square-left',\n 'arrow-square-down',\n 'arrow-right',\n 'arrow-left',\n 'arrow-from-top',\n 'arrow-from-right',\n 'arrow-from-left',\n 'arrow-from-bottom',\n 'arrow-down',\n 'arrow-circle-up',\n 'arrow-circle-right',\n 'arrow-circle-left',\n 'arrow-circle-down',\n 'arrow-alt-up',\n 'arrow-alt-to-top',\n 'arrow-alt-to-right',\n 'arrow-alt-to-left',\n 'arrow-alt-to-bottom',\n 'arrow-alt-square-up',\n 'arrow-alt-square-right',\n 'arrow-alt-square-left',\n 'arrow-alt-square-down',\n 'arrow-alt-right',\n 'arrow-alt-left',\n 'arrow-alt-from-top',\n 'arrow-alt-from-right',\n 'arrow-alt-from-left',\n 'arrow-alt-from-bottom',\n 'arrow-alt-down',\n 'arrow-alt-circle-up',\n 'arrow-alt-circle-right',\n 'arrow-alt-circle-left',\n 'arrow-alt-circle-down',\n 'archway',\n 'archive',\n 'apple-crate',\n 'apple-alt',\n 'ankh',\n 'angry',\n 'angle-up',\n 'angle-right',\n 'angle-left',\n 'angle-down',\n 'angle-double-up',\n 'angle-double-right',\n 'angle-double-left',\n 'angle-double-down',\n 'angel',\n 'anchor',\n 'analytics',\n 'amp-guitar',\n 'american-sign-language-interpreting',\n 'ambulance',\n 'allergies',\n 'align-slash',\n 'align-right',\n 'align-left',\n 'align-justify',\n 'align-center',\n 'alien-monster',\n 'alien',\n 'alicorn',\n 'album-collection',\n 'album',\n 'alarm-snooze',\n 'alarm-plus',\n 'alarm-exclamation',\n 'alarm-clock',\n 'air-freshener',\n 'air-conditioner',\n 'adjust',\n 'address-card',\n 'address-book',\n 'ad',\n 'acorn',\n 'abacus'\n];\n\nexport type FontAwesomeIcon = (typeof FontAwesomeIcons)[number];\n\nexport const FontAwesomeFreeSolidIcons: FontAwesomeIcon[] = [\n 'yin-yang',\n 'yen-sign',\n 'x-ray',\n 'wrench',\n 'won-sign',\n 'wine-glass-alt',\n 'wine-glass',\n 'wine-bottle',\n 'window-restore',\n 'window-minimize',\n 'window-maximize',\n 'window-close',\n 'wind',\n 'wifi',\n 'wheelchair',\n 'weight-hanging',\n 'weight',\n 'wave-square',\n 'water',\n 'warehouse',\n 'wallet',\n 'walking',\n 'vr-cardboard',\n 'vote-yea',\n 'volume-up',\n 'volume-off',\n 'volume-mute',\n 'volume-down',\n 'volleyball-ball',\n 'voicemail',\n 'viruses',\n 'virus-slash',\n 'virus',\n 'vihara',\n 'video-slash',\n 'video',\n 'vials',\n 'vial',\n 'vest-patches',\n 'vest',\n 'venus-mars',\n 'venus-double',\n 'venus',\n 'vector-square',\n 'utensils',\n 'utensil-spoon',\n 'users-slash',\n 'users-cog',\n 'users',\n 'user-times',\n 'user-tie',\n 'user-tag',\n 'user-slash',\n 'user-shield',\n 'user-secret',\n 'user-plus',\n 'user-nurse',\n 'user-ninja',\n 'user-minus',\n 'user-md',\n 'user-lock',\n 'user-injured',\n 'user-graduate',\n 'user-friends',\n 'user-edit',\n 'user-cog',\n 'user-clock',\n 'user-circle',\n 'user-check',\n 'user-astronaut',\n 'user-alt-slash',\n 'user-alt',\n 'user',\n 'upload',\n 'unlock-alt',\n 'unlock',\n 'unlink',\n 'university',\n 'universal-access',\n 'undo-alt',\n 'undo',\n 'underline',\n 'umbrella-beach',\n 'umbrella',\n 'tv',\n 'tty',\n 'tshirt',\n 'truck-pickup',\n 'truck-moving',\n 'truck-monster',\n 'truck-loading',\n 'truck',\n 'trophy',\n 'tree',\n 'trash-restore-alt',\n 'trash-restore',\n 'trash-alt',\n 'trash',\n 'transgender-alt',\n 'transgender',\n 'tram',\n 'train',\n 'trailer',\n 'traffic-light',\n 'trademark',\n 'tractor',\n 'torii-gate',\n 'torah',\n 'tooth',\n 'tools',\n 'toolbox',\n 'toilet-paper-slash',\n 'toilet-paper',\n 'toilet',\n 'toggle-on',\n 'toggle-off',\n 'tired',\n 'tint-slash',\n 'tint',\n 'times-circle',\n 'times',\n 'ticket-alt',\n 'thumbtack',\n 'thumbs-up',\n 'thumbs-down',\n 'thermometer-three-quarters',\n 'thermometer-quarter',\n 'thermometer-half',\n 'thermometer-full',\n 'thermometer-empty',\n 'thermometer',\n 'theater-masks',\n 'th-list',\n 'th-large',\n 'th',\n 'text-width',\n 'text-height',\n 'terminal',\n 'tenge',\n 'temperature-low',\n 'temperature-high',\n 'teeth-open',\n 'teeth',\n 'taxi',\n 'tasks',\n 'tape',\n 'tags',\n 'tag',\n 'tachometer-alt',\n 'tablets',\n 'tablet-alt',\n 'tablet',\n 'table-tennis',\n 'table',\n 'syringe',\n 'sync-alt',\n 'sync',\n 'synagogue',\n 'swimming-pool',\n 'swimmer',\n 'swatchbook',\n 'surprise',\n 'superscript',\n 'sun',\n 'suitcase-rolling',\n 'suitcase',\n 'subway',\n 'subscript',\n 'stroopwafel',\n 'strikethrough',\n 'street-view',\n 'stream',\n 'store-slash',\n 'store-alt-slash',\n 'store-alt',\n 'store',\n 'stopwatch-20',\n 'stopwatch',\n 'stop-circle',\n 'stop',\n 'sticky-note',\n 'stethoscope',\n 'step-forward',\n 'step-backward',\n 'star-of-life',\n 'star-of-david',\n 'star-half-alt',\n 'star-half',\n 'star-and-crescent',\n 'star',\n 'stamp',\n 'square-root-alt',\n 'square-full',\n 'square',\n 'spray-can',\n 'splotch',\n 'spinner',\n 'spider',\n 'spell-check',\n 'space-shuttle',\n 'spa',\n 'sort-up',\n 'sort-numeric-up-alt',\n 'sort-numeric-up',\n 'sort-numeric-down-alt',\n 'sort-numeric-down',\n 'sort-down',\n 'sort-amount-up-alt',\n 'sort-amount-up',\n 'sort-amount-down-alt',\n 'sort-amount-down',\n 'sort-alpha-up-alt',\n 'sort-alpha-up',\n 'sort-alpha-down-alt',\n 'sort-alpha-down',\n 'sort',\n 'solar-panel',\n 'socks',\n 'soap',\n 'snowplow',\n 'snowman',\n 'snowflake',\n 'snowboarding',\n 'sms',\n 'smoking-ban',\n 'smoking',\n 'smog',\n 'smile-wink',\n 'smile-beam',\n 'smile',\n 'sliders-h',\n 'sleigh',\n 'slash',\n 'skull-crossbones',\n 'skull',\n 'skiing-nordic',\n 'skiing',\n 'skating',\n 'sitemap',\n 'sink',\n 'sim-card',\n 'signature',\n 'signal',\n 'sign-out-alt',\n 'sign-language',\n 'sign-in-alt',\n 'sign',\n 'shuttle-van',\n 'shower',\n 'shopping-cart',\n 'shopping-basket',\n 'shopping-bag',\n 'shoe-prints',\n 'shipping-fast',\n 'ship',\n 'shield-virus',\n 'shield-alt',\n 'shekel-sign',\n 'share-square',\n 'share-alt-square',\n 'share-alt',\n 'share',\n 'shapes',\n 'server',\n 'seedling',\n 'search-plus',\n 'search-minus',\n 'search-location',\n 'search-dollar',\n 'search',\n 'sd-card',\n 'scroll',\n 'screwdriver',\n 'school',\n 'save',\n 'satellite-dish',\n 'satellite',\n 'sad-tear',\n 'sad-cry',\n 'rupee-sign',\n 'running',\n 'ruler-vertical',\n 'ruler-horizontal',\n 'ruler-combined',\n 'ruler',\n 'ruble-sign',\n 'rss-square',\n 'rss',\n 'route',\n 'rocket',\n 'robot',\n 'road',\n 'ring',\n 'ribbon',\n 'retweet',\n 'restroom',\n 'republican',\n 'reply-all',\n 'reply',\n 'remove-format',\n 'registered',\n 'redo-alt',\n 'redo',\n 'recycle',\n 'record-vinyl',\n 'receipt',\n 'random',\n 'rainbow',\n 'radiation-alt',\n 'radiation',\n 'quran',\n 'quote-right',\n 'quote-left',\n 'quidditch',\n 'question-circle',\n 'question',\n 'qrcode',\n 'puzzle-piece',\n 'pump-soap',\n 'pump-medical',\n 'project-diagram',\n 'procedures',\n 'print',\n 'prescription-bottle-alt',\n 'prescription-bottle',\n 'prescription',\n 'praying-hands',\n 'pray',\n 'power-off',\n 'pound-sign',\n 'portrait',\n 'poop',\n 'poo-storm',\n 'poo',\n 'poll-h',\n 'poll',\n 'podcast',\n 'plus-square',\n 'plus-circle',\n 'plus',\n 'plug',\n 'play-circle',\n 'play',\n 'plane-slash',\n 'plane-departure',\n 'plane-arrival',\n 'plane',\n 'place-of-worship',\n 'pizza-slice',\n 'pills',\n 'piggy-bank',\n 'photo-video',\n 'phone-volume',\n 'phone-square-alt',\n 'phone-square',\n 'phone-slash',\n 'phone-alt',\n 'phone',\n 'person-booth',\n 'percentage',\n 'percent',\n 'pepper-hot',\n 'people-carry',\n 'people-arrows',\n 'pencil-ruler',\n 'pencil-alt',\n 'pen-square',\n 'pen-nib',\n 'pen-fancy',\n 'pen-alt',\n 'pen',\n 'peace',\n 'paw',\n 'pause-circle',\n 'pause',\n 'paste',\n 'pastafarianism',\n 'passport',\n 'parking',\n 'paragraph',\n 'parachute-box',\n 'paperclip',\n 'paper-plane',\n 'pallet',\n 'palette',\n 'paint-roller',\n 'paint-brush',\n 'pager',\n 'outdent',\n 'otter',\n 'om',\n 'oil-can',\n 'object-ungroup',\n 'object-group',\n 'notes-medical',\n 'not-equal',\n 'newspaper',\n 'neuter',\n 'network-wired',\n 'music',\n 'mug-hot',\n 'mouse-pointer',\n 'mouse',\n 'mountain',\n 'motorcycle',\n 'mosque',\n 'mortar-pestle',\n 'moon',\n 'monument',\n 'money-check-alt',\n 'money-check',\n 'money-bill-wave-alt',\n 'money-bill-wave',\n 'money-bill-alt',\n 'money-bill',\n 'mobile-alt',\n 'mobile',\n 'mitten',\n 'minus-square',\n 'minus-circle',\n 'minus',\n 'microscope',\n 'microphone-slash',\n 'microphone-alt-slash',\n 'microphone-alt',\n 'microphone',\n 'microchip',\n 'meteor',\n 'mercury',\n 'menorah',\n 'memory',\n 'meh-rolling-eyes',\n 'meh-blank',\n 'meh',\n 'medkit',\n 'medal',\n 'mask',\n 'mars-stroke-v',\n 'mars-stroke-h',\n 'mars-stroke',\n 'mars-double',\n 'mars',\n 'marker',\n 'map-signs',\n 'map-pin',\n 'map-marker-alt',\n 'map-marker',\n 'map-marked-alt',\n 'map-marked',\n 'map',\n 'male',\n 'mail-bulk',\n 'magnet',\n 'magic',\n 'lungs-virus',\n 'lungs',\n 'luggage-cart',\n 'low-vision',\n 'long-arrow-alt-up',\n 'long-arrow-alt-right',\n 'long-arrow-alt-left',\n 'long-arrow-alt-down',\n 'lock-open',\n 'lock',\n 'location-arrow',\n 'list-ul',\n 'list-ol',\n 'list-alt',\n 'list',\n 'lira-sign',\n 'link',\n 'lightbulb',\n 'life-ring',\n 'level-up-alt',\n 'level-down-alt',\n 'less-than-equal',\n 'less-than',\n 'lemon',\n 'leaf',\n 'layer-group',\n 'laugh-wink',\n 'laugh-squint',\n 'laugh-beam',\n 'laugh',\n 'laptop-medical',\n 'laptop-house',\n 'laptop-code',\n 'laptop',\n 'language',\n 'landmark',\n 'kiwi-bird',\n 'kiss-wink-heart',\n 'kiss-beam',\n 'kiss',\n 'khanda',\n 'keyboard',\n 'key',\n 'kaaba',\n 'journal-whills',\n 'joint',\n 'jedi',\n 'italic',\n 'info-circle',\n 'info',\n 'infinity',\n 'industry',\n 'indent',\n 'inbox',\n 'images',\n 'image',\n 'igloo',\n 'id-card-alt',\n 'id-card',\n 'id-badge',\n 'icons',\n 'icicles',\n 'ice-cream',\n 'i-cursor',\n 'hryvnia',\n 'house-user',\n 'house-damage',\n 'hourglass-start',\n 'hourglass-half',\n 'hourglass-end',\n 'hourglass',\n 'hotel',\n 'hotdog',\n 'hot-tub',\n 'hospital-user',\n 'hospital-symbol',\n 'hospital-alt',\n 'hospital',\n 'horse-head',\n 'horse',\n 'home',\n 'holly-berry',\n 'hockey-puck',\n 'history',\n 'hippo',\n 'hiking',\n 'highlighter',\n 'helicopter',\n 'heartbeat',\n 'heart-broken',\n 'heart',\n 'headset',\n 'headphones-alt',\n 'headphones',\n 'heading',\n 'head-side-virus',\n 'head-side-mask',\n 'head-side-cough-slash',\n 'head-side-cough',\n 'hdd',\n 'hat-wizard',\n 'hat-cowboy-side',\n 'hat-cowboy',\n 'hashtag',\n 'hard-hat',\n 'hanukiah',\n 'handshake-slash',\n 'handshake-alt-slash',\n 'handshake',\n 'hands-wash',\n 'hands-helping',\n 'hands',\n 'hand-spock',\n 'hand-sparkles',\n 'hand-scissors',\n 'hand-rock',\n 'hand-pointer',\n 'hand-point-up',\n 'hand-point-right',\n 'hand-point-left',\n 'hand-point-down',\n 'hand-peace',\n 'hand-paper',\n 'hand-middle-finger',\n 'hand-lizard',\n 'hand-holding-water',\n 'hand-holding-usd',\n 'hand-holding-medical',\n 'hand-holding-heart',\n 'hand-holding',\n 'hamsa',\n 'hammer',\n 'hamburger',\n 'h-square',\n 'guitar',\n 'grip-vertical',\n 'grip-lines-vertical',\n 'grip-lines',\n 'grip-horizontal',\n 'grin-wink',\n 'grin-tongue-wink',\n 'grin-tongue-squint',\n 'grin-tongue',\n 'grin-tears',\n 'grin-stars',\n 'grin-squint-tears',\n 'grin-squint',\n 'grin-hearts',\n 'grin-beam-sweat',\n 'grin-beam',\n 'grin-alt',\n 'grin',\n 'grimace',\n 'greater-than-equal',\n 'greater-than',\n 'graduation-cap',\n 'gopuram',\n 'golf-ball',\n 'globe-europe',\n 'globe-asia',\n 'globe-americas',\n 'globe-africa',\n 'globe',\n 'glasses',\n 'glass-whiskey',\n 'glass-martini-alt',\n 'glass-martini',\n 'glass-cheers',\n 'gifts',\n 'gift',\n 'ghost',\n 'genderless',\n 'gem',\n 'gavel',\n 'gas-pump',\n 'gamepad',\n 'futbol',\n 'funnel-dollar',\n 'frown-open',\n 'frown',\n 'frog',\n 'forward',\n 'football-ball',\n 'font',\n 'folder-plus',\n 'folder-open',\n 'folder-minus',\n 'folder',\n 'flushed',\n 'flask',\n 'flag-usa',\n 'flag-checkered',\n 'flag',\n 'fist-raised',\n 'fish',\n 'first-aid',\n 'fire-extinguisher',\n 'fire-alt',\n 'fire',\n 'fingerprint',\n 'filter',\n 'film',\n 'fill-drip',\n 'fill',\n 'file-word',\n 'file-video',\n 'file-upload',\n 'file-signature',\n 'file-prescription',\n 'file-powerpoint',\n 'file-pdf',\n 'file-medical-alt',\n 'file-medical',\n 'file-invoice-dollar',\n 'file-invoice',\n 'file-import',\n 'file-image',\n 'file-export',\n 'file-excel',\n 'file-download',\n 'file-csv',\n 'file-contract',\n 'file-code',\n 'file-audio',\n 'file-archive',\n 'file-alt',\n 'file',\n 'fighter-jet',\n 'female',\n 'feather-alt',\n 'feather',\n 'fax',\n 'faucet',\n 'fast-forward',\n 'fast-backward',\n 'fan',\n 'eye-slash',\n 'eye-dropper',\n 'eye',\n 'external-link-square-alt',\n 'external-link-alt',\n 'expand-arrows-alt',\n 'expand-alt',\n 'expand',\n 'exclamation-triangle',\n 'exclamation-circle',\n 'exclamation',\n 'exchange-alt',\n 'euro-sign',\n 'ethernet',\n 'eraser',\n 'equals',\n 'envelope-square',\n 'envelope-open-text',\n 'envelope-open',\n 'envelope',\n 'ellipsis-v',\n 'ellipsis-h',\n 'eject',\n 'egg',\n 'edit',\n 'dungeon',\n 'dumpster-fire',\n 'dumpster',\n 'dumbbell',\n 'drumstick-bite',\n 'drum-steelpan',\n 'drum',\n 'draw-polygon',\n 'dragon',\n 'drafting-compass',\n 'download',\n 'dove',\n 'dot-circle',\n 'door-open',\n 'door-closed',\n 'donate',\n 'dolly-flatbed',\n 'dolly',\n 'dollar-sign',\n 'dog',\n 'dna',\n 'dizzy',\n 'divide',\n 'disease',\n 'directions',\n 'digital-tachograph',\n 'dice-two',\n 'dice-three',\n 'dice-six',\n 'dice-one',\n 'dice-four',\n 'dice-five',\n 'dice-d6',\n 'dice-d20',\n 'dice',\n 'diagnoses',\n 'dharmachakra',\n 'desktop',\n 'democrat',\n 'deaf',\n 'database',\n 'cut',\n 'cubes',\n 'cube',\n 'crutch',\n 'crown',\n 'crow',\n 'crosshairs',\n 'cross',\n 'crop-alt',\n 'crop',\n 'credit-card',\n 'couch',\n 'copyright',\n 'copy',\n 'cookie-bite',\n 'cookie',\n 'concierge-bell',\n 'compress-arrows-alt',\n 'compress-alt',\n 'compress',\n 'compass',\n 'compact-disc',\n 'comments-dollar',\n 'comments',\n 'comment-slash',\n 'comment-medical',\n 'comment-dots',\n 'comment-dollar',\n 'comment-alt',\n 'comment',\n 'columns',\n 'coins',\n 'cogs',\n 'cog',\n 'coffee',\n 'code-branch',\n 'code',\n 'cocktail',\n 'cloud-upload-alt',\n 'cloud-sun-rain',\n 'cloud-sun',\n 'cloud-showers-heavy',\n 'cloud-rain',\n 'cloud-moon-rain',\n 'cloud-moon',\n 'cloud-meatball',\n 'cloud-download-alt',\n 'cloud',\n 'closed-captioning',\n 'clone',\n 'clock',\n 'clipboard-list',\n 'clipboard-check',\n 'clipboard',\n 'clinic-medical',\n 'city',\n 'circle-notch',\n 'circle',\n 'church',\n 'child',\n 'chevron-up',\n 'chevron-right',\n 'chevron-left',\n 'chevron-down',\n 'chevron-circle-up',\n 'chevron-circle-right',\n 'chevron-circle-left',\n 'chevron-circle-down',\n 'chess-rook',\n 'chess-queen',\n 'chess-pawn',\n 'chess-knight',\n 'chess-king',\n 'chess-board',\n 'chess-bishop',\n 'chess',\n 'cheese',\n 'check-square',\n 'check-double',\n 'check-circle',\n 'check',\n 'chart-pie',\n 'chart-line',\n 'chart-bar',\n 'chart-area',\n 'charging-station',\n 'chalkboard-teacher',\n 'chalkboard',\n 'chair',\n 'certificate',\n 'cat',\n 'cash-register',\n 'cart-plus',\n 'cart-arrow-down',\n 'carrot',\n 'caret-up',\n 'caret-square-up',\n 'caret-square-right',\n 'caret-square-left',\n 'caret-square-down',\n 'caret-right',\n 'caret-left',\n 'caret-down',\n 'caravan',\n 'car-side',\n 'car-crash',\n 'car-battery',\n 'car-alt',\n 'car',\n 'capsules',\n 'cannabis',\n 'candy-cane',\n 'campground',\n 'camera-retro',\n 'camera',\n 'calendar-week',\n 'calendar-times',\n 'calendar-plus',\n 'calendar-minus',\n 'calendar-day',\n 'calendar-check',\n 'calendar-alt',\n 'calendar',\n 'calculator',\n 'business-time',\n 'bus-alt',\n 'bus',\n 'burn',\n 'bullseye',\n 'bullhorn',\n 'building',\n 'bug',\n 'brush',\n 'broom',\n 'broadcast-tower',\n 'briefcase-medical',\n 'briefcase',\n 'bread-slice',\n 'brain',\n 'braille',\n 'boxes',\n 'box-tissue',\n 'box-open',\n 'box',\n 'bowling-ball',\n 'border-style',\n 'border-none',\n 'border-all',\n 'bookmark',\n 'book-reader',\n 'book-open',\n 'book-medical',\n 'book-dead',\n 'book',\n 'bong',\n 'bone',\n 'bomb',\n 'bolt',\n 'bold',\n 'blog',\n 'blind',\n 'blender-phone',\n 'blender',\n 'birthday-cake',\n 'biohazard',\n 'binoculars',\n 'biking',\n 'bicycle',\n 'bible',\n 'bezier-curve',\n 'bell-slash',\n 'bell',\n 'beer',\n 'bed',\n 'battery-three-quarters',\n 'battery-quarter',\n 'battery-half',\n 'battery-full',\n 'battery-empty',\n 'bath',\n 'basketball-ball',\n 'baseball-ball',\n 'bars',\n 'barcode',\n 'band-aid',\n 'ban',\n 'balance-scale-right',\n 'balance-scale-left',\n 'balance-scale',\n 'bahai',\n 'bacterium',\n 'bacteria',\n 'bacon',\n 'backward',\n 'backspace',\n 'baby-carriage',\n 'baby',\n 'award',\n 'audio-description',\n 'atom',\n 'atlas',\n 'at',\n 'asterisk',\n 'assistive-listening-systems',\n 'arrows-alt-v',\n 'arrows-alt-h',\n 'arrows-alt',\n 'arrow-up',\n 'arrow-right',\n 'arrow-left',\n 'arrow-down',\n 'arrow-circle-up',\n 'arrow-circle-right',\n 'arrow-circle-left',\n 'arrow-circle-down',\n 'arrow-alt-circle-up',\n 'arrow-alt-circle-right',\n 'arrow-alt-circle-left',\n 'arrow-alt-circle-down',\n 'archway',\n 'archive',\n 'apple-alt',\n 'ankh',\n 'angry',\n 'angle-up',\n 'angle-right',\n 'angle-left',\n 'angle-down',\n 'angle-double-up',\n 'angle-double-right',\n 'angle-double-left',\n 'angle-double-down',\n 'anchor',\n 'american-sign-language-interpreting',\n 'ambulance',\n 'allergies',\n 'align-right',\n 'align-left',\n 'align-justify',\n 'align-center',\n 'air-freshener',\n 'adjust',\n 'address-card',\n 'address-book',\n 'ad'\n];\n\nexport const FontAwesomeFreeRegularIcons: FontAwesomeIcon[] = [\n 'window-restore',\n 'window-minimize',\n 'window-maximize',\n 'window-close',\n 'user-circle',\n 'user',\n 'trash-alt',\n 'tired',\n 'times-circle',\n 'thumbs-up',\n 'thumbs-down',\n 'surprise',\n 'sun',\n 'stop-circle',\n 'sticky-note',\n 'star-half',\n 'star',\n 'square',\n 'snowflake',\n 'smile-wink',\n 'smile-beam',\n 'smile',\n 'share-square',\n 'save',\n 'sad-tear',\n 'sad-cry',\n 'registered',\n 'question-circle',\n 'plus-square',\n 'play-circle',\n 'pause-circle',\n 'paper-plane',\n 'object-ungroup',\n 'object-group',\n 'newspaper',\n 'moon',\n 'money-bill-alt',\n 'minus-square',\n 'meh-rolling-eyes',\n 'meh-blank',\n 'meh',\n 'map',\n 'list-alt',\n 'lightbulb',\n 'life-ring',\n 'lemon',\n 'laugh-wink',\n 'laugh-squint',\n 'laugh-beam',\n 'laugh',\n 'kiss-wink-heart',\n 'kiss-beam',\n 'kiss',\n 'keyboard',\n 'images',\n 'image',\n 'id-card',\n 'id-badge',\n 'hourglass',\n 'hospital',\n 'heart',\n 'hdd',\n 'handshake',\n 'hand-spock',\n 'hand-scissors',\n 'hand-rock',\n 'hand-pointer',\n 'hand-point-up',\n 'hand-point-right',\n 'hand-point-left',\n 'hand-point-down',\n 'hand-peace',\n 'hand-paper',\n 'hand-lizard',\n 'grin-wink',\n 'grin-tongue-wink',\n 'grin-tongue-squint',\n 'grin-tongue',\n 'grin-tears',\n 'grin-stars',\n 'grin-squint-tears',\n 'grin-squint',\n 'grin-hearts',\n 'grin-beam-sweat',\n 'grin-beam',\n 'grin-alt',\n 'grin',\n 'grimace',\n 'gem',\n 'futbol',\n 'frown-open',\n 'frown',\n 'folder-open',\n 'folder',\n 'flushed',\n 'flag',\n 'file-word',\n 'file-video',\n 'file-powerpoint',\n 'file-pdf',\n 'file-image',\n 'file-excel',\n 'file-code',\n 'file-audio',\n 'file-archive',\n 'file-alt',\n 'file',\n 'eye-slash',\n 'eye',\n 'envelope-open',\n 'envelope',\n 'edit',\n 'dot-circle',\n 'dizzy',\n 'credit-card',\n 'copyright',\n 'copy',\n 'compass',\n 'comments',\n 'comment-dots',\n 'comment-alt',\n 'comment',\n 'closed-captioning',\n 'clone',\n 'clock',\n 'clipboard',\n 'circle',\n 'check-square',\n 'check-circle',\n 'chart-bar',\n 'caret-square-up',\n 'caret-square-right',\n 'caret-square-left',\n 'caret-square-down',\n 'calendar-times',\n 'calendar-plus',\n 'calendar-minus',\n 'calendar-check',\n 'calendar-alt',\n 'calendar',\n 'building',\n 'bookmark',\n 'bell-slash',\n 'bell',\n 'arrow-alt-circle-up',\n 'arrow-alt-circle-right',\n 'arrow-alt-circle-left',\n 'arrow-alt-circle-down',\n 'angry',\n 'address-card',\n 'address-book'\n];\n","export enum ComponentSize {\n XXSmall = 'xxs',\n XSmall = 'xs',\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n XXLarge = 'xxl',\n Fullscreen = 'fs'\n}\n\nexport type PrimaryComponentSizes =\n | ComponentSize.XSmall\n | ComponentSize.Small\n | ComponentSize.Medium\n | ComponentSize.Large\n | ComponentSize.XLarge\n | ComponentSize.XXLarge;\n\nexport type SecondaryComponentSizes =\n | ComponentSize.Small\n | ComponentSize.Medium\n | ComponentSize.Large;\n","export enum ComponentTheme {\n Primary = 'primary',\n Secondary = 'secondary',\n Success = 'success',\n Danger = 'danger',\n Warning = 'warning',\n Info = 'info',\n Light = 'light',\n Dark = 'dark'\n}\n\nexport const ComponentThemesArr = [\n ComponentTheme.Primary,\n ComponentTheme.Secondary,\n ComponentTheme.Success,\n ComponentTheme.Danger,\n ComponentTheme.Warning,\n ComponentTheme.Info,\n ComponentTheme.Light,\n ComponentTheme.Dark\n];\n\nexport type ComponentThemes = (typeof ComponentThemesArr)[number];\n","import { Injectable } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n distinctUntilChanged,\n map,\n shareReplay\n} from 'rxjs';\n\nexport interface IInteractableComponent {\n readonly interactableId: string;\n show: boolean;\n hide?: () => void;\n}\n\nexport interface IBackdropComponent {\n validate(): void;\n invalidate(): void;\n get valid(): boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n private _backdrop?: IBackdropComponent;\n private _interactables: IInteractableComponent[] = [];\n\n private readonly _backdropQueueSubject = new BehaviorSubject<\n readonly string[]\n >([]);\n\n readonly showBackdrop$: Observable<boolean> = this._backdropQueueSubject\n .asObservable()\n .pipe(\n map(backdropQueue => backdropQueue.length > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n get showBackdrop(): boolean {\n return this._backdropQueueSubject.value.length > 0;\n }\n\n registerBackdrop(modalBackdrop: IBackdropComponent) {\n // WARNING: there should only be 1 backdrop component, preferably loaded in the body\n if (!this._backdrop) {\n this._backdrop = modalBackdrop;\n } else if (this._backdrop !== modalBackdrop) {\n this._backdrop.invalidate();\n this._backdrop = modalBackdrop;\n if (!modalBackdrop.valid) {\n // we invalidated and set backdrop to the same backdrop\n modalBackdrop.validate();\n }\n }\n }\n\n unregisterBackdrop(modalBackdrop: IBackdropComponent) {\n if (this._backdrop === modalBackdrop) {\n this._backdrop = undefined;\n }\n }\n\n add(interactable: IInteractableComponent): string {\n const interactableId = interactable.interactableId;\n\n if (!this._interactables.some(i => i.interactableId === interactableId)) {\n this._interactables.push(interactable);\n }\n return interactableId;\n }\n\n remove(interactableId: string): void {\n if (!interactableId) {\n return;\n }\n\n const interactableIndex = this._interactables.findIndex(\n component => component.interactableId === interactableId\n );\n\n if (interactableIndex >= 0) {\n this._interactables.splice(interactableIndex, 1);\n this.dequeueBackdrop(interactableId);\n }\n }\n\n toggle(interactable: IInteractableComponent): boolean {\n if (!interactable.interactableId || interactable.show) {\n // other interactables don't need to be altered/notified\n return false;\n }\n for (const otherInteractable of this._interactables.filter(oi => oi.show)) {\n if (otherInteractable.hide) {\n otherInteractable.hide();\n }\n }\n return true;\n }\n\n queueBackdrop(interactableId: string): void {\n if (!this._backdropQueueSubject.value.includes(interactableId)) {\n this._backdropQueueSubject.next([\n ...this._backdropQueueSubject.value,\n interactableId\n ]);\n }\n }\n\n dequeueBackdrop(interactableId: string): void {\n const interactableIdIndex =\n this._backdropQueueSubject.value.indexOf(interactableId);\n if (interactableIdIndex !== -1) {\n const newQueue = [...this._backdropQueueSubject.value];\n newQueue.splice(interactableIdIndex, 1);\n\n this._backdropQueueSubject.next(newQueue);\n }\n }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\n\n/**\n * The `TextHighlightComponent` (`<impdc-text-highlight` or `<any impdc-text-highlight`) is a component that highlights search-matched text.\n * To use, import `TextHighlightModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-text-highlight, [impdc-text-highlight]',\n standalone: true,\n template: `\n @for (part of result; track part; let odd = $odd) { @if (odd) { @switch\n (method) { @case ('mark') {\n <mark>{{ part }}</mark>\n } @case ('b') {\n <b>{{ part }}</b>\n } @case ('u') {\n <u>{{ part }}</u>\n } @case ('strong') {\n <strong>{{ part }}</strong>\n } @case('class') {\n <span class=\"{{ highlightClass }}\">{{ part }}</span>\n } } } @else {\n <ng-container>{{ part }}</ng-container>\n } }\n `\n})\nexport class TextHighlightComponent implements OnChanges {\n /**\n * The text that will be searched and parts of it could be highlighted.\n */\n @Input({ required: true }) text = '';\n\n /**\n * The search regex/string to look for.\n */\n @Input({ required: true }) search = '';\n\n /**\n * The method of highlighting, or otherwise what is wrapping the search matches. Options `'mark'`,\n * `'b'`, `'strong'`, and `'u'` will wrap matching contents inside of those respective native element types;\n * option `'class'` will wrap matching contents inside a `<span>` with the CSS class specified via the\n * `highlightClass` input.\n */\n @Input() method: 'mark' | 'b' | 'strong' | 'u' | 'class' = 'mark';\n\n /**\n * Be default the search is case-insensitive, this will require exact matches only.\n */\n @Input() exact = false;\n\n /**\n * The CSS `class` string applied to `<span>` elements containing matched text; only applied when specifying `'class'`\n * for the `method` input property.\n */\n @Input() highlightClass: string = 'impdc-highlight';\n\n public result: string[] = [];\n\n ngOnChanges() {\n if (this.search) {\n const escapedText = this._escapeTextForRegExp(this.search);\n const regEx = new RegExp(`(${escapedText})`, `g${this.exact ? '' : 'i'}`);\n this.result = this.text.split(regEx);\n } else {\n this.result = [this.text];\n }\n }\n\n private _escapeTextForRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TextHighlightComponent } from './text-highlight.component';\n\n@NgModule({\n imports: [TextHighlightComponent],\n exports: [TextHighlightComponent]\n})\nexport class TextHighlightModule {\n constructor() {}\n}\n","import {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, distinctUntilChanged } from 'rxjs';\nimport {\n FontAwesomeIcon,\n FontAwesomeIconTheme,\n FontAwesomeFreeRegularIcons\n} from '../../constants';\n\n/**\n * The `IconComponent` (`<impdc-icon` or `<any impdc-icon`) is an icon wrapper utilizing Font Awesome 5.\n * To use, import `IconModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-icon, [impdc-icon]',\n templateUrl: './icon.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class IconComponent implements OnInit, AfterContentChecked {\n private static readonly _licensed$ = new BehaviorSubject<boolean>(false);\n private readonly _licensedChanges$ = IconComponent._licensed$.pipe(\n takeUntilDestroyed(),\n distinctUntilChanged()\n );\n private _loading = true;\n\n /**\n * The Font Awesome 5 icon name. See {@link https://fontawesome.com/v5/search}. Local\n * development may not represent the complete list of available icons.\n */\n @Input()\n name?: FontAwesomeIcon;\n\n /**\n * The Font Awesome 5 icon style. Local development may fallback to a free available\n * theme when possible.\n */\n @Input()\n theme: FontAwesomeIconTheme = 'solid';\n\n /**\n * The icon size as a string or number. String values are used directly whereas numbers are\n * interpreted as pixels.\n */\n @Input()\n size: string | number = '1.8rem';\n\n @ViewChild('icon', { static: true }) iconRef!: ElementRef;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n public get typeClass(): string {\n if (!!IconComponent._licensed$.getValue()) {\n switch (this.theme) {\n case 'light':\n return 'fal';\n case 'regular':\n return 'far';\n // case 'solid':\n default:\n return 'fas';\n }\n }\n if (\n (this.theme === 'light' || this.theme === 'regular') &&\n !!this.name &&\n FontAwesomeFreeRegularIcons.includes(this.name)\n ) {\n return 'far';\n }\n return 'fas';\n }\n\n public get computedSize(): string {\n if (Number.isNaN(this.size)) {\n return this.size.toString();\n }\n\n return `${this.size}px`;\n }\n\n ngOnInit(): void {\n this._licensedChanges$.subscribe(() => {\n this._changeDetectorRef.detectChanges();\n });\n }\n\n ngAfterContentChecked(): void {\n if (this._loading) {\n // During init and possibly a few checks, `iconFontFamily` will be an inherited font, later it will be Font Awesome.\n const iconFontFamily = getComputedStyle(\n this.iconRef.nativeElement\n ).getPropertyValue('font-family');\n if (iconFontFamily.includes('Font Awesome')) {\n IconComponent._licensed$.next(!iconFontFamily.includes('Free'));\n this._loading = false;\n }\n }\n }\n}\n","<i\n #icon\n class=\"{{ typeClass }} fa-{{ name }}\"\n [style.font-size]=\"computedSize\"></i>\n","import {\n Component,\n Input,\n ViewEncapsulation,\n HostBinding\n} from '@angular/core';\nimport { ButtonTheme } from './themes/button-theme';\n\n/**\n * The `ButtonComponent` (`<button impdcButton`) adds theming to the native button.\n * For a container, see [ButtonGroupComponent](./?path=/docs/design-components-button-group--button-group).\n * To use, import `ButtonModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ButtonModule` also imports and exports [BrandingModule](./?path=/docs/design-components-directives-impdcbranded) and\n * [IconModule](./?path=/docs/design-components-icon).\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[impdcButton]',\n templateUrl: './button.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent {\n /**\n * The native type of the Button.\n */\n @Input()\n type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * The theme of the Button affecting text, icons, backgrounds, and borders.\n */\n @Input()\n theme: ButtonTheme = 'primary';\n\n /**\n * The Button's text.\n */\n @Input()\n text = '';\n\n /**\n * Determines if the Button is disabled.\n */\n @Input()\n disabled = false;\n\n /**\n * An alternative to the native `title` attribute. Useful for hover text and accessibility.\n */\n @Input()\n titleText = '';\n\n /**\n * An alternative to the native `aria-label` attribute. Useful for accessibility.\n */\n @Input()\n ariaLabel = '';\n\n @HostBinding('attr.type') private get attrType() {\n return this.type || 'button';\n }\n\n @HostBinding('class.btn') private classBtn = true;\n\n @HostBinding('class.btn-primary') private get classBtnPrimary() {\n return this.theme === 'primary';\n }\n\n @HostBinding('class.btn-danger') private get classBtnDanger() {\n return this.theme === 'danger';\n }\n\n @HostBinding('class.btn-outline-primary') private get classBtnSecondary() {\n return this.theme === 'secondary';\n }\n\n @HostBinding('class.btn-outline-danger')\n private get classBtnSecondaryDanger() {\n return this.theme === 'secondary-danger';\n }\n\n @HostBinding('class.btn-close-fa') private get classBtnClose() {\n return this.theme === 'close';\n }\n\n @HostBinding('attr.disabled') private get attrDisabled() {\n return this.disabled ? 'disabled' : undefined;\n }\n\n @HostBinding('attr.title') private get attrTitle() {\n return this.titleText || undefined;\n }\n\n @HostBinding('attr.aria-label') private get attrAriaLabel() {\n return this.ariaLabel || this.titleText || this.text || undefined;\n }\n}\n","<ng-container *ngIf=\"theme !== 'close'\">\n <ng-content></ng-content>{{ text }}\n <ng-content select=\"[right]\"></ng-content>\n</ng-container>\n<span impdc-icon *ngIf=\"theme === 'close'\" name=\"times\" theme=\"light\"></span>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[impdcBranded]'\n})\nexport class BrandedDirective {\n @HostBinding('class.branded') private brandedClass = true;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrandedDirective } from './branded.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [BrandedDirective],\n exports: [BrandedDirective]\n})\nexport class BrandingModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [IconComponent],\n exports: [IconComponent]\n})\nexport class IconModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrandingModule } from '../branding';\nimport { IconModule } from '../icon';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [CommonModule, BrandingModule, IconModule],\n declarations: [ButtonComponent],\n exports: [ButtonComponent, BrandingModule, IconModule]\n})\nexport class ButtonModule {\n constructor() {}\n}\n","import { ITableCellOption } from '../interfaces';\n\nexport const DEFAULT_PAGE = 1;\nexport const ROWS_PER_PAGE = 10;\nexport const SELECTED_ROWS_PER_PAGE = { value: '25', text: '25' };\nexport const ROWS_PER_PAGE_GROUP: ITableCellOption[] = [\n {\n value: '10',\n label: '10'\n },\n {\n value: '25',\n label: '25'\n },\n {\n value: '50',\n label: '50'\n },\n {\n value: '100',\n label: '100'\n }\n];\nexport const DEBOUNCE_TIME = 500;\n","export const IS_SELECTED_PROPERTY = 'isSelected';\n","export enum TableColumnType {\n Badge = 'Badge',\n Boolean = 'Boolean',\n Link = 'Link',\n Text = 'Text',\n Input = 'Input',\n Currency = 'Currency',\n Decimal = 'Decimal',\n Date = 'Date',\n DateTime = 'DateTime',\n Percentage = 'Percentage',\n CellRender = 'CellRender',\n SingleSelect = 'SingleSelect',\n MultiSelect = 'MultiSelect',\n Icon = 'Icon',\n Email = 'Email',\n Url = 'Url',\n Actions = 'Actions'\n}\n","import { get as getNestedValue } from 'lodash';\n\nimport { ITableRowItem, TableColumnDef } from '../interfaces';\nimport { ComponentTheme } from '../../../types';\n\nexport class TableThemeHelper {\n public static getTheme(\n { fieldColor, color, colorGetter }: TableColumnDef,\n currentRow: ITableRowItem\n ): ComponentTheme | undefined {\n if (fieldColor) {\n const badgedColor = getNestedValue(currentRow, String(fieldColor));\n const theme = Object.entries(ComponentTheme).find(\n ([, value]) => value === String(badgedColor)\n );\n return theme ? theme[1] : undefined;\n }\n\n if (colorGetter) {\n try {\n return colorGetter(currentRow);\n } catch (e) {\n return undefined;\n }\n }\n\n return color || undefined;\n }\n\n public static getCellColor(\n columnDefinition: TableColumnDef,\n currentRow: ITableRowItem\n ): string {\n const color = this.getTheme(columnDefinition, currentRow);\n return TableThemeHelper.getColor(color);\n }\n\n public static getColor(color?: ComponentTheme) {\n if (!color) {\n return '';\n }\n return `text-${color.toLowerCase()}`;\n }\n}\n","/**\n * Type representing allowable values for a boolean input.\n */\nexport type BooleanInput = string | boolean | null | undefined;\n\n/**\n * Coerces a value provided via data-binding (usually a string) to a boolean.\n */\nexport function coerceBooleanPropertyValue(value: unknown): boolean {\n return value != null && `${value}` !== 'false';\n}\n","/**\n * Type describing the allowed values for a number input\n * @ignore\n */\nexport type NumberInput = string | number | null | undefined;\n\n/**\n * Coerces a value provided via data-binding (usually a string) to a number.\n */\nexport function coerceNumberPropertyValue(value: any): number;\nexport function coerceNumberPropertyValue<D>(\n value: any,\n fallback: D\n): number | D;\nexport function coerceNumberPropertyValue(value: any, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n\n/**\n * Determines if the provided value is considered a number.\n * @ignore\n */\nexport function _isNumberValue(value: any): boolean {\n /**\n * We use two different parsing utilities here, for the below reasons:\n * - parseFloat(val) deals with _most_ cases we care about - treating null, empty str,\n * and non-number vals as NaN, while Number returns 0.\n * - parseFloat(val) unfortunately _also_ considers strings like '1234wordswordswords' to be\n * valid numbers, so we need to also check with Number(val) for concensus.\n */\n return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\n}\n","import sanitizeHtml from 'sanitize-html';\n\nexport function sanitize(value: string): string {\n return sanitizeHtml(value, {\n allowedTags: []\n });\n}\n","/**\n * Creates a copy to reduce direct reference issues.\n * @param value\n * @returns\n */\nexport function dc(value: any): any {\n return JSON.parse(JSON.stringify(value));\n}\n","/**\n * Converts strings to lowercase.\n * @param value\n * @returns\n */\nexport function lc(value: string): string {\n return (value || '').toLowerCase();\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-corner-hint',\n standalone: true\n})\nexport class CornerHintDirective {}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { nanoid } from 'nanoid';\n\nexport const IMPDC_ERROR = new InjectionToken<ErrorDirective>('ImpdcError');\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-error, [impdc-error]',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[id]': 'id'\n },\n providers: [{ provide: IMPDC_ERROR, useExisting: ErrorDirective }]\n})\nexport class ErrorDirective {\n @Input()\n id = `impdc-form-error-${nanoid()}`;\n}\n","import {\n Directive,\n Host,\n Inject,\n InjectionToken,\n Optional,\n SkipSelf\n} from '@angular/core';\nimport { FormGroupDirective, NgForm } from '@angular/forms';\n\nexport const IMPDC_FORM_ROOT = new InjectionToken<ImpdcFormRoot>(\n 'ImpdcFormRoot'\n);\n\nexport interface ImpdcFormRoot {\n get submitted(): boolean;\n get form(): FormGroupDirective | NgForm;\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[formGroup]',\n standalone: true,\n providers: [\n {\n provide: IMPDC_FORM_ROOT,\n useExisting: RootFormGroupDirective\n }\n ]\n})\nexport class RootFormGroupDirective implements ImpdcFormRoot {\n constructor(\n @Host() private _formGroupDirective: FormGroupDirective,\n @Optional()\n @SkipSelf()\n @Inject(IMPDC_FORM_ROOT)\n private _parentRoot?: ImpdcFormRoot\n ) {}\n\n public get submitted(): boolean {\n return this._parentRoot\n ? this._parentRoot.submitted\n : this._formGroupDirective.submitted;\n }\n\n public get form(): FormGroupDirective | NgForm {\n return this._parentRoot ? this._parentRoot.form : this._formGroupDirective;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngForm]',\n standalone: true,\n providers: [\n {\n provide: IMPDC_FORM_ROOT,\n useExisting: RootNgFormDirective\n }\n ]\n})\nexport class RootNgFormDirective implements ImpdcFormRoot {\n constructor(\n @Host() private _ngForm: NgForm,\n @Optional()\n @SkipSelf()\n @Inject(IMPDC_FORM_ROOT)\n private _parentRoot?: ImpdcFormRoot\n ) {}\n\n public get submitted(): boolean {\n return this._parentRoot\n ? this._parentRoot.submitted\n : this._ngForm.submitted;\n }\n\n public get form(): FormGroupDirective | NgForm {\n return this._parentRoot ? this._parentRoot.form : this._ngForm;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { nanoid } from 'nanoid';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-hint',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[id]': 'id'\n }\n})\nexport class HintDirective {\n @Input()\n public id = `impdc-form-hint-${nanoid()}`;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-label',\n standalone: true\n})\nexport class LabelDirective {}\n","import { Directive, InjectionToken, Input } from '@angular/core';\n\nexport const IMPDC_PREFIX = new InjectionToken<PrefixDirective>('ImpdcPrefix');\n\n@Directive({\n selector: '[impdcPrefix], [impdcTextPrefix]',\n standalone: true,\n providers: [{ provide: IMPDC_PREFIX, useExisting: PrefixDirective }]\n})\nexport class PrefixDirective {\n @Input('impdcTextPrefix')\n public set isTextSelector(value: '') {\n this.isText = true;\n }\n\n public isText = false;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\n\nexport const IMPDC_SUFFIX = new InjectionToken<SuffixDirective>('ImpdcSuffix');\n\n@Directive({\n selector: '[impdcSuffix], [impdcTextSuffix]',\n standalone: true,\n providers: [{ provide: IMPDC_SUFFIX, useExisting: SuffixDirective }]\n})\nexport class SuffixDirective {\n @Input('impdcTextSuffix')\n public set isTextSelector(value: '') {\n this.isText = true;\n }\n\n public isText = false;\n}\n","import { CornerHintDirective } from './corner-hint.directive';\nimport { ErrorDirective } from './error.directive';\nimport {\n RootFormGroupDirective,\n RootNgFormDirective\n} from './form-root.directive';\nimport { HintDirective } from './hint.directive';\nimport { LabelDirective } from './label.directive';\nimport { PrefixDirective } from './prefix.directive';\nimport { SuffixDirective } from './suffix.directive';\n\nexport { CornerHintDirective } from './corner-hint.directive';\nexport { ErrorDirective, IMPDC_ERROR } from './error.directive';\nexport {\n IMPDC_FORM_ROOT,\n ImpdcFormRoot,\n RootFormGroupDirective,\n RootNgFormDirective\n} from './form-root.directive';\nexport { HintDirective } from './hint.directive';\nexport { LabelDirective } from './label.directive';\nexport { PrefixDirective, IMPDC_PREFIX } from './prefix.directive';\nexport { SuffixDirective, IMPDC_SUFFIX } from './suffix.directive';\n\nexport const FORM_FIELD_DIRECTIVES = [\n CornerHintDirective,\n ErrorDirective,\n RootFormGroupDirective,\n RootNgFormDirective,\n HintDirective,\n LabelDirective,\n PrefixDirective,\n SuffixDirective\n] as const;\n","/** @docs-private */\nexport function getImpdcFormFieldMissingControlError(): Error {\n return Error('impdc-form-field must contain a ImpdcFormFieldControl.');\n}\n","import { Directive } from '@angular/core';\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n@Directive()\nexport abstract class ImpdcFormFieldControl<T> {\n /**\n * The control's value.\n */\n public abstract value: T | null;\n\n /**\n * Stream that should emit when the control's state changes in a way requiring\n * the parent `FormFieldComponent` to run change detection.\n */\n public abstract readonly stateChanges: Observable<void>;\n\n public abstract readonly id: string;\n\n public abstract readonly ngControl:\n | NgControl\n | AbstractControlDirective\n | null;\n\n public abstract readonly focused: boolean;\n\n public abstract readonly disabled: boolean;\n\n public abstract readonly required: boolean;\n\n public abstract readonly errorState: boolean;\n\n public readonly controlType?: string;\n\n public abstract readonly supportsAffixes: boolean;\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n InjectionToken,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { AbstractControlDirective } from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { merge, Subject, takeUntil } from 'rxjs';\nimport {\n ErrorDirective,\n IMPDC_ERROR,\n IMPDC_PREFIX,\n PrefixDirective,\n IMPDC_SUFFIX,\n SuffixDirective\n} from './directives';\nimport { getImpdcFormFieldMissingControlError } from '../form-field-errors';\nimport { ImpdcFormFieldControl } from '../shared/form-field-control';\nimport { CommonModule } from '@angular/common';\n\nexport const IMPDC_FORM_FIELD = new InjectionToken<FormFieldComponent>(\n 'FormFieldComponent'\n);\n\n@Component({\n selector: 'impdc-form-field',\n exportAs: 'impdcFormField',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-form-field',\n '[class.impdc-form-field-focused]': '_control.focused',\n '[class.impdc-form-field-invalid]': '_control.errorState',\n '[class.impdc-form-field-disabled]': '_control.disabled',\n '[class.ng-untouched]': '_shouldForwardControlState(\"untouched\")',\n '[class.ng-touched]': '_shouldForwardControlState(\"touched\")',\n '[class.ng-pristine]': '_shouldForwardControlState(\"pristine\")',\n '[class.ng-dirty]': '_shouldForwardControlState(\"dirty\")',\n '[class.ng-valid]': '_shouldForwardControlState(\"valid\")',\n '[class.ng-invalid]': '_shouldForwardControlState(\"invalid\")',\n '[class.ng-pending]': '_shouldForwardControlState(\"pending\")'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: IMPDC_FORM_FIELD, useExisting: FormFieldComponent }]\n})\nexport class FormFieldComponent\n implements AfterViewInit, AfterContentInit, AfterContentChecked\n{\n @ViewChild('inputArea')\n protected _inputArea!: ElementRef<HTMLElement>;\n\n @ContentChild(ImpdcFormFieldControl)\n protected _formFieldControl!: ImpdcFormFieldControl<unknown>;\n\n @ContentChildren(IMPDC_PREFIX, { descendants: true })\n protected _prefixChildren!: QueryList<PrefixDirective>;\n @ContentChildren(IMPDC_SUFFIX, { descendants: true })\n protected _suffixChildren!: QueryList<SuffixDirective>;\n @ContentChildren(IMPDC_ERROR, { descendants: true })\n protected _errorChildren?: QueryList<ErrorDirective>;\n\n private readonly _destroyedSubject = new Subject<void>();\n protected _hasTextPrefix = false;\n protected _hasTextSuffix = false;\n private _isFocused: boolean | null = null;\n private _explicitFormFieldControl: ImpdcFormFieldControl<unknown> | undefined;\n\n protected readonly _labelId = `impdc-form-field-label-${nanoid()}`;\n\n protected get _control(): ImpdcFormFieldControl<unknown> {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n protected set _control(value) {\n this._explicitFormFieldControl = value;\n }\n\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _changeDetectorRef: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this._updateFocusState();\n this._changeDetectorRef.detectChanges();\n }\n\n public ngAfterContentInit(): void {\n this._assertFormFieldControl();\n this._initializeControl();\n this._initializePrefixAndSuffix();\n }\n\n public ngAfterContentChecked(): void {\n this._assertFormFieldControl();\n }\n\n protected _showErrors(): boolean {\n return !!(\n this._errorChildren &&\n this._errorChildren.length > 0 &&\n this._control.errorState\n );\n }\n\n protected _shouldForwardControlState(\n prop: keyof AbstractControlDirective\n ): boolean {\n const ngControl = this._control ? this._control.ngControl : null;\n\n return ngControl && ngControl[prop];\n }\n\n private _initializeControl(): void {\n const control = this._control;\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(\n `impdc-form-field-type-${control.controlType}`\n );\n }\n\n control.stateChanges\n .pipe(takeUntil(this._destroyedSubject))\n .subscribe(() => {\n this._updateFocusState();\n this._changeDetectorRef.markForCheck();\n });\n\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyedSubject))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _assertFormFieldControl(): void {\n if (!this._control) {\n throw getImpdcFormFieldMissingControlError();\n }\n }\n\n private _updateFocusState(): void {\n if (this._control.focused && !this._isFocused) {\n this._isFocused = true;\n } else if (\n !this._control.focused &&\n (this._isFocused || this._isFocused === null)\n ) {\n this._isFocused = false;\n }\n\n this._inputArea.nativeElement.classList.toggle(\n 'impdc-form-field-control--focused',\n this._control.focused\n );\n }\n\n private _checkPrefixAndSuffixTypes() {\n this._hasTextPrefix = !!this._prefixChildren.find(p => p.isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s.isText);\n }\n\n /** Initializes the prefix and suffix containers. */\n private _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(\n () => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n }\n );\n }\n}\n","<ng-template #labelTemplate>\n <label\n class=\"form-label\"\n [id]=\"_labelId\"\n [attr.for]=\"_formFieldControl.id\"\n [attr.aria-owns]=\"_formFieldControl.id\">\n <ng-content select=\"impdc-label\"></ng-content>\n </label>\n</ng-template>\n\n<ng-template #cornerHintTemplate>\n <div class=\"flex-shrink-1 text-gray-400 fw-medium text-end\">\n <ng-content select=\"impdc-corner-hint\"></ng-content>\n </div>\n</ng-template>\n\n<div class=\"d-flex justify-content-between gap-4\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"cornerHintTemplate\"></ng-template>\n</div>\n\n<div\n #inputArea\n class=\"impdc-form-field-wrapper\"\n [class.input-group]=\"_control.supportsAffixes\"\n [class.impdc-form-field--text]=\"_control.supportsAffixes\"\n [class.impdc-form-field--focused]=\"_control.focused\"\n [class.impdc-form-field--disabled]=\"_control.disabled\"\n [class.impdc-form-field--invalid]=\"_control.errorState\"\n [class.impdc-form-field--text--has-text-prefix]=\"_hasTextPrefix\"\n [class.impdc-form-field--text--has-text-suffix]=\"_hasTextSuffix\">\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcPrefix]\"></ng-content>\n <ng-content select=\"[impdcTextPrefix]\"></ng-content>\n </ng-container>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcTextSuffix]\"></ng-content>\n <ng-content select=\"[impdcSuffix]\"></ng-content>\n </ng-container>\n</div>\n\n<div\n class=\"impdc-form-field-feedback\"\n [class.impdc-form-field-feedback--disabled]=\"false\">\n <div class=\"impdc-form-field-hint-wrapper\">\n <ng-content select=\"impdc-hint\"></ng-content>\n </div>\n <div *ngIf=\"_showErrors()\" class=\"impdc-form-field-error-wrapper\">\n <ng-content select=\"impdc-error, [impdc-error]\"></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, InjectionToken, Input } from '@angular/core';\n\nexport interface ISelectOptionGroup {\n readonly label: string;\n}\n\nexport const IMPDC_SELECT_OPTION_GROUP_COMPONENT =\n new InjectionToken<ISelectOptionGroup>('IMPDC_SELECT_OPTION_GROUP_COMPONENT');\n\n@Component({\n selector: 'impdc-select-option-group',\n standalone: true,\n imports: [CommonModule],\n template: `<ng-content select=\"impdc-select-option\"></ng-content>`,\n providers: [\n {\n provide: IMPDC_SELECT_OPTION_GROUP_COMPONENT,\n useExisting: SelectOptionGroupComponent\n }\n ]\n})\nexport class SelectOptionGroupComponent implements ISelectOptionGroup {\n @Input({ required: true })\n public label: string = '';\n}\n","import { Component, Input, inject } from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport { ISelectOption } from '../interfaces';\nimport { IMPDC_SELECT_OPTION_GROUP_COMPONENT } from '../option-group';\n\n@Component({\n selector: 'impdc-select-option',\n standalone: true,\n template: ''\n})\nexport class SelectOptionComponent implements ISelectOption {\n private readonly _group? = inject(IMPDC_SELECT_OPTION_GROUP_COMPONENT, {\n optional: true\n });\n public readonly uid = `impdc-select-${nanoid()}`;\n\n /**\n * The specific value represented by the select option.\n */\n @Input()\n public value: any = null;\n\n /**\n * Label text describing the select option.\n */\n @Input()\n public label: string = '';\n\n /**\n * Used to enable or disable the specific select option.\n */\n @Input()\n public disabled: boolean = false;\n\n public get groupLabel(): string | undefined {\n return this._group?.label;\n }\n}\n","export enum BadgeSize {\n Default = 'default',\n Large = 'large'\n}\n\nexport const BadgeSizesArr = [BadgeSize.Default, BadgeSize.Large];\n\nexport type BadgeSizes = (typeof BadgeSizesArr)[number];\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostBinding\n} from '@angular/core';\nimport { ComponentTheme, ComponentThemes } from '../../types';\nimport { BadgeIcon, BadgeSize, BadgeSizes } from './types';\n\n/**\n * The `BadgeComponent` (`<impdc-badge` or `any impdc-badge`) displays [preferably short] text with a rounded background and themed colors.\n * To use, import `BadgeModule` or another module that imports and exports that module from `@impartner/design-components`.\n *\n * Use badges to communicate the status of an item or the result of an action taken. Badges are non-interactive, meaning they should not\n * be added or removed by a user. Try and keep badge text as short and clear as possible, 2 or 3 words max is probably best. Using short\n * words increases the ability to scan.\n *\n * Use Tags for interactive experiences where users can add or remove.\n */\n@Component({\n selector: 'impdc-badge, [impdc-badge]',\n templateUrl: './badge.component.html'\n})\nexport class BadgeComponent {\n /**\n * The text displayed in the center of the Badge.\n */\n @Input()\n text = '';\n\n /**\n * An icon displayed left of the Badge text.\n */\n @Input()\n icon: BadgeIcon = '';\n\n /**\n * The color theme of the Badge. This will affect both text and background colors based on allowed designs.\n */\n @Input()\n theme: ComponentThemes = ComponentTheme.Primary;\n\n /**\n * The size of the Badge.\n */\n @Input()\n size: BadgeSizes = BadgeSize.Default;\n\n /**\n * Allows the background of the Badge to be removed.\n */\n @Input()\n hideBg = false;\n\n /**\n * This controls adding the `rounded-pill` class to the Badge.\n */\n @Input()\n rounded = true;\n\n /**\n * Adds a dismiss icon to the right of the Badge text.\n *\n * Deprecated - Use Tags for interactive elements that a user may add or remove.\n *\n * @deprecated\n */\n @Input()\n dismissable = false;\n\n /**\n * An event emitted when the component is dismissed.\n *\n * Deprecated - Use Tags for interactive elements that a user may add or remove.\n *\n * @deprecated\n */\n @Output()\n dismiss = new EventEmitter<MouseEvent | Event>();\n\n @HostBinding('class') private get classBadge(): string {\n let classes = 'badge';\n if (this.theme) {\n classes += ` text-${this.hideBg ? '' : 'bg-'}${this.theme}`;\n }\n if (this.size !== 'default') {\n classes += ` badge-${this.size}`;\n }\n return classes;\n }\n\n @HostBinding('class.rounded-pill')\n private get classBadgeRounded(): boolean {\n return this.rounded && !this.hideBg;\n }\n\n @HostBinding('class.px-0')\n private get classNoPadding(): boolean {\n return this.hideBg;\n }\n\n @HostBinding('hidden')\n private _dismissed = false;\n\n protected handleDismiss(event: MouseEvent | Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.dismissable) {\n return;\n }\n\n this._dismissed = true;\n this.dismiss.emit(event);\n }\n}\n","<span *ngIf=\"icon\" impdc-icon [name]=\"icon === 'dot' ? 'circle' : icon\"></span>\n{{ text }}\n<a *ngIf=\"dismissable\" (click)=\"handleDismiss($event)\">\n <span impdc-icon name=\"times\"></span>\n</a>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconModule } from '../icon';\nimport { BadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [BadgeComponent],\n exports: [IconModule, BadgeComponent]\n})\nexport class BadgeModule {\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n public isErrorState(\n control: AbstractControl<any, any> | null,\n form: FormGroupDirective | NgForm | null\n ): boolean {\n return !!(\n control &&\n control.invalid &&\n (control.dirty || (form && form.submitted))\n );\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n public isErrorState(\n control: AbstractControl | null,\n form: FormGroupDirective | NgForm | null\n ): boolean {\n return !!(\n control &&\n control.invalid &&\n (control.touched || (form && form.submitted))\n );\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\n// Users of the Dispatcher never need to see this type, but TypeScript requires it to be exported.\nexport type UniqueSelectionDispatcherListener = (\n id: string,\n name: string\n) => void;\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\n@Injectable({ providedIn: 'root' })\nexport class UniqueSelectionDispatcher implements OnDestroy {\n private _listeners: UniqueSelectionDispatcherListener[] = [];\n\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n public notify(id: string, name: string) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n public listen(listener: UniqueSelectionDispatcherListener): () => void {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(\n (registered: UniqueSelectionDispatcherListener) => {\n return listener !== registered;\n }\n );\n };\n }\n\n public ngOnDestroy() {\n this._listeners = [];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormFieldComponent } from './form-field.component';\nimport { FORM_FIELD_DIRECTIVES } from './directives';\n\n@NgModule({\n imports: [FormFieldComponent, ...FORM_FIELD_DIRECTIVES],\n exports: [FormFieldComponent, ...FORM_FIELD_DIRECTIVES]\n})\nexport class FormFieldModule {}\n","import { AbstractConstructor, Constructor } from './constructors.type';\n\n/** @docs-private */\nexport interface CanDisable {\n /** Whether the component is disabled. */\n disabled: boolean;\n}\n\ntype CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(\n base: T\n): CanDisableCtor & T;\nexport function mixinDisabled<T extends Constructor<{}>>(\n base: T\n): CanDisableCtor & T {\n return class extends base {\n private _disabled = false;\n\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = !!value;\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import {\n AbstractControl,\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { ImpdcFormRoot } from '../component';\nimport { ErrorStateMatcher } from '../services';\nimport { AbstractConstructor, Constructor } from './constructors.type';\n\n/**\n * @docs-private\n */\nexport interface ICanUpdateErrorState {\n updateErrorState(): void;\n errorState: boolean;\n errorStateMatcher: ErrorStateMatcher | undefined;\n}\n\ntype CanUpdateErrorStateCtor = Constructor<ICanUpdateErrorState> &\n AbstractConstructor<ICanUpdateErrorState>;\n\n/**\n * @docs-private\n */\nexport interface IHasErrorState {\n _formRoot: ImpdcFormRoot | null;\n _parentFormGroup: FormGroupDirective | null;\n _parentForm: NgForm | null;\n _defaultErrorStateMatcher: ErrorStateMatcher;\n\n ngControl: NgControl | null;\n stateChanges: Subject<void>;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * Intended for components with `errorState` and the need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<IHasErrorState>>(\n base: T\n): CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<IHasErrorState>>(\n base: T\n): CanUpdateErrorStateCtor & T {\n return class extends base {\n /** Whether the component is in an error state. */\n errorState = false;\n\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher | undefined;\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent =\n this._formRoot?.form || this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl\n ? (this.ngControl.control as AbstractControl)\n : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { coerceNumberPropertyValue } from '../../../utilities';\nimport { AbstractConstructor, Constructor } from './constructors.type';\nimport { CanDisable } from './disabled.mixin';\n\n/** @ignore */\nexport interface HasTabIndex {\n /** Tabindex of the component. */\n tabIndex: number;\n\n /** Tabindex to which to fall back to if no value is set. */\n defaultTabIndex: number;\n}\n\ntype HasTabIndexCtor = Constructor<HasTabIndex> &\n AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(\n base: T,\n defaultTabIndex?: number\n): HasTabIndexCtor & T;\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n base: T,\n defaultTabIndex = 0\n): HasTabIndexCtor & T {\n return class extends base implements HasTabIndex {\n private _tabIndex: number = defaultTabIndex;\n defaultTabIndex = defaultTabIndex;\n\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex =\n value != null ? coerceNumberPropertyValue(value) : this.defaultTabIndex;\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../utilities';\nimport { ImpdcFormRoot, IMPDC_FORM_ROOT } from '../../component';\nimport { ErrorStateMatcher } from '../../services';\nimport {\n ICanUpdateErrorState,\n IHasErrorState,\n mixinErrorState\n} from '../../shared';\nimport { ImpdcFormFieldControl } from '../../shared/form-field-control';\n\nconst IMPDC_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\n/** @docs-private */\nexport function getInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by impdcInput.`);\n}\n\nconst _InputDirectiveBase = mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n);\n\n/**\n * The `InputDirective` (`<input impdcInput`, `<textarea impdcInput` or `<select impdcInput`) is a directive for text inputs.\n * With this directive, the input, textarea, and select can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, import `ImpdcFormsModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Directive({\n selector:\n 'input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]',\n exportAs: 'impdcInput',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-input',\n '[id]': 'id',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.id]': 'id',\n '[attr.readonly]': 'readonly && !_isSelect || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-control]': '!_isSelect',\n '[class.form-control-color]': 'type === \"color\"',\n '[class.form-select]': '_isSelect',\n '[class.impdc-form-field-control]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-input--invalid]': 'errorState',\n '[class.impdc-input--disabled]': 'disabled',\n '[class.impdc-input--required]': 'required',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()'\n },\n providers: [{ provide: ImpdcFormFieldControl, useExisting: InputDirective }]\n})\nexport class InputDirective\n extends _InputDirectiveBase\n implements\n ImpdcFormFieldControl<any>,\n ICanUpdateErrorState,\n IHasErrorState,\n OnChanges,\n OnDestroy,\n DoCheck\n{\n private _inputValueAccessor: { value: any };\n\n protected _uid = `impdc-input-${nanoid()}`;\n protected _isSelect: boolean;\n protected _isTextarea: boolean;\n\n public focused = false;\n\n public readonly controlType?: string = 'impdc-input';\n public readonly supportsAffixes: boolean = true;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanPropertyValue(value);\n\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Supports most standard `<input [type]>` attribute values. Does not support `button`, `checkbox`,\n * `file`, `hidden`, `image`, `radio`, `range`, `reset`, or `button`, and does not apply to\n * `<textarea>` or `<select>` elements.\n *\n * @default text\n */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (!this._typeIsValid(value)) {\n throw getInputUnsupportedTypeError(value);\n }\n\n this._type = value || 'text';\n\n // Sync with native input element.\n if (!this._isTextarea) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n /**\n * Used to put the control in a non-interactive readonly state; only supports `<input>` and\n * `<textarea>` elements.\n *\n * To see the difference between `readonly` and `disabled`, refer to [MDN's documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly).\n */\n @Input()\n public get readonly(): boolean {\n return this._readonly;\n }\n public set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanPropertyValue(value);\n }\n private _readonly = false;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n @Input()\n get value(): string {\n return this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n constructor(\n protected _elementRef: ElementRef<\n HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement\n >,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n const { nativeElement } = this._elementRef;\n const nodeName = nativeElement.nodeName.toLowerCase();\n\n this._inputValueAccessor = nativeElement;\n this.id = this.id;\n this._isSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n\n if (this._isSelect) {\n this.controlType = (nativeElement as HTMLSelectElement).multiple\n ? 'impdc-native-select-multiple'\n : 'impdc-native-select';\n }\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n\n if (\n this.ngControl.disabled !== null &&\n this.ngControl.disabled !== this.disabled\n ) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n }\n\n /** @ignore */\n public ngOnChanges(): void {\n this.stateChanges.next();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n protected _focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n protected _typeIsValid(inputType: string): boolean {\n return IMPDC_INPUT_INVALID_TYPES.indexOf(inputType) === -1;\n }\n\n protected _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when Angular forms\n // aren't used, the placeholder won't recognize the value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ISelectOption } from './interfaces';\nimport { SelectChangeEvent } from './select.component';\nimport { Observable } from 'rxjs';\n\nexport interface ISelectOptionParentComponent {\n readonly multiple?: boolean;\n}\n\nexport const IMPDC_SELECT_OPTION_PARENT_COMPONENT =\n new InjectionToken<ISelectOptionParentComponent>(\n 'IMPDC_SELECT_OPTION_PARENT_COMPONENT'\n );\n\nexport interface ISelectValueBadgesParentComponent {\n readonly selected: ISelectOption | ISelectOption[];\n readonly selectionChange: Observable<\n SelectChangeEvent<ISelectValueBadgesParentComponent>\n >;\n readonly stateChanges: Observable<void>;\n readonly disabled: boolean;\n deselectOption(option: ISelectOption): void;\n}\n\nexport const IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT =\n new InjectionToken<ISelectValueBadgesParentComponent>(\n 'IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT'\n );\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output\n} from '@angular/core';\nimport { NgbDropdownItem } from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\n\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../../utilities';\nimport { IconModule } from '../../../../icon';\nimport { TextHighlightModule } from '../../../../text-highlight';\nimport { ISelectOption } from '../interfaces';\nimport {\n ISelectOptionParentComponent,\n IMPDC_SELECT_OPTION_PARENT_COMPONENT\n} from '../option-parent';\n\nexport class SelectOptionSelectionChangeEvent<T = any> {\n constructor(\n public source: SelectOptionDisplayComponent,\n public isUserInput = false\n ) {}\n}\n\n@Component({\n selector: 'impdc-select-option-display',\n standalone: true,\n imports: [CommonModule, TextHighlightModule, IconModule],\n templateUrl: './select-option-display.component.html',\n styleUrls: ['select-option-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.impdc-select-option--single]': '!multiple',\n '[class.impdc-select-option--multiple]': 'multiple',\n '[class.impdc-select-option--selected]': 'selected',\n '[class.active]': '!multiple && selected',\n '[class.impdc-select-option--grouped]': '!!groupLabel',\n '(click)': 'selectViaInteraction()',\n '(keydown)': 'handleKeydown($event)'\n }\n})\nexport class SelectOptionDisplayComponent\n extends NgbDropdownItem\n implements ISelectOption, OnDestroy\n{\n /** @ignore */\n public readonly stateChanges = new Subject<void>();\n private _selected = false;\n private __disabled = false;\n\n /** @ignore */\n get multiple(): boolean {\n return !!this.parent && !!this.parent.multiple;\n }\n\n /** @ignore */\n @Input()\n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean | undefined) {\n if (typeof value !== 'boolean') return;\n\n if (value) {\n this.select();\n } else {\n this.deselect();\n }\n }\n\n /**\n * The specific value represented by the select option.\n */\n @Input()\n public value: any;\n\n /**\n * Label text describing the select option.\n */\n @Input()\n public get label(): string {\n return this._label;\n }\n public set label(label: string) {\n this._label = label;\n this._emitSelectionChangeEvent();\n }\n private _label = '';\n\n @Input()\n public groupLabel?: string;\n\n @Input()\n public highlightText: string | null = null;\n\n /** @ignore */\n @Input()\n public id = `impdc-option-display-${nanoid()}`;\n\n /**\n * Used to enable or disable the specific select option.\n */\n @Input()\n public override get disabled(): boolean {\n return this.__disabled;\n }\n public override set disabled(value: BooleanInput) {\n this.__disabled = coerceBooleanPropertyValue(value);\n }\n\n /** @ignore */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onSelectionChange =\n new EventEmitter<SelectOptionSelectionChangeEvent>();\n\n constructor(\n @Optional()\n @Inject(IMPDC_SELECT_OPTION_PARENT_COMPONENT)\n protected readonly parent: ISelectOptionParentComponent | undefined,\n private readonly _changeDetector: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @ignore */\n public select(): void {\n if (!this._selected) {\n this._selected = true;\n this._changeDetector.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** @ignore */\n public deselect(): void {\n if (this._selected) {\n this._selected = false;\n this._changeDetector.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n protected handleKeydown(event: KeyboardEvent): void {\n if (this._isInteractionKeyEvent(event)) {\n this.selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n protected selectViaInteraction(): void {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetector.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(\n new SelectOptionSelectionChangeEvent(this, isUserInput)\n );\n }\n\n private _isInteractionKeyEvent(event: KeyboardEvent): boolean {\n // Bail if key isn't \"enter\" or \"space\"\n if (event.keyCode !== 13 && event.keyCode !== 32) {\n return false;\n }\n\n // Bail if keypress has any modifers\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return false;\n }\n\n return true;\n }\n}\n","<ng-template #singleSelectTemplate>\n <span>\n @if (highlightText && !selected) {\n <impdc-text-highlight\n method=\"class\"\n highlightClass=\"impdc-select-option--highlight\"\n text=\"{{ label }}\"\n [search]=\"highlightText\"></impdc-text-highlight>\n } @else {\n {{ label || ' ' }}\n }\n </span>\n <span\n *ngIf=\"selected\"\n impdc-icon\n name=\"check\"\n [size]=\"16\"\n class=\"selected-check lh-1 ms-auto\"></span>\n</ng-template>\n\n<ng-template #multipleSelectTemplate>\n <div class=\"d-flex align-items-center gap-5\">\n <span>\n <input\n class=\"form-check-input opacity-100\"\n type=\"checkbox\"\n disabled\n readonly=\"readonly\"\n [attr.checked]=\"selected ? 'checked' : null\" />\n </span>\n <span>\n @if (highlightText && !selected) {\n <impdc-text-highlight\n method=\"class\"\n highlightClass=\"impdc-select-option--highlight\"\n text=\"{{ label }}\"\n [search]=\"highlightText\"></impdc-text-highlight>\n } @else {\n {{ label || ' ' }}\n }\n </span>\n </div>\n</ng-template>\n\n<ng-template\n [ngTemplateOutlet]=\"\n multiple ? multipleSelectTemplate : singleSelectTemplate\n \"></ng-template>\n","import { Subject } from 'rxjs';\n\nexport interface SelectChange<T> {\n source: SelectModel<T>;\n added: T[];\n removed: T[];\n}\n\nexport function getMultipleValuesInSingleSelectError() {\n return Error(\n 'Cannot pass multiple values into SelectModel in single-value mode.'\n );\n}\n\nexport class SelectModel<T> {\n private _selection = new Set<T>();\n\n private _pendingDeselectionsToEmit: T[] = [];\n private _pendingSelectionsToEmit: T[] = [];\n private _selected: T[] | null = null;\n\n public get selected(): T[] {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n\n return this._selected;\n }\n\n public readonly changed$ = new Subject<SelectChange<T>>();\n\n constructor(\n private readonly _multiple = false,\n initialSelectedValues?: T[],\n private readonly _emitChanges = true,\n public compareFunc?: (a: T, b: T) => boolean\n ) {\n if (initialSelectedValues && initialSelectedValues.length) {\n if (_multiple) {\n initialSelectedValues.forEach(value => {\n this._markSelected(value);\n });\n } else {\n this._markSelected(initialSelectedValues[0]);\n }\n\n this._pendingSelectionsToEmit.length = 0;\n }\n }\n\n public select(...values: T[]): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n\n public deselect(...values: T[]): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n\n public setSelection(...values: T[]): boolean | void {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n\n values.forEach(value => this._markSelected(value));\n oldValues\n .filter(value => !newSelectedSet.has(value))\n .forEach(value => this._unmarkSelected(value));\n\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n\n public toggle(value: T): boolean | void {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n\n public clear(flushEvent = true): boolean | void {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n\n public isSelected(value: T): boolean {\n return this._selection.has(this._getConcreteValue(value));\n }\n\n public isEmpty(): boolean {\n return this._selection.size === 0;\n }\n\n public hasValue(): boolean {\n return !this.isEmpty();\n }\n\n public sort(predicateFunc?: (a: T, b: T) => number): void {\n if (this._multiple && this.selected) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._selected!.sort(predicateFunc);\n }\n }\n\n public isMultipleSelection(): boolean {\n return this._multiple;\n }\n\n private _emitChangeEvent(): void {\n this._selected = null;\n\n if (\n this._pendingSelectionsToEmit.length ||\n this._pendingDeselectionsToEmit.length\n ) {\n this.changed$.next({\n source: this,\n added: this._pendingSelectionsToEmit,\n removed: this._pendingDeselectionsToEmit\n });\n\n this._pendingDeselectionsToEmit = [];\n this._pendingSelectionsToEmit = [];\n }\n }\n\n private _markSelected(value: T): void {\n value = this._getConcreteValue(value);\n\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n\n if (this._emitChanges) {\n this._pendingSelectionsToEmit.push(value);\n }\n }\n }\n\n private _unmarkSelected(value: T): void {\n value = this._getConcreteValue(value);\n\n if (this.isSelected(value)) {\n this._selection.delete(value);\n\n if (this._emitChanges) {\n this._pendingDeselectionsToEmit.push(value);\n }\n }\n }\n\n private _unmarkAll(): void {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n\n private _verifyValueAssignment(values: T[]): void {\n if (values.length > 1 && !this._multiple) {\n throw getMultipleValuesInSingleSelectError();\n }\n }\n\n private _hasQueuedChanges(): boolean {\n return !!(\n this._pendingDeselectionsToEmit.length ||\n this._pendingSelectionsToEmit.length\n );\n }\n\n private _getConcreteValue(inputVal: T): T {\n if (!this.compareFunc) {\n return inputVal;\n }\n\n for (let selectedVal of this._selection) {\n if (this.compareFunc(inputVal, selectedVal)) {\n return selectedVal;\n }\n }\n\n return inputVal;\n }\n}\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\nimport { IconModule } from '../icon';\nimport { FontAwesomeIcon, FontAwesomeIconTheme } from '../../constants';\nimport {\n CanDisable,\n HasTabIndex,\n mixinDisabled,\n mixinTabIndex\n} from '../form-field/shared';\n\nexport type TagTheme = 'default' | 'outline' | 'inverse';\n\nconst _TagComponentBase = mixinTabIndex(mixinDisabled(class {}));\n\n/**\n * Tags are interactive elements that can be added to UI objects to label, categorize, organize, and filter.\n * They can be added and removed by users. Tags are used in multi-select inputs.\n *\n * Don’t use Tags to communicate the status of an object or the result of an action (like Enabled, Deleted,\n * Submitted, Error...) — use badges instead.\n */\n@Component({\n standalone: true,\n imports: [IconModule],\n selector: 'impdc-tag',\n exportAs: 'impdcTag',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n { name: 'disabled', transform: booleanAttribute },\n { name: 'tabIndex', transform: numberAttribute }\n ],\n host: {\n '[attr.tabindex]': 'tabIndex'\n },\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TagComponent\n extends _TagComponentBase\n implements CanDisable, HasTabIndex\n{\n /**\n * Color theme to be used when rendering the tag.\n */\n @Input()\n public theme: TagTheme = 'default';\n\n /**\n * Whether to use fully rounded borders for tag, granting a \"pill\"-like appearance.\n */\n @HostBinding('class.impdc-tag--rounded')\n @Input({ transform: booleanAttribute })\n public rounded = false;\n\n /**\n * Where to include an interactable button inside of the tag, whose interactions can be listened\n * for via the `(buttonClick)` event output.\n */\n @Input({ transform: booleanAttribute })\n public withButton = false;\n\n /**\n * The FontAwesome icon to be displayed inside of the button when `withButton` is set to `true`. Value may be\n * just a icon name, or optionally an icon name and specific FontAwesome theme/face.\n */\n @Input()\n public buttonIcon:\n | FontAwesomeIcon\n | { name: FontAwesomeIcon; theme: FontAwesomeIconTheme } = {\n name: 'times',\n theme: 'light'\n };\n\n /**\n * Event output for button events triggered when `withButton` is set to `true`.\n */\n @Output()\n public readonly buttonClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n @HostBinding('class')\n public get themeClass(): string | null {\n switch (this.theme) {\n case 'outline':\n return 'impdc-tag--theme-outline';\n\n case 'inverse':\n return 'impdc-tag--theme-inverse';\n\n case 'default':\n default:\n return null;\n }\n }\n\n constructor(@Attribute('tabindex') tabIndex?: string) {\n super();\n this.tabIndex = parseInt(tabIndex ?? '') || 0;\n }\n\n protected get buttonIconName(): FontAwesomeIcon {\n return typeof this.buttonIcon === 'string'\n ? this.buttonIcon\n : this.buttonIcon.name;\n }\n\n protected get buttonIconTheme(): FontAwesomeIconTheme {\n return typeof this.buttonIcon !== 'string'\n ? this.buttonIcon.theme\n : 'solid';\n }\n\n protected handleButtonClick(evt: Event): void {\n evt.preventDefault();\n evt.stopPropagation();\n\n this.buttonClick.emit(evt);\n }\n}\n","<span class=\"impdc-tag--text\"><ng-content></ng-content></span>\n@if (withButton) {\n<button\n type=\"button\"\n class=\"impdc-tag--button\"\n [disabled]=\"disabled\"\n (click)=\"handleButtonClick($event)\">\n <impdc-icon size=\"12\" [name]=\"buttonIconName\" [theme]=\"buttonIconTheme\" />\n</button>\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport {\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n ISelectValueBadgesParentComponent\n} from '../option-parent';\nimport { Subject, merge, takeUntil } from 'rxjs';\nimport { ComponentTheme } from '../../../../../types';\nimport { TagComponent } from '../../../../tag';\nimport { ISelectOption } from '../interfaces';\n\n@Component({\n selector: 'impdc-select-value-tags-display',\n standalone: true,\n imports: [TagComponent, NgClass],\n styleUrl: './select-value-tags-display.component.scss',\n templateUrl: './select-value-tags-display.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectValueTagsDisplayComponent\n implements OnInit, OnChanges, OnDestroy\n{\n private readonly _changeDetector = inject(ChangeDetectorRef);\n private readonly _parentSelect = inject(\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n { optional: true }\n );\n private readonly _destroy$ = new Subject<void>();\n protected readonly BadgeTheme = ComponentTheme;\n protected truncate = true;\n\n @Input({ transform: booleanAttribute })\n public rounded = false;\n\n @Input()\n public get select(): ISelectValueBadgesParentComponent | null {\n return this._select;\n }\n public set select(value: ISelectValueBadgesParentComponent | null) {\n this._select = value || this._parentSelect;\n }\n private _select: ISelectValueBadgesParentComponent | null =\n this._parentSelect;\n\n protected get resolvedSelect(): ISelectValueBadgesParentComponent | null {\n return this.select || this._parentSelect;\n }\n\n /**\n * Render the control is a readonly state.\n *\n * Semantically distinct from `disabled`, `readonly` controls will still have their values bound in\n * Angular forms and `FormGroup`s, whereas a disabled control's value would be omitted.\n */\n @Input()\n public readonly: boolean = false;\n\n /**\n * The maximum number of values that will be displayed inline before truncation occurs.\n */\n @Input()\n public truncateThreshold: number | undefined;\n\n /**\n * Text to be shown when displayed values are truncated, allowing the user to view all selected values.\n */\n @Input()\n public showMoreLabel = 'Show more...';\n\n /**\n * Text to be shown when displayed values have been expanded beyond the truncation threshold, allowing\n * the user collapse the view again.\n */\n @Input()\n public showLessLabel = 'Show less...';\n\n public ngOnInit(): void {\n if (this.select) {\n this.observeStateChanges(this.select);\n }\n }\n\n public ngOnChanges(): void {\n this._destroy$.next();\n\n if (this.select) {\n this.observeStateChanges(this.select);\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n protected toggleTruncate(): void {\n this.truncate = !this.truncate;\n }\n\n protected observeStateChanges(\n select: ISelectValueBadgesParentComponent\n ): void {\n merge(select.selectionChange, select.stateChanges)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._changeDetector.detectChanges();\n });\n }\n\n protected selectedIsMultiple(\n selected: ISelectOption | ISelectOption[]\n ): selected is ISelectOption[] {\n return Array.isArray(selected);\n }\n}\n","<ng-content></ng-content>\n@if (!!select && selectedIsMultiple(select.selected)) { @for (selectedOpt of\nselect.selected; track selectedOpt) { @if (!truncate || !truncateThreshold ||\n(truncateThreshold > 0 && $index < truncateThreshold)) {\n<impdc-tag\n [rounded]=\"rounded\"\n [withButton]=\"!readonly && !select.disabled\"\n (buttonClick)=\"select.deselectOption(selectedOpt)\">\n {{ selectedOpt.label }}\n</impdc-tag>\n} } @if (!!truncateThreshold && truncateThreshold > 0 && select.selected.length\n> truncateThreshold) {\n<a\n class=\"impdc-select-value-tags-display--truncate-toggle link-primary\"\n (click)=\"toggleTruncate()\">\n {{ truncate ? showMoreLabel : showLessLabel }}\n</a>\n} }\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NgbDropdown, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n defer,\n distinctUntilChanged,\n map,\n merge,\n Observable,\n startWith,\n Subject,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs';\n\nimport { ComponentTheme } from '../../../../types';\nimport { lc } from '../../../../utilities';\nimport { BadgeModule } from '../../../badge';\nimport { IconModule } from '../../../icon';\nimport { ErrorStateMatcher } from '../../services';\nimport {\n ImpdcFormRoot,\n IMPDC_FORM_ROOT,\n FormFieldModule\n} from '../../component';\nimport {\n CanDisable,\n HasTabIndex,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../../shared';\nimport { InputDirective } from '../input';\nimport {\n IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n ISelectOptionParentComponent,\n ISelectValueBadgesParentComponent\n} from './option-parent';\nimport {\n SelectOptionSelectionChangeEvent,\n SelectOptionDisplayComponent\n} from './option-display';\nimport { SelectModel } from './select-model';\nimport { SelectOptionComponent } from './option';\nimport { ISelectOption } from './interfaces';\nimport { SelectValueTagsDisplayComponent } from './value-tags-display';\n\nexport const ON_OPEN_AUTO_SCROLL_TIMEOUT_MS = 50;\n\nexport class SelectChangeEvent<TComponent> {\n constructor(\n /** The specific SelectComponent that changed. */\n public readonly source: TComponent,\n /** The selected value(s) */\n public readonly value: any\n ) {}\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @ignore\n */\nexport function getImpdcSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getImpdcSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @ignore\n */\nexport function getImpdcSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\nconst DEFAULT_ACTIVE_INDEX = -1;\n\ninterface IRenderedSelectOption extends ISelectOption {\n readonly selected?: boolean;\n readonly showGroupLabel?: boolean;\n}\n\nconst __SelectComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot | null,\n public _parentForm: NgForm | null,\n public _parentFormGroup: FormGroupDirective | null,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n@Directive()\nexport abstract class _SelectComponentBase\n extends __SelectComponentBase\n implements\n ISelectOptionParentComponent,\n OnInit,\n AfterViewInit,\n OnChanges,\n DoCheck,\n OnDestroy,\n ControlValueAccessor,\n HasTabIndex,\n ImpdcFormFieldControl<any>,\n CanDisable,\n ICanUpdateErrorState,\n IHasErrorState\n{\n @ContentChildren(SelectOptionComponent, { descendants: true })\n protected staticOptions!: QueryList<SelectOptionComponent>;\n\n @ViewChildren(SelectOptionDisplayComponent)\n protected options!: QueryList<SelectOptionDisplayComponent>;\n\n @ViewChild(NgbDropdown)\n protected ngbDropdown!: NgbDropdown;\n\n @ViewChild('toggleButton', { read: ElementRef })\n protected toggleButtonRef?: ElementRef<HTMLElement>;\n\n @ViewChild('searchInput', { read: ElementRef<HTMLInputElement> })\n protected searchInputRef?: ElementRef<HTMLInputElement>;\n\n private readonly _ngDestroy = new Subject<void>();\n private readonly _searchSubject = new BehaviorSubject<'none' | 'static'>(\n 'none'\n );\n private _previousControl?: AbstractControl | null;\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n protected readonly uid: string;\n protected readonly changeDetector = inject(ChangeDetectorRef);\n protected readonly ngZone = inject(NgZone);\n protected readonly searchControl = new FormControl<string | null>(null);\n protected readonly BadgeTheme = ComponentTheme;\n protected readonly filteredOptions$: Observable<IRenderedSelectOption[]> =\n this._searchSubject.pipe(\n switchMap(searchMode => {\n switch (searchMode) {\n case 'none':\n return (\n this.staticOptions.changes as Observable<ISelectOption[]>\n ).pipe(\n startWith(this.staticOptions.toArray() as ISelectOption[]),\n map(options =>\n options.map(opt => ({\n groupLabel: opt.groupLabel,\n get label() {\n return opt.label;\n },\n value: opt.value,\n get disabled() {\n return opt.disabled;\n },\n selected: this.selectionModel.isSelected(opt)\n }))\n )\n );\n case 'static':\n return combineLatest([\n (this.staticOptions.changes as Observable<ISelectOption[]>).pipe(\n startWith(this.staticOptions.toArray() as ISelectOption[])\n ),\n this.searchTextChanges.pipe(startWith(''))\n ]).pipe(\n tap(([, searchText]) => {\n this.activeIndex = !!searchText ? 0 : DEFAULT_ACTIVE_INDEX;\n }),\n map(([options, searchText]) => {\n const renderedOptions = options.map(opt => ({\n groupLabel: opt.groupLabel,\n get label() {\n return opt.label;\n },\n value: opt.value,\n get disabled() {\n return opt.disabled;\n },\n selected: this.selectionModel.isSelected(opt)\n }));\n\n return !!searchText\n ? renderedOptions.filter(\n opt => lc(opt.label).indexOf(lc(searchText)) !== -1\n )\n : renderedOptions;\n })\n );\n }\n }),\n map(options =>\n Object.entries(\n options.reduce((result, opt) => {\n const resolvedGroupLabel = opt.groupLabel?.trim() || '';\n let showGroupLabel = false;\n\n if (!(resolvedGroupLabel in result)) {\n result[resolvedGroupLabel] = [];\n showGroupLabel = true;\n }\n\n result[resolvedGroupLabel].push({\n ...opt,\n showGroupLabel\n });\n return result;\n }, {} as { [key: string]: IRenderedSelectOption[] })\n ).flatMap(([, groupOptions]) => groupOptions)\n )\n );\n protected selectionModel!: SelectModel<ISelectOption>;\n protected activeIndex = DEFAULT_ACTIVE_INDEX;\n\n /** @ignore */\n public readonly optionSelectionChanges: Observable<SelectOptionSelectionChangeEvent> =\n defer(() => {\n const options = this.options;\n\n if (options) {\n return options.changes.pipe(\n startWith(options),\n switchMap(() =>\n merge(...options.map(option => option.onSelectionChange))\n )\n );\n }\n\n return this.ngZone.onStable.pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n });\n\n /**\n * Set whether or not an input field will appear for searching and\n * filtering visible options.\n *\n * - `'none'`: No search control will be displayed, and all select options are provided via projected `<impdc-select-option>` elements.\n * - `'static'`: A search control will be displayed, select options are provided via projected `<impdc-select-option>` elements, and\n * filtering is performed against the `[label]` attribute value.\n * @default 'none'\n */\n public get search(): 'none' | 'static' {\n return this._searchSubject.value;\n }\n public set search(value: 'none' | 'static') {\n this._searchSubject.next(value);\n }\n\n /**\n * The placeholder text that will be displayed when no selection has been made.\n *\n * @default \\- Select -\n */\n public get placeholder(): string {\n return this._placeholder;\n }\n public set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n protected _placeholder = '- Select -';\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n */\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n /**\n * Whether the control is a single-select or multiple-select. Cannot be changed after component initialization.\n */\n public get multiple(): boolean {\n return this._multiple;\n }\n protected _multiple = false;\n\n /**\n * Function used to compare option values with selected values. The first arg is a\n * `value` from an option, and the second arg is a `value` from the selection or another option.\n *\n * @returns Boolean indicating if the values are equivalent.\n */\n public get compareWith() {\n return this._compareWith;\n }\n public set compareWith(fn: (a: any, b: any) => boolean) {\n if (typeof fn !== 'function') {\n throw getImpdcSelectNonFunctionValueError();\n }\n\n this._compareWith = fn;\n\n if (this.selectionModel) {\n // Changing the comparator function means the visual selection may have changed.\n this._initializeSelection();\n }\n }\n\n /**\n * Document element that the select dropdown will be attached to in the DOM - either the\n * document's `<body>` tag, or as a child of the component tag.\n *\n * The default value (`'body'`) is generally the correct choice, and should only be\n * overridden when absolutely certain that the result behavior is what's desired.\n */\n public dropdownContainer: 'body' | null = 'body';\n\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /** Events fire when selection has been changed by the user. */\n public readonly selectionChange: EventEmitter<SelectChangeEvent<this>> =\n new EventEmitter<SelectChangeEvent<this>>();\n\n /**\n * Events fire when raw value of select changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n public readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Events fire when the text value of the option search input control has changed.\n */\n @Output()\n public readonly searchTextChanges: Observable<string | null> =\n this.searchControl.valueChanges.pipe(\n takeUntilDestroyed(),\n startWith(''),\n debounceTime(200),\n distinctUntilChanged()\n );\n\n constructor(uid: string, tabIndex?: string) {\n super(\n inject(ErrorStateMatcher),\n inject(IMPDC_FORM_ROOT, { optional: true }),\n inject(NgForm, { optional: true }),\n inject(FormGroupDirective, { optional: true }),\n inject(NgControl, { optional: true, self: true })\n );\n\n this.uid = uid;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n // idempotent assignment - respects arbitrary ID set via attr if present, otherwise falls back to auto UUID;\n // also triggers stateChanges pulse for parent form-field component\n this.id = this.id;\n\n this.tabIndex = parseInt(tabIndex ?? '') || 0;\n }\n\n public get dropdownOpen(): boolean {\n return this.ngbDropdown?.isOpen() ?? false;\n }\n\n public get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n public get selected(): ISelectOption | ISelectOption[] {\n return this._multiple\n ? this.selectionModel?.selected || []\n : this.selectionModel?.selected[0];\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this.toggleButtonRef?.nativeElement.focus(options);\n }\n\n protected handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.onFocus();\n\n if (this.search !== 'none' && !!this.searchInputRef) {\n setTimeout(() => {\n this.searchInputRef?.nativeElement.focus();\n }, ON_OPEN_AUTO_SCROLL_TIMEOUT_MS);\n }\n\n if (!this._multiple && !!this.value) {\n this._scrollToSelectedOption();\n }\n } else {\n this.onBlur();\n }\n\n this.activeIndex = DEFAULT_ACTIVE_INDEX;\n this.searchControl.reset();\n this.stateChanges.next();\n }\n\n /* Angular lifecycle hooks */\n\n /** @ignore */\n public ngOnInit(): void {\n this.selectionModel = new SelectModel<ISelectOption>(\n this._multiple,\n undefined,\n undefined,\n (a, b) => {\n return this.compareWith(a.value, b.value);\n }\n );\n this.stateChanges.next();\n }\n\n /** @ignore */\n public ngAfterViewInit(): void {\n this.selectionModel.changed$\n .pipe(takeUntil(this._ngDestroy))\n .subscribe(changeEvent => {\n changeEvent.added.forEach(option =>\n this.options\n .find(o => this.compareWith(o.value, option.value))\n ?.select()\n );\n changeEvent.removed.forEach(option =>\n this.options\n .find(o => this.compareWith(o.value, option.value))\n ?.deselect()\n );\n });\n\n this.options.changes\n .pipe(startWith(null), takeUntil(this._ngDestroy))\n .subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this._ngDestroy.next();\n this._ngDestroy.complete();\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n public abstract readonly controlType: string;\n\n public abstract readonly supportsAffixes: boolean;\n\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(value: any) {\n const hasAssigned = this._assignValue(value);\n\n if (hasAssigned) {\n this._cvaOnChange(value);\n }\n }\n protected _value: any;\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n public get focused(): boolean {\n return this._focused || this.dropdownOpen;\n }\n protected _focused = false;\n\n /* ControlValueAccessor */\n /** @ignore */\n public writeValue(value: any): void {\n this._assignValue(value);\n }\n\n /** @ignore */\n public registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n\n /* Internals */\n\n protected onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the CVA touched callback only if the dropdown is closed.\n */\n protected onBlur(): void {\n this._focused = false;\n\n if (!this.disabled && !this.dropdownOpen) {\n this._cvaOnTouched();\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n protected clearSelection(): void {\n this.value = null;\n this.focus();\n this._propagateChanges();\n }\n\n protected handleSearchSubmit(evt: Event): void {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.activeIndex < 0 || this.activeIndex >= this.options.length) return;\n\n this.options.get(this.activeIndex)?.nativeElement.click();\n }\n\n protected handleSearchUpDown(evt: Event, direction: 'up' | 'down'): void {\n evt.preventDefault();\n\n if (direction === 'up') {\n if (this.activeIndex === this.options.length - 1) {\n this.activeIndex = (this.activeIndex + 1) % this.options.length;\n } else {\n this.activeIndex++;\n }\n } else {\n if (this.activeIndex <= 0) {\n this.activeIndex = this.options.length - 1;\n } else {\n this.activeIndex--;\n }\n }\n\n this.changeDetector.markForCheck();\n }\n\n protected markActive(index: number): void {\n this.activeIndex = index;\n this.changeDetector.markForCheck();\n }\n\n protected selectedIsSingle(\n selected: ISelectOption | ISelectOption[]\n ): selected is ISelectOption {\n return !Array.isArray(selected);\n }\n\n private _initializeSelection(): void {\n // We defer this work into a promise in order to avoid tripping Angular's\n // \"Expression has changed after it was checked\" error.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n\n private _setSelectionByValue(value: any | any[]): void {\n if (this.search === 'none') {\n this.selectionModel.clear();\n }\n\n if (this._multiple && value) {\n if (!Array.isArray(value)) {\n throw getImpdcSelectNonArrayValueError();\n }\n\n value.forEach(currentValue => this._selectOptionByValue(currentValue));\n this._sortValues();\n } else {\n this._selectOptionByValue(value);\n }\n\n this.changeDetector.detectChanges();\n }\n\n private _selectOptionByValue(\n value: any\n ): SelectOptionDisplayComponent | undefined {\n const correspondingOption = this.options.find(\n (option: SelectOptionDisplayComponent) => {\n if (this.selectionModel.isSelected(option)) {\n return false;\n }\n\n try {\n return option.value != null && this._compareWith(option.value, value);\n } catch (error) {\n console.warn(error);\n return false;\n }\n }\n );\n\n if (correspondingOption) {\n this.selectionModel.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n /** Assigns a value to the select control. Returns a boolean indicating whether or not\n * the value has changed.\n */\n private _assignValue(newValue: any | any[]): boolean {\n if (\n newValue !== this._value ||\n (this._multiple && Array.isArray(newValue))\n ) {\n if (this.options) {\n this.selectionModel.clear();\n this._setSelectionByValue(newValue);\n }\n\n this._value = newValue;\n return true;\n }\n\n return false;\n }\n\n private _resetOptions(): void {\n const changedOrDestroyed = merge(this.options.changes, this._ngDestroy);\n\n this.optionSelectionChanges\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n\n if (event.isUserInput && !this._multiple && this.dropdownOpen) {\n this.ngbDropdown.close();\n this.focus();\n }\n });\n\n merge(...this.options.map(option => option.stateChanges))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n this.changeDetector.detectChanges();\n this.stateChanges.next();\n });\n }\n\n private _onSelect(\n option: SelectOptionDisplayComponent,\n isUserInput: boolean\n ): void {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.value == null && !this._multiple) {\n option.deselect();\n this.selectionModel.clear();\n\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected\n ? this.selectionModel.select(option)\n : this.selectionModel.deselect(option);\n }\n\n if (this._multiple) {\n this._sortValues();\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n\n private _sortValues(): void {\n if (\n this._multiple &&\n (this.search === 'none' || this.search === 'static')\n ) {\n const options = this.staticOptions.toArray();\n\n this.selectionModel.sort((a, b) => {\n return (\n options.findIndex(o => this.compareWith(o.value, a.value)) -\n options.findIndex(o => this.compareWith(o.value, b.value))\n );\n });\n\n this.stateChanges.next();\n }\n }\n\n protected _propagateChanges(fallbackValue?: any): void {\n let valToEmit: any = null;\n\n if (this._multiple) {\n valToEmit = (this.selected as ISelectOption[]).map(\n option => option.value\n );\n } else {\n valToEmit = this.selected\n ? (this.selected as ISelectOption).value\n : fallbackValue;\n }\n\n this._value = valToEmit;\n this.valueChange.emit(valToEmit);\n this._cvaOnChange(valToEmit);\n this.selectionChange.emit(this._buildChangeEvent(valToEmit));\n }\n\n protected _buildChangeEvent(value: any): SelectChangeEvent<this> {\n return new SelectChangeEvent(this, value);\n }\n\n /** @ignore */\n protected _deselectOption(\n option: ISelectOption,\n markTouched: boolean = true\n ): void {\n if (this._multiple && this.selectionModel.isSelected(option)) {\n this.selectionModel.deselect(option);\n this._propagateChanges();\n\n if (markTouched) {\n this._cvaOnTouched();\n }\n\n this.changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _scrollToSelectedOption(): void {\n setTimeout(() => {\n if (this.dropdownOpen && this.selected && !Array.isArray(this.selected)) {\n const selectedOptionElement = this.options.find(\n o =>\n !Array.isArray(this.selected) &&\n this.compareWith(o.value, this.selected.value)\n );\n selectedOptionElement?.nativeElement.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'instant'\n });\n }\n }, ON_OPEN_AUTO_SCROLL_TIMEOUT_MS);\n }\n}\n\n/**\n * The `SelectComponent` (`<impdc-select`) is a select-style dropdown input where an item (or multiple items) can be picked\n * from a list of *unique* available options. This component can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, add `SelectModule` to the `imports` array of the relevant `NgModule` or standalone component.\n */\n@Component({\n selector: 'impdc-select',\n exportAs: 'impdcSelect',\n standalone: true,\n imports: [\n CommonModule,\n AsyncPipe,\n ReactiveFormsModule,\n NgbDropdownModule,\n IconModule,\n SelectOptionDisplayComponent,\n SelectValueTagsDisplayComponent,\n FormFieldModule,\n InputDirective,\n BadgeModule\n ],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n 'disabled',\n { name: 'tabIndex', transform: numberAttribute },\n 'search',\n 'placeholder',\n { name: 'required', transform: booleanAttribute },\n 'compareWith',\n 'dropdownContainer',\n 'errorStateMatcher'\n ],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['selectionChange', 'valueChange', 'searchTextChanges'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-select]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-select--required]': 'required',\n '[class.impdc-select--disabled]': 'disabled',\n '[class.impdc-select--invalid]': 'errorState',\n '[class.impdc-select--empty]': 'empty',\n '[class.impdc-select--multiple]': 'multiple',\n '(focus)': 'onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: SelectComponent\n },\n {\n provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n useExisting: SelectComponent\n },\n {\n provide: IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n useExisting: SelectComponent\n }\n ]\n})\nexport class SelectComponent\n extends _SelectComponentBase\n implements ISelectValueBadgesParentComponent\n{\n public readonly controlType: string = 'impdc-select';\n public readonly supportsAffixes: boolean = true;\n\n constructor(@Attribute('tabindex') tabIndex?: string) {\n super(`impdc-select-${nanoid()}`, tabIndex);\n }\n\n /**\n * Allow the user to click a button inside of the select control and clear their selection(s);\n *\n * @default true\n */\n @Input({ transform: booleanAttribute })\n public allowClear: boolean = true;\n\n @Input({ transform: booleanAttribute })\n public override get multiple(): boolean {\n return this._multiple;\n }\n public override set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getImpdcSelectDynamicMultipleError();\n }\n\n this._multiple = value;\n }\n\n @Input()\n public multipleDisplay: 'inside' | 'outside' = 'inside';\n\n /** @ignore */\n public deselectOption(option: ISelectOption): void {\n this._deselectOption(option);\n }\n}\n","<div\n ngbDropdown\n #dropdown=\"ngbDropdown\"\n [autoClose]=\"multiple ? 'outside' : true\"\n [container]=\"dropdownContainer\"\n [dropdownClass]=\"dropdownContainer === 'body' ? 'impartner-hex' : ''\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"h-100 w-100\">\n <button\n #toggleButton\n class=\"impdc-select--toggle btn border-0 h-100 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ngbDropdownToggle>\n @if (empty) {\n <span class=\"impdc-select--text impdc-select--placeholder\">{{\n placeholder\n }}</span>\n } @else { @if (selectedIsSingle(selected)) {\n <span class=\"impdc-select--text impdc-select--value-text\">\n {{ selected.label }}\n </span>\n } @else if (multipleDisplay === 'inside') {\n <impdc-select-value-tags-display />\n } @else {\n <span class=\"impdc-select--text impdc-select--placeholder\">{{\n placeholder\n }}</span>\n } @if (!disabled && allowClear) {\n <button\n type=\"button\"\n class=\"impdc-select--clear-btn btn btn-xs btn-link text-gray-400 ms-auto\"\n (click)=\"$event.stopPropagation(); dropdown.close(); clearSelection()\">\n <impdc-icon name=\"times\" [size]=\"16\"></impdc-icon>\n </button>\n } }\n </button>\n <div\n ngbDropdownMenu\n class=\"impdc-select--dropdown-menu bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <div *ngIf=\"search !== 'none'\" class=\"impdc-select--search\">\n <impdc-form-field>\n <span impdcTextPrefix (click)=\"searchInput.focus()\">\n <impdc-icon name=\"search\"></impdc-icon>\n </span>\n <input\n #searchInput\n impdcInput\n [formControl]=\"searchControl\"\n class=\"impdc-select--search-input\"\n type=\"search\"\n (keydown.enter)=\"handleSearchSubmit($event)\"\n (keydown.arrowdown)=\"handleSearchUpDown($event, 'up')\"\n (keydown.arrowup)=\"handleSearchUpDown($event, 'down')\" />\n <span impdcTextSuffix>\n <button\n *ngIf=\"searchControl.value\"\n type=\"button\"\n class=\"impdc-select--clear-btn btn btn-xs btn-link text-gray-400 ms-auto\"\n (click)=\"searchControl.reset(); searchInput.focus()\">\n <impdc-icon name=\"times\" [size]=\"16\"></impdc-icon>\n </button>\n </span>\n </impdc-form-field>\n </div>\n <div class=\"impdc-select--options\">\n @for (option of filteredOptions$ | async; track option.value; let idx =\n $index; let first = $first) { @if (option.groupLabel &&\n option.showGroupLabel) {\n <div class=\"impdc-select--option-group-label\">\n {{ option.groupLabel }}\n </div>\n }\n <impdc-select-option-display\n [class.impdc-select-option--active]=\"idx === activeIndex\"\n [class.impdc-select-option--grouped]=\"!!option.groupLabel\"\n [groupLabel]=\"option.groupLabel\"\n [label]=\"option.label\"\n [value]=\"option.value\"\n [disabled]=\"!!option.disabled\"\n [selected]=\"option.selected\"\n [highlightText]=\"searchControl.value\"\n (mouseenter)=\"markActive(idx)\"\n (focus)=\"markActive(idx)\" />\n }\n </div>\n </div>\n</div>\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n OnDestroy,\n Output\n} from '@angular/core';\nimport { IElementSize } from './element-size.interface';\n\n@Directive({\n selector: '[impdcSizeDetector]'\n})\nexport class SizeDetectorDirective implements OnDestroy {\n @Output() public readonly resized = new EventEmitter<IElementSize>();\n\n private _resizeObserver: ResizeObserver | null = null;\n\n constructor(private readonly _elementRef: ElementRef) {\n this._observe();\n }\n\n public ngOnDestroy(): void {\n this.resized.complete();\n this._unobserve();\n }\n\n private _observe(): void {\n this._resizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]): void => {\n window.requestAnimationFrame(() => {\n const elementEntry = entries && entries[0];\n if (elementEntry) {\n this.resized.emit({\n height: elementEntry.contentRect.height,\n width: elementEntry.contentRect.width\n });\n }\n });\n }\n );\n\n this._resizeObserver.observe(this._elementRef.nativeElement);\n }\n\n private _unobserve(): void {\n this._resizeObserver &&\n this._resizeObserver.unobserve(this._elementRef.nativeElement);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport { sanitize } from '../../utilities';\nimport { IElementSize } from '../size-detection';\n\n/**\n * The `PaginationComponent` (`<impdc-pagination` or `<div impdc-pagination`) is a control for paged content such as tables or lists.\n * To use, import `PaginationModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ModalModule` imports and exports ImpdcFormsModule and [ButtonModule](./?path=/docs/design-components-button).\n */\n@Component({\n selector: 'impdc-pagination, div[impdc-pagination]',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss']\n})\nexport class PaginationComponent {\n private _summary =\n 'Showing {firstPageResult} to {lastPageResult} of {total} results';\n\n /**\n * The current page.\n */\n @Input()\n public page = 0;\n\n /**\n * The number of items shown per page. Items are commonly displayed as rows in a table.\n */\n @Input()\n public perPage = 10;\n\n /**\n * The total number of items.\n */\n @Input()\n public total = 0;\n\n /**\n * A formattable text summary of pagination data. `{firstPageResult}` The first item within the current page.\n * `{lastPageResult}` The last item within the current page. `{total}` The total number of items.\n */\n @Input()\n public set summary(summary: string) {\n this._summary = summary;\n }\n\n public get summary(): string {\n return sanitize(this._summary)\n .replace('{firstPageResult}', `<b>${this.firstPageResult}</b>`)\n .replace('{lastPageResult}', `<b>${this.lastPageResult}</b>`)\n .replace('{total}', `<b>${this.total}</b>`);\n }\n\n /**\n * The label text for the per page select input.\n */\n @Input()\n public perPageLabel = '';\n\n /**\n * Emitted when the page number is changed, specifying the target page number.\n */\n @Output() public readonly goToPage = new EventEmitter<number>();\n\n /**\n * Emitted when the per page is changed, specifying the new value.\n */\n @Output() public readonly perPageChange = new EventEmitter<number>();\n\n public get totalPages(): number {\n if (this.total < 1 || this.perPage < 1) {\n return 0;\n }\n\n if (this.total < this.perPage) {\n return 1;\n }\n\n return Math.ceil(this.total / this.perPage);\n }\n\n public get firstPageResult(): number {\n const page = this._getPageClamped();\n if (this.total < 1 || page < 1 || this.perPage < 1) {\n return 0;\n }\n\n if (page === 1) {\n return 1;\n }\n\n if (page > Math.ceil(this.total / this.perPage)) {\n return this.total;\n }\n\n return (page - 1) * this.perPage + 1;\n }\n\n public get lastPageResult(): number {\n const page = this._getPageClamped();\n if (this.total <= 0 || page < 1 || this.perPage < 1) {\n return 0;\n }\n\n if (page === 1) {\n if (this.total < this.perPage) {\n return this.total;\n } else {\n return this.perPage;\n }\n }\n\n if (this.total < this.perPage * page) {\n return this.total;\n } else {\n return this.perPage * page;\n }\n }\n\n /** @ignore */\n public mobile = false;\n\n constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n public handleResize(size: IElementSize): void {\n this.mobile = size.width < 640;\n this._changeDetectorRef.detectChanges();\n }\n\n public goToPreviousPage(): void {\n const page = this._getPageClamped();\n if (page <= 1) {\n return;\n }\n\n const previousPage = page - 1;\n this.page = previousPage;\n\n this.goToPage.emit(previousPage);\n }\n\n public goToNextPage(): void {\n const page = this._getPageClamped();\n if (page >= this.totalPages) {\n return;\n }\n\n const nextPage = page + 1;\n this.page = nextPage;\n\n this.goToPage.emit(nextPage);\n }\n\n public goToExactPageFromEvent({ target }: FocusEvent): void {\n this.goToExactPage((target as HTMLInputElement)?.value);\n }\n\n public goToExactPage(page: number | string): void {\n const targetPage = this._getPageClamped(page);\n\n if (targetPage === this.page) {\n return;\n }\n\n this.page = targetPage;\n\n this.goToPage.emit(this.page);\n }\n\n public handlePerPageChange(): void {\n this.perPageChange.emit(this.perPage);\n }\n\n public preventDefaultAndBlur(event: Event) {\n // prevents PRM form submit\n event.preventDefault();\n (event.target as HTMLInputElement).blur();\n }\n\n private _getPageClamped(page?: string | number): number {\n page = Number(page || this.page || 0);\n if (isNaN(page) || page < 1) {\n return 1;\n }\n\n if (page > this.totalPages) {\n return this.totalPages;\n }\n\n return page;\n }\n}\n","<div\n class=\"pagination-container\"\n impdcSizeDetector\n (resized)=\"handleResize($event)\">\n <div class=\"mobile-pagination\" [ngClass]=\"{ 'd-none': !mobile }\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\" [ngClass]=\"{ 'd-none': mobile }\">\n <div class=\"rows-per-page\">\n <div>{{ perPageLabel }}</div>\n <div>\n <impdc-form-field>\n <impdc-select\n allowClear=\"false\"\n [(ngModel)]=\"perPage\"\n (selectionChange)=\"handlePerPageChange()\">\n <impdc-select-option [value]=\"10\" label=\"10\"></impdc-select-option>\n <impdc-select-option [value]=\"25\" label=\"25\"></impdc-select-option>\n <impdc-select-option [value]=\"50\" label=\"50\"></impdc-select-option>\n <impdc-select-option\n [value]=\"100\"\n label=\"100\"></impdc-select-option>\n <impdc-select-option\n [value]=\"200\"\n label=\"200\"></impdc-select-option>\n </impdc-select>\n </impdc-form-field>\n </div>\n </div>\n <div class=\"pagination-rhs\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left first\"></i>\n <i impdc-icon name=\"chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n <i impdc-icon name=\"chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[impdc-toggle-input]',\n standalone: true,\n template: '',\n styleUrls: ['./toggle-input.component.scss']\n})\nexport class ToggleInputComponent {\n @HostBinding('class.form-check-input') classFormCheck = true;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n HostBinding,\n ElementRef,\n ChangeDetectorRef,\n AfterViewChecked,\n ContentChild\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport { ToggleInputComponent } from './components';\n\n@Component({\n selector: 'impdc-toggle',\n standalone: true,\n imports: [CommonModule, ToggleInputComponent],\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss']\n})\nexport class ToggleComponent implements AfterViewChecked {\n private _id = `impdc-toggle-${nanoid()}`;\n\n @Input()\n isSwitch = false;\n\n @Input()\n label = '';\n\n @Input()\n description = '';\n\n @Input()\n inline = false;\n\n @Input()\n switchIcons = false;\n\n @Input()\n layout: 'check-start' | 'check-end' = 'check-start';\n\n // we don't want this to be brandable yet\n // @Input()\n branded = false;\n\n @HostBinding('class') private classDefaults = 'impdc form-check';\n\n @HostBinding('class.impdc-toggle-has-description')\n private get classHasDescription() {\n return this.showDescription;\n }\n\n @HostBinding('class.form-switch') private get classFormSwitch() {\n return this.isCheckbox && this.isSwitch;\n }\n\n @HostBinding('class.form-check-inline') private get classFormCheckInline() {\n return this.inline;\n }\n\n @HostBinding('class.form-switch-icons') private get classFormSwitchIcons() {\n return this.isCheckbox && this.isSwitch && this.switchIcons;\n }\n\n @HostBinding('class.branded') private get classBranded() {\n return this.branded;\n }\n\n @HostBinding('class.flex-row-reverse') private get classFlexRowReverse() {\n return this.layout === 'check-end';\n }\n\n @HostBinding('class.justify-content-end')\n private get classJustifyContentEnd() {\n return this.layout === 'check-end';\n }\n\n @ContentChild(ToggleInputComponent, { read: ElementRef })\n inputRef?: ElementRef<HTMLInputElement>;\n\n get id(): string {\n return this._id;\n }\n\n get isCheckbox(): boolean {\n if (!this.inputRef) {\n return false;\n }\n\n return this.inputRef.nativeElement.getAttribute('type') === 'checkbox';\n }\n\n get showDescription(): boolean {\n return !this.inline && !!this.label && !!this.description;\n }\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewChecked(): void {\n if (this.inputRef) {\n if (!this.inputRef.nativeElement.id) {\n this.inputRef.nativeElement.id = this._id;\n } else if (this._id !== this.inputRef.nativeElement.id) {\n this._id = this.inputRef.nativeElement.id;\n }\n }\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div class=\"impdc-toggle-input\">\n <ng-content select=\"[impdc-toggle-input]\"></ng-content>\n</div>\n<div *ngIf=\"label\" class=\"impdc-toggle-info\">\n <label\n *ngIf=\"label\"\n class=\"form-check-label impdc-toggle-label\"\n [attr.for]=\"id\"\n >{{ label }}</label\n >\n <label\n *ngIf=\"showDescription\"\n class=\"impdc-toggle-description\"\n [attr.for]=\"id\"\n >{{ description }}</label\n >\n</div>\n","import { NgModule } from '@angular/core';\nimport { ToggleComponent } from './toggle.component';\nimport { ToggleInputComponent } from './components';\n\n@NgModule({\n imports: [ToggleComponent, ToggleInputComponent],\n exports: [ToggleComponent, ToggleInputComponent]\n})\nexport class ToggleModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../utilities';\nimport { ImpdcFormRoot, IMPDC_FORM_ROOT } from '../../component';\nimport { ErrorStateMatcher } from '../../services';\nimport {\n HasTabIndex,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n mixinErrorState,\n mixinTabIndex\n} from '../../shared';\nimport { ToggleModule } from '../shared';\n\nexport class CheckboxChangeEvent {\n constructor(\n /** The specific checkbox that changed. */\n public readonly source: CheckboxComponent,\n /** Whether the changed checkbox was checked or unchecked at the time of the event. */\n public readonly checked: boolean\n ) {}\n}\n\nabstract class CheckboxComponentBase {\n public readonly stateChanges = new Subject<void>();\n\n abstract disabled: boolean;\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n}\n\nconst _CheckboxComponentMixinBase = mixinTabIndex(\n mixinErrorState(CheckboxComponentBase)\n);\n\n/**\n * The `CheckboxComponent` (`<impdc-checkbox`) is an input with a simple boolean value as a checkbox or toggle switch.\n * This component can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, import `CheckboxModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-checkbox',\n standalone: true,\n imports: [CommonModule, ToggleModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-checkbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'null',\n '[class.impdc-checkbox--required]': 'required',\n '[class.impdc-checkbox--disabled]': 'disabled',\n '[class.impdc-checkbox--invalid]': 'errorState',\n '[class.impdc-checkbox--inline]': 'inline'\n },\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['tabIndex'],\n exportAs: 'impdcCheckControl',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: CheckboxComponent\n }\n ]\n})\nexport class CheckboxComponent\n extends _CheckboxComponentMixinBase\n implements\n DoCheck,\n OnDestroy,\n ControlValueAccessor,\n Validator,\n HasTabIndex,\n ImpdcFormFieldControl<boolean>,\n ICanUpdateErrorState,\n IHasErrorState\n{\n private readonly _uid: string = `impdc-checkbox-${nanoid()}`;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n @ViewChild('nativeInput', { read: ElementRef })\n protected _inputElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n public id: string = this._uid;\n\n /**\n * The primary label text for the checkbox control.\n */\n @Input()\n public label = '';\n\n /**\n * Text to provide additional description or context for the checkbox control. Does not display when `inline` is `true`.\n */\n @Input()\n public description = '';\n\n /**\n * Whether or not the input displays as a toggle switch.\n */\n @Input()\n public isSwitch = false;\n\n /**\n * When `isSwitch` is `true`, sets whether or not the toggle switch uses icons.\n */\n @Input()\n public switchIcons = false;\n\n /**\n * Whether or not the checkbox displays inline.\n */\n @Input()\n public inline = false;\n\n /**\n * Opt to display the checkbox control before the label (`'check-start'`) or after the label (`'check-end'`)\n */\n @Input()\n public layout: 'check-start' | 'check-end' = 'check-start';\n\n /**\n * Whether or not the checkbox input is checked.\n */\n @Input()\n public get checked(): boolean {\n return this.value;\n }\n public set checked(value: BooleanInput) {\n this.value = value;\n this._cvaOnChange(this.value);\n }\n\n /**\n * Whether or not the checkbox input is in an `indeterminate` state.\n */\n @Input()\n public get indeterminate(): boolean {\n return this._indeterminate;\n }\n public set indeterminate(value: BooleanInput) {\n const coercedValue = coerceBooleanPropertyValue(value);\n const isChange = coercedValue !== this._indeterminate;\n this._indeterminate = coercedValue;\n\n if (isChange) {\n this.indeterminateChange.emit(this._indeterminate);\n }\n }\n private _indeterminate = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: BooleanInput) {\n const newDisabledState = coerceBooleanPropertyValue(value);\n\n if (newDisabledState !== this._disabled) {\n this._disabled = newDisabledState;\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Event emitted whenever the checkedness of the input changes.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly change: EventEmitter<CheckboxChangeEvent> =\n new EventEmitter<CheckboxChangeEvent>();\n\n /**\n * Event emitted whenever the control enters or leaves an `indeterminate` state.\n */\n @Output()\n public readonly indeterminateChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n\n public get inputId(): string {\n return `${this.id || this._uid}-input`;\n }\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n @Attribute('tabindex') tabIndex: string,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) formRoot: ImpdcFormRoot,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl | null\n ) {\n super(\n defaultErrorStateMatcher,\n formRoot,\n parentForm,\n parentFormGroup,\n ngControl\n );\n\n this.tabIndex = parseInt(tabIndex) || 0;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.control?.addValidators(() => {\n return this.validate();\n });\n }\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n\n public get value(): boolean {\n return this._value;\n }\n public set value(value: BooleanInput) {\n const newValue = coerceBooleanPropertyValue(value);\n\n if (newValue !== this._value) {\n this._value = newValue;\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n private _value = false;\n\n public get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n /**\n * Used to set requiredness of control in a template-based manner; not necessary when using the\n * Angular reactive forms API and 'required' or `requiredTrue` validators.\n */\n @Input()\n public get required(): boolean {\n if (this._required !== undefined) {\n return this._required;\n }\n\n const control = this.ngControl?.control;\n if (control) {\n const hasRequired = control.hasValidator(Validators.required);\n const hasRequiredTrue = control.hasValidator(Validators.requiredTrue);\n\n return hasRequired || hasRequiredTrue;\n }\n\n return false;\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public readonly controlType: string = 'impdc-check';\n public readonly supportsAffixes: boolean = false;\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(value: any): void {\n this.value = !!value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n\n /* Validator */\n\n /** @ignore */\n public validate(): ValidationErrors | null {\n return !this.disabled && this.required && !this.value\n ? { required: true }\n : null;\n }\n\n /* Internals */\n protected _getAriaChecked(): 'true' | 'false' | 'mixed' {\n if (this.checked) {\n return 'true';\n }\n\n return this.indeterminate ? 'mixed' : 'false';\n }\n\n protected _onBlur(): void {\n this._focused = false;\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n });\n }\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _handleCheckClick(): void {\n if (!this.disabled) {\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this.indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n\n this.checked = !this.checked;\n\n this._emitChangeEvents();\n }\n }\n\n protected _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n private _emitChangeEvents(): void {\n this._cvaOnChange(this.checked);\n this.change.emit(new CheckboxChangeEvent(this, this.checked));\n\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n\n /**\n * Prevent click events that come from the `<label/>` element from bubbling. This prevents the\n * click handler on the host from triggering twice when clicking on the `<label/>` element. After\n * the click event on the `<label/>` propagates, the browsers dispatches click on the associated\n * `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event\n * bubbles when the label is clicked.\n */\n protected _preventBubblingFromLabel(event: MouseEvent) {\n if (\n !!event.target &&\n !!this._inputElement &&\n !(event.target as HTMLElement).contains(this._inputElement.nativeElement)\n ) {\n event.stopPropagation();\n }\n }\n}\n","<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n [layout]=\"layout\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n","import { NgModule } from '@angular/core';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [CheckboxComponent],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {}\n","import { IRadioButton } from './radio-button.interface';\n\nexport class RadioChangeEvent {\n constructor(\n /** The specific radio button that changed. */\n public readonly source: IRadioButton,\n /** The selected value. */\n public readonly value: any\n ) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { IRadioButton, IRadioGroup } from './interfaces';\n\nexport const IMPDC_RADIO_GROUP = new InjectionToken<IRadioGroup>(\n 'ImpdcRadioGroup'\n);\n\nexport const IMPDC_RADIO_BUTTON = new InjectionToken<IRadioButton>(\n 'ImpdcRadioButton'\n);\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue,\n coerceNumberPropertyValue\n} from '../../../../../utilities';\nimport { UniqueSelectionDispatcher } from '../../../services/unique-selection-dispatcher.service';\nimport { HasTabIndex, mixinTabIndex } from '../../../shared/tab-index.mixin';\nimport { ToggleModule } from '../../shared';\nimport { IMPDC_RADIO_BUTTON, IMPDC_RADIO_GROUP } from '../injection-tokens';\nimport { RadioChangeEvent, IRadioButton, IRadioGroup } from '../interfaces';\n\nabstract class RadioButtonComponentBase {\n abstract disabled: boolean;\n constructor() {}\n}\n\nconst _RadioButtonComponentMixinBase = mixinTabIndex(RadioButtonComponentBase);\n\n@Component({\n selector: 'impdc-radio-button',\n standalone: true,\n imports: [CommonModule, ToggleModule],\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-radio-button',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[class.impdc-radio-button--required]': 'required',\n '[class.impdc-radio-button--invalid]': '_errorState',\n '[class.impdc-radio-button--disabled]': 'disabled',\n '[class.impdc-radio-button--inline]': 'inline'\n },\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['tabIndex'],\n exportAs: 'impdcRadioButton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IMPDC_RADIO_BUTTON,\n useExisting: RadioButtonComponent\n }\n ]\n})\nexport class RadioButtonComponent\n extends _RadioButtonComponentMixinBase\n implements\n IRadioButton,\n HasTabIndex,\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit\n{\n private readonly _uid: string = `impdc-radio-button-${nanoid()}`;\n private _removeUniqueSelectionListener: () => void = () => {};\n private _previousTabIndex?: number;\n\n @ViewChild('nativeInput', { read: ElementRef })\n private _inputElement!: ElementRef<HTMLInputElement>;\n\n @Input()\n public id: string = this._uid;\n\n /**\n * The unique name for a group of radio options; Inherited from the parent `RadioGroupDirective` when available.\n */\n @Input()\n public name!: string;\n\n /**\n * Property for setting ARIA \"label\" attribute.\n */\n @Input('aria-label')\n public ariaLabel?: string;\n\n /**\n * Property for setting ARIA \"labelled by\" attribute.\n */\n @Input('aria-labelledby')\n public ariaLabelledby?: string;\n\n /**\n * Property for setting ARIA \"described by\" attribute.\n */\n @Input('aria-describedby')\n public ariaDescribedby?: string;\n\n /**\n * Whether or not the radio input is checked/selected.\n */\n @Input()\n public get checked(): boolean {\n return this._checked;\n }\n public set checked(value: BooleanInput) {\n const newCheckedValue = coerceBooleanPropertyValue(value);\n\n if (this._checked !== newCheckedValue) {\n this._checked = newCheckedValue;\n\n if (\n newCheckedValue &&\n this._radioGroup &&\n this._radioGroup.value !== this.value\n ) {\n this._radioGroup.selected = this;\n } else if (\n !newCheckedValue &&\n this._radioGroup &&\n this._radioGroup.value === this.value\n ) {\n this._radioGroup.selected = null;\n }\n\n if (newCheckedValue) {\n this._radioDispatcher.notify(this.id, this.name);\n }\n\n this._changeDetector.markForCheck();\n }\n }\n protected _checked = false;\n\n /**\n * The specific value represented by the radio button.\n */\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n\n if (this._radioGroup) {\n if (!this.checked) {\n this.checked = this._radioGroup.value === value;\n }\n\n if (this.checked) {\n this._radioGroup.selected = this;\n }\n }\n }\n }\n protected _value: any = null;\n\n /**\n * Whether or not the radio button displays inline; Inherited from the parent `RadioGroupDirective` when available.\n */\n @Input()\n public get inline(): boolean {\n return (\n this._inline || (this._radioGroup && this._radioGroup.inline) || false\n );\n }\n public set inline(value: BooleanInput) {\n this._inline = coerceBooleanPropertyValue(value);\n }\n protected _inline?: boolean;\n\n /**\n * Used to enable or disable the radio button, but will always return `true` when the parent\n * `RadioGroupDirective` is already disabled.\n */\n @Input()\n public get disabled(): boolean {\n return (\n this._disabled || (this._radioGroup != null && this._radioGroup.disabled)\n );\n }\n public set disabled(value: BooleanInput) {\n const newDisabledState = coerceBooleanPropertyValue(value);\n\n if (this._disabled !== newDisabledState) {\n this._disabled = newDisabledState;\n this._changeDetector.markForCheck();\n }\n }\n protected _disabled = false;\n\n /** @ignore */\n @Input()\n public get required(): boolean {\n return (\n this._required || (this._radioGroup != null && this._radioGroup.required)\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n }\n protected _required = false;\n\n /**\n * The primary label text for the radio button.\n */\n @Input()\n public label = '';\n\n /**\n * Text to provide additional description or context for the radio button. Does\n * not display if `inline` is `true`.\n */\n @Input()\n public description = '';\n\n /**\n * Event emitted when the radio button becomes selected/checked.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly change = new EventEmitter<RadioChangeEvent>();\n\n protected get _errorState(): boolean {\n return this._radioGroup ? this._radioGroup.errorState : false;\n }\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n private _radioDispatcher: UniqueSelectionDispatcher,\n @Attribute('tabindex') tabIndex?: string,\n @Inject(IMPDC_RADIO_GROUP) @Optional() readonly _radioGroup?: IRadioGroup\n ) {\n super();\n\n if (tabIndex) {\n this.tabIndex = coerceNumberPropertyValue(tabIndex, 0);\n }\n }\n\n /** @ignore */\n public ngOnInit(): void {\n if (this._radioGroup) {\n this.checked = this._radioGroup.value === this._value;\n\n if (this.checked) {\n this._radioGroup.selected = this;\n }\n\n this.name = this._radioGroup.name;\n }\n\n this._removeUniqueSelectionListener = this._radioDispatcher.listen(\n (id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n }\n );\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n this._updateTabIndex();\n }\n\n /** @ignore */\n public ngAfterViewInit(): void {\n this._updateTabIndex();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this._removeUniqueSelectionListener();\n }\n\n /** @ignore */\n public markForCheck(): void {\n this._changeDetector.markForCheck();\n }\n\n protected _emitChangesEvent(): void {\n this.change.emit({ source: this, value: this._value });\n }\n\n protected _onBlur(): void {\n if (this._radioGroup) {\n this._radioGroup.touch();\n }\n }\n\n protected _onInputChange(event: Event): void {\n event.stopPropagation();\n\n if (!this.checked && !this.disabled) {\n const groupValueChanged =\n this._radioGroup && this.value !== this._radioGroup.value;\n this.checked = true;\n this._emitChangesEvent();\n\n if (this._radioGroup) {\n this._radioGroup.onChangeFn(this.value);\n\n if (groupValueChanged) {\n this._radioGroup.emitChangesEvent();\n }\n }\n }\n }\n\n protected _updateTabIndex(): void {\n const radioGroup = this._radioGroup;\n let tabIndexValue: number;\n\n if (!radioGroup || !radioGroup.selected || this.disabled) {\n tabIndexValue = this.tabIndex;\n } else {\n tabIndexValue = radioGroup.selected === this ? this.tabIndex : -1;\n }\n\n if (tabIndexValue !== this._previousTabIndex) {\n const inputElt: HTMLInputElement | undefined =\n this._inputElement?.nativeElement;\n\n if (inputElt) {\n inputElt.setAttribute('tabindex', tabIndexValue + '');\n this._previousTabIndex = tabIndexValue;\n }\n }\n }\n}\n","<impdc-toggle [label]=\"label\" [description]=\"description\" [inline]=\"inline\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"radio\"\n class=\"impdc-radio-button__native-control\"\n [class.is-invalid]=\"_errorState\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n (change)=\"_onInputChange($event)\"\n (blur)=\"_onBlur()\" />\n</impdc-toggle>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n DoCheck,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport {\n BooleanInput,\n coerceBooleanPropertyValue\n} from '../../../../../utilities';\nimport { Subject } from 'rxjs';\nimport { ImpdcFormRoot, IMPDC_FORM_ROOT } from '../../../component';\nimport { ErrorStateMatcher } from '../../../services';\nimport {\n IHasErrorState,\n ImpdcFormFieldControl,\n mixinErrorState\n} from '../../../shared';\nimport { IMPDC_RADIO_BUTTON, IMPDC_RADIO_GROUP } from '../injection-tokens';\nimport { RadioChangeEvent, IRadioButton, IRadioGroup } from '../interfaces';\n\nconst _RadioGroupDirectiveBase = mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n);\n\n/**\n * The `RadioGroupDirective` (`<impdc-radio-group`) is a container for `RadioButtonComponent` (`<impdc-radio-button`).\n * This directive/component can be used within a `FormFieldComponent` (`<impdc-form-field`).\n * To use, import `RadioModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'impdc-radio-group',\n exportAs: 'impdcRadioGroup',\n standalone: true,\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: RadioGroupDirective\n },\n {\n provide: IMPDC_RADIO_GROUP,\n useExisting: RadioGroupDirective\n }\n ],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n role: 'radiogroup',\n class: 'impdc-radio-group',\n '[class.impdc-radio-group--required]': 'required',\n '[class.impdc-radio-group--disabled]': 'disabled',\n '[class.impdc-radio-group--invalid]': 'errorState',\n '[class.impdc-radio-group--inline]': 'inline'\n }\n})\nexport class RadioGroupDirective<\n TRadioButton extends IRadioButton = IRadioButton\n >\n extends _RadioGroupDirectiveBase\n implements\n IRadioGroup,\n ControlValueAccessor,\n ImpdcFormFieldControl<any>,\n AfterContentInit,\n DoCheck,\n OnDestroy,\n IHasErrorState\n{\n @ContentChildren(IMPDC_RADIO_BUTTON, { descendants: true })\n protected _radioOptions!: QueryList<TRadioButton>;\n\n protected readonly _uid = `impdc-radio-group-${nanoid()}`;\n protected _initialized = false;\n\n private _previousControl?: AbstractControl | null;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n /**\n * The unique name for the group of radio options; Autogenerated by default.\n */\n @Input()\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n this._name = value || this._uid;\n this._updateRadioOptionNames();\n }\n protected _name: string = this._uid;\n\n /**\n * Whether or not the nested radio options should display inline.\n */\n @Input()\n public get inline(): boolean {\n return this._inline;\n }\n public set inline(value: BooleanInput) {\n this._inline = coerceBooleanPropertyValue(value);\n this._markRadioOptionsForCheck();\n }\n protected _inline = false;\n\n /**\n * A reference to the currently selected radio button component (eg. `<impdc-radio-button>`).\n */\n @Input()\n public get selected() {\n return this._selected;\n }\n public set selected(selected: TRadioButton | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioOption();\n }\n protected _selected: TRadioButton | null = null;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Event emitted whenever a new radio option is selected.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly change: EventEmitter<RadioChangeEvent> =\n new EventEmitter<RadioChangeEvent>();\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl | null\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @ignore */\n public ngAfterContentInit(): void {\n this._initialized = true;\n }\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n this._markRadioOptionsForCheck();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n\n this._updateSelectedRadioOptionFromValue();\n this._checkSelectedRadioOption();\n this.stateChanges.next();\n }\n }\n protected _value: any;\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n public get focused(): boolean {\n return this._focused;\n }\n protected _focused = false;\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanPropertyValue(value);\n this._markRadioOptionsForCheck();\n this.stateChanges.next();\n }\n protected _disabled = false;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public readonly controlType = 'impdc-radio-group';\n\n public readonly supportsAffixes: boolean = false;\n\n /* ControlValueAccessor */\n /** @ignore */\n writeValue(value: any): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n\n /* Internals */\n\n /** @ignore */\n public emitChangesEvent(): void {\n if (this._initialized) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.change.emit({ source: this._selected!, value: this._value });\n }\n }\n\n /** @ignore */\n public onChangeFn(value: any): void {\n this._cvaOnChange(value);\n }\n\n /** @ignore */\n public touch(): void {\n if (this._cvaOnTouched) {\n this._cvaOnTouched();\n }\n }\n\n protected _checkSelectedRadioOption(): void {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n protected _markRadioOptionsForCheck(): void {\n if (this._radioOptions) {\n this._radioOptions.forEach(option => option.markForCheck());\n }\n }\n\n protected _updateRadioOptionNames(): void {\n if (this._radioOptions) {\n this._radioOptions.forEach(option => {\n option.name = this.name;\n option.markForCheck();\n });\n }\n }\n\n protected _updateSelectedRadioOptionFromValue(): void {\n const isAlreadySelected =\n this._selected !== null && this._selected.value === this._value;\n\n if (this._radioOptions && !isAlreadySelected) {\n this._selected = null;\n this._radioOptions.forEach(option => {\n option.checked = this.value === option.value;\n\n if (option.checked) {\n this._selected = option;\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { RadioGroupDirective } from './radio-group/radio-group.directive';\n\n@NgModule({\n imports: [RadioButtonComponent, RadioGroupDirective],\n exports: [RadioButtonComponent, RadioGroupDirective]\n})\nexport class RadioModule {}\n","import { NgModule } from '@angular/core';\nimport { SelectOptionGroupComponent } from './option-group';\nimport { SelectOptionComponent } from './option';\nimport { SelectValueTagsDisplayComponent } from './value-tags-display';\nimport { SelectComponent } from './select.component';\n\n@NgModule({\n imports: [\n SelectOptionGroupComponent,\n SelectOptionComponent,\n SelectValueTagsDisplayComponent,\n SelectComponent\n ],\n exports: [\n SelectOptionGroupComponent,\n SelectOptionComponent,\n SelectValueTagsDisplayComponent,\n SelectComponent\n ]\n})\nexport class SelectModule {}\n","import { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Input,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport { IconModule } from '../../../icon';\nimport { TagComponent } from '../../../tag';\nimport { FormFieldModule } from '../../component';\nimport { ImpdcFormFieldControl } from '../../shared';\nimport { _SelectComponentBase } from '../select/select.component';\nimport { InputDirective } from '../input';\nimport {\n IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n ISelectOption,\n ISelectValueBadgesParentComponent,\n SelectOptionDisplayComponent,\n SelectValueTagsDisplayComponent\n} from '../select';\n\n/**\n * The `TagSelectComponent` (`<impdc-tag-select>`) is a form control where multiple \"tag\"-like values can\n * be picked from a list of *unique* available options. This component can be used within a `FormFieldComponent`\n * (`<impdc-form-field>`) component or on its own. To use, add `TagSelectComponent` to the `imports` array of\n * the relevant `NgModule` or standalone component.\n */\n@Component({\n selector: 'impdc-tag-select',\n exportAs: 'impdcTagSelect',\n standalone: true,\n imports: [\n CommonModule,\n AsyncPipe,\n ReactiveFormsModule,\n NgbDropdownModule,\n IconModule,\n SelectOptionDisplayComponent,\n SelectValueTagsDisplayComponent,\n FormFieldModule,\n InputDirective,\n TagComponent\n ],\n styleUrl: './tag-select.component.scss',\n templateUrl: './tag-select.component.html',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n 'disabled',\n { name: 'tabIndex', transform: numberAttribute },\n 'search',\n 'placeholder',\n { name: 'required', transform: booleanAttribute },\n 'compareWith',\n 'dropdownContainer',\n 'errorStateMatcher'\n ],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['selectionChange', 'valueChange', 'searchTextChanges'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-tag-select--required]': 'required',\n '[class.impdc-tag-select--disabled]': 'disabled',\n '[class.impdc-tag-select--invalid]': 'errorState',\n '[class.impdc-tag-select--empty]': 'empty',\n '(focus)': 'onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: TagSelectComponent\n },\n {\n provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,\n useExisting: TagSelectComponent\n },\n {\n provide: IMPDC_SELECT_VALUE_BADGES_PARENT_COMPONENT,\n useExisting: TagSelectComponent\n }\n ]\n})\nexport class TagSelectComponent\n extends _SelectComponentBase\n implements ISelectValueBadgesParentComponent\n{\n public readonly controlType: string = 'impdc-tag-select';\n public readonly supportsAffixes: boolean = false;\n\n /**\n * Render the control is a readonly state.\n *\n * Semantically distinct from `disabled`, `readonly` controls will still have their values bound in\n * Angular forms and `FormGroup`s, whereas a disabled control's value would be omitted.\n */\n @Input({ transform: booleanAttribute })\n public readonly = false;\n\n /**\n * The maximum number of values that will be displayed inline before truncation occurs.\n */\n @Input({ transform: numberAttribute })\n public truncateThreshold = 8;\n\n /**\n * Text to be shown when displayed values are truncated, allowing the user to view all selected values.\n */\n @Input()\n public showMoreLabel = 'Show more...';\n\n /**\n * Text to be shown when displayed values have been expanded beyond the truncation threshold, allowing\n * the user collapse the view again.\n */\n @Input()\n public showLessLabel = 'Show less...';\n\n constructor(@Attribute('tabindex') tabIndex?: string) {\n super(`impdc-tag-select-${nanoid()}`, tabIndex);\n\n this._multiple = true;\n this._placeholder = 'Add Tags';\n }\n\n /** @ignore */\n public deselectOption(option: ISelectOption): void {\n this._deselectOption(option);\n }\n\n protected toggleDropdown(evt: Event): void {\n if (!this.ngbDropdown || this.disabled) {\n return;\n }\n\n evt.stopPropagation();\n evt.preventDefault();\n this.ngbDropdown.toggle();\n }\n}\n","<impdc-select-value-tags-display\n rounded=\"true\"\n [readonly]=\"readonly\"\n [truncateThreshold]=\"truncateThreshold\"\n [showMoreLabel]=\"showMoreLabel\"\n [showLessLabel]=\"showLessLabel\">\n <div\n ngbDropdown\n #dropdown=\"ngbDropdown\"\n [class.d-none]=\"readonly || disabled\"\n autoClose=\"outside\"\n [container]=\"dropdownContainer\"\n [dropdownClass]=\"dropdownContainer === 'body' ? 'impartner-hex' : ''\"\n (openChange)=\"handleOpenChange($event)\">\n @if (!readonly && !disabled) {\n <impdc-tag\n #toggleButton\n class=\"impdc-tag-select--toggle no-caret\"\n theme=\"outline\"\n [rounded]=\"true\"\n (focus)=\"onFocus()\"\n (click)=\"toggleDropdown($event)\"\n ngbDropdownAnchor>\n {{ empty ? placeholder : '' }}\n <impdc-icon name=\"plus\" theme=\"light\" />\n </impdc-tag>\n }\n <div\n ngbDropdownMenu\n class=\"impdc-tag-select--dropdown-menu bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <div *ngIf=\"search !== 'none'\" class=\"impdc-tag-select--search\">\n <impdc-form-field>\n <span impdcTextPrefix (click)=\"searchInput.focus()\">\n <impdc-icon name=\"search\"></impdc-icon>\n </span>\n <input\n #searchInput\n impdcInput\n [formControl]=\"searchControl\"\n class=\"impdc-tag-select--search-input\"\n type=\"search\"\n (keydown.enter)=\"handleSearchSubmit($event)\"\n (keydown.arrowdown)=\"handleSearchUpDown($event, 'up')\"\n (keydown.arrowup)=\"handleSearchUpDown($event, 'down')\" />\n <span impdcTextSuffix>\n <button\n *ngIf=\"searchControl.value\"\n type=\"button\"\n class=\"impdc-tag-select--clear-btn btn btn-xs btn-link text-gray-400 ms-auto\"\n (click)=\"searchControl.reset(); searchInput.focus()\">\n <impdc-icon name=\"times\" [size]=\"16\"></impdc-icon>\n </button>\n </span>\n </impdc-form-field>\n </div>\n <div class=\"impdc-tag-select--options\">\n @for (option of filteredOptions$ | async; track option.value; let idx =\n $index; let first = $first) { @if (option.groupLabel &&\n option.showGroupLabel) {\n <div class=\"impdc-tag-select--option-group-label\">\n {{ option.groupLabel }}\n </div>\n }\n <impdc-select-option-display\n [class.impdc-select-option--active]=\"idx === activeIndex\"\n [class.impdc-select-option--grouped]=\"!!option.groupLabel\"\n [groupLabel]=\"option.groupLabel\"\n [label]=\"option.label\"\n [value]=\"option.value\"\n [disabled]=\"!!option.disabled\"\n [selected]=\"option.selected\"\n [highlightText]=\"searchControl.value\"\n (mouseenter)=\"markActive(idx)\"\n (focus)=\"markActive(idx)\" />\n }\n </div>\n </div>\n </div>\n</impdc-select-value-tags-display>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n CheckboxModule,\n InputDirective,\n RadioModule,\n SelectModule,\n TagSelectComponent\n} from './controls';\nimport { FormFieldModule } from './component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n FormFieldModule,\n CheckboxModule,\n RadioModule,\n SelectModule,\n TagSelectComponent,\n InputDirective\n ],\n exports: [\n FormFieldModule,\n CheckboxModule,\n RadioModule,\n SelectModule,\n TagSelectComponent,\n InputDirective\n ]\n})\nexport class ImpdcFormsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SizeDetectorDirective } from './directive/index';\n\n@NgModule({\n declarations: [SizeDetectorDirective],\n imports: [CommonModule],\n exports: [SizeDetectorDirective]\n})\nexport class SizeDetectionModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from '../button';\nimport { ImpdcFormsModule } from '../form-field';\nimport { IconModule } from '../icon';\nimport { PaginationComponent } from './pagination.component';\nimport { SizeDetectionModule } from '../size-detection';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ImpdcFormsModule,\n IconModule,\n SizeDetectionModule\n ],\n declarations: [PaginationComponent],\n exports: [ButtonModule, ImpdcFormsModule, IconModule, PaginationComponent]\n})\nexport class PaginationModule {\n constructor() {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'impdc-column-heading',\n templateUrl: './column-heading.component.html',\n styleUrls: ['./column-heading.component.scss']\n})\nexport class ColumnHeadingComponent {\n @Input()\n public isSortable = false;\n\n @Input()\n public columnIndex?: number;\n\n @Input()\n public sortColumnIndex?: number;\n\n @Input()\n public direction: 'asc' | 'desc' = 'asc';\n\n @Input()\n public text = '';\n\n public get sortedColumn(): boolean {\n return (\n this.sortColumnIndex !== undefined &&\n this.sortColumnIndex === this.columnIndex\n );\n }\n\n @Output()\n public sort = new EventEmitter<number>();\n\n public onSort(): void {\n this.sort.emit(this.columnIndex);\n }\n}\n","<a *ngIf=\"isSortable; else notClickable\" class=\"impdc-table-sort\">\n <span>\n {{ text }}\n </span>\n <span\n [ngClass]=\"sortedColumn ? 'visible' : 'invisible'\"\n impdc-icon\n [name]=\"direction === 'asc' ? 'arrow-up' : 'arrow-down'\"></span>\n</a>\n<ng-template #notClickable>\n {{ text }}\n</ng-template>\n","import { Component } from '@angular/core';\n\n/**\n * A container component for projecting displays and controls for performing bulk actions upon one\n * or more selected table rows. Elements to be projected should be decorated with `[selectedTotal]`\n * and `[bulkAction]` attributes.\n */\n@Component({\n selector: 'impdc-table-bulk-actions',\n templateUrl: './bulk-actions.component.html',\n styleUrls: ['./bulk-actions.component.scss']\n})\nexport class TableBulkActionsComponent {}\n","<div class=\"table-bulk-actions\">\n <div class=\"selected-total\">\n <ng-content select=\"[selectedTotal]\"></ng-content>\n </div>\n <div class=\"bulk-actions\">\n <ng-content select=\"[bulkAction]\"></ng-content>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Optional,\n Output\n} from '@angular/core';\nimport {\n ITableActionsColumnDef,\n ITableRowAction,\n ITableRowItem\n} from '../../interfaces';\nimport { BrandedDirective } from '../../../branding';\nimport { TableThemeHelper } from '../../helpers';\nimport { ButtonTheme } from '../../../button';\nimport { ComponentTheme } from '../../../../types';\n\n@Component({\n selector: 'impdc-row-actions',\n templateUrl: './row-actions.component.html',\n styleUrls: ['./row-actions.component.scss']\n})\nexport class RowActionsComponent {\n @Input({ required: true })\n public columnDef!: ITableActionsColumnDef<any>;\n\n @Input({ required: true })\n public rowItem!: ITableRowItem;\n\n @Input()\n public lastColumn = false;\n\n @Output()\n public actionClick = new EventEmitter<string>();\n\n /** @ignore */\n public branded = false;\n\n public constructor(@Optional() _branded: BrandedDirective) {\n this.branded = _branded ? true : false;\n }\n public isVisible(action: ITableRowAction): boolean {\n if (!action.isVisible) {\n return true;\n }\n\n return action.isVisible(this.rowItem);\n }\n\n public handleActionClick(apiName: string): void {\n this.actionClick.emit(apiName);\n }\n\n public getColor(action: ITableRowAction): string {\n return TableThemeHelper.getColor(action.theme);\n }\n\n protected getButtonThemeFromComponentTheme(\n componentTheme?: ComponentTheme\n ): ButtonTheme {\n switch (componentTheme) {\n case ComponentTheme.Primary:\n return 'primary';\n case ComponentTheme.Danger:\n return 'danger';\n case ComponentTheme.Secondary:\n default:\n return 'secondary';\n }\n }\n}\n","@if (columnDef.actions) { @if (columnDef.actions.length > 2) {\n<div [ngClass]=\"{ 'text-end': lastColumn }\">\n <div\n ngbDropdown\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom-end bottom-start top-end top-start\"\n class=\"lh-1\"\n #dropdown=\"ngbDropdown\">\n <button\n ngbDropdownToggle\n type=\"button\"\n class=\"row-actions-dropdown-toggle btn btn-link btn-sm no-caret p-0\">\n <impdc-icon name=\"ellipsis-v\" size=\"16\" theme=\"solid\"></impdc-icon>\n </button>\n <div ngbDropdownMenu>\n @for (action of columnDef.actions; track action.apiName) { @if\n (isVisible(action)) {\n <button\n type=\"button\"\n ngbDropdownItem\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } }\n </div>\n </div>\n</div>\n} @else {\n<div class=\"d-flex flex-row gap-2 justify-content-end\">\n <ng-container *ngFor=\"let action of columnDef.actions\">\n @if (isVisible(action)) { @if (columnDef.actionType === 'button') {\n <button\n impdcButton\n theme=\"secondary\"\n class=\"btn-xs\"\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } @else if (columnDef.actionType === 'link') {\n <a *ngIf=\"!branded\" (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n <a *ngIf=\"branded\" impdcBranded (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n } @else {\n <span\n impdc-icon\n [name]=\"action.iconName || 'edit'\"\n [ngClass]=\"getColor(action)\"\n class=\"row-actions-item\"\n (click)=\"handleActionClick(action.apiName)\">\n </span>\n } }\n </ng-container>\n</div>\n} }\n","import { Component, Input } from '@angular/core';\n\n/**\n * The `SpinnerComponent` (`<impdc-spinner` or `<div impdc-spinner`) is used when data is processing and content isn't ready to be interacted with yet.\n * To use, import `SpinnerModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-spinner, div[impdc-spinner]',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class SpinnerComponent {\n /**\n * Accessibility text used by screen readers.\n */\n @Input()\n public accessibilityText = 'Loading...';\n}\n","<div class=\"spinner-border\" role=\"status\">\n <span *ngIf=\"accessibilityText\" class=\"visually-hidden\">{{\n accessibilityText\n }}</span>\n</div>\n","import {\n Directive,\n EventEmitter,\n inject,\n Input,\n Output,\n signal\n} from '@angular/core';\nimport { NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n exportAs: 'impdcCollapseMonitor',\n selector: '[impdcCollapseMonitor]',\n hostDirectives: [\n {\n directive: NgbCollapse,\n inputs: ['ngbCollapse: impdcCollapseMonitor']\n }\n ]\n})\nexport class CollapseMonitorDirective {\n private readonly _ngbCollapse = inject(NgbCollapse);\n public readonly collapsed = signal(true);\n public readonly ngbCollapsing = signal(true);\n\n @Output()\n public readonly collapseChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n\n constructor() {\n // eagerly assert true as soon as *something* is expected to be shown, then assert false when we know we've fully collapsed\n this._ngbCollapse.ngbCollapseChange.subscribe(value => {\n this.ngbCollapsing.set(value);\n\n if (!value) {\n this.collapsed.set(value);\n this.collapseChange.emit(value);\n }\n });\n this._ngbCollapse.hidden.subscribe(() => {\n this.collapsed.set(true);\n this.collapseChange.emit(true);\n });\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n/**\n * `TableDirective` (`table[impdcTable]`) is a directive that adds Hex styling to a `table` element.\n */\n@Directive({\n selector: 'table[impdcTable]'\n})\nexport class TableDirective {\n /**\n * Stripes every other row in a slightly darker background color.\n */\n @Input()\n public striped = false;\n\n /**\n * Whether table rows should apply hover styles when hovered over via cursor.\n */\n @Input()\n public hover = false;\n\n /**\n * The layout algorithm to be used when rendering the table.\n */\n @HostBinding('style.table-layout')\n @Input()\n layout: 'auto' | 'fixed' = 'auto';\n\n @HostBinding('class.table') private classTable = true;\n\n @HostBinding('class.table-striped') private get classTableStriped() {\n return this.striped;\n }\n\n @HostBinding('class.table-hover') private get classTableHover() {\n return this.hover;\n }\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n ICellRenderer,\n ICustomCellRendererComponents,\n ITableRowItem,\n ITableRowItemValueTypes,\n TableColumnDef\n} from '../interfaces/index';\n\n@Directive({\n selector: '[impdcTableInjectComponent]'\n})\nexport class TableInjectComponentDirective implements OnInit {\n @Input({ required: true }) public columnDef!: TableColumnDef;\n @Input() public value: ITableRowItemValueTypes = '';\n @Input() public rowItem: ITableRowItem = { id: 0 };\n @Input() public customCellComponents: ICustomCellRendererComponents = {};\n\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _componentFactoryResolver: ComponentFactoryResolver\n ) {}\n\n public ngOnInit(): void {\n this._renderCustomCell();\n }\n\n private _renderCustomCell(): void {\n const { cellRendererComponent, cellRendererParams } = this.columnDef;\n if (!cellRendererComponent) {\n return;\n }\n\n const item = this.rowItem;\n const customCellComponent =\n this.customCellComponents[cellRendererComponent];\n\n this._viewContainerRef.clear();\n\n const componentFactory =\n this._componentFactoryResolver.resolveComponentFactory<ICellRenderer>(\n customCellComponent\n );\n const componentRef =\n this._viewContainerRef.createComponent<ICellRenderer>(componentFactory);\n\n componentRef.instance.value = this.value;\n componentRef.instance.rowItem = item;\n componentRef.instance.params = cellRendererParams;\n }\n}\n","import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Host,\n Input,\n OnChanges,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { get as getNestedValue, set as setNestedValue } from 'lodash';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { DEBOUNCE_TIME } from '../constants/index';\nimport { TableColumnType } from '../enumerations/index';\nimport {\n ICollapsibleRowContentContext,\n ICustomCellRendererComponents,\n ISortByPayload,\n ITableActionsColumnDef,\n ITableEventPayload,\n ITableRowActionPayload,\n ITableRowCollapseChange,\n ITableRowItem,\n ITableRowItemValueTypes,\n TableColumnDef\n} from '../interfaces/index';\nimport { CheckboxChangeEvent } from '../../form-field';\nimport { TableThemeHelper } from '../helpers';\nimport { ComponentTheme } from '../../../types';\nimport { BrandedDirective } from '../../branding';\nimport { PaginationComponent } from '../../pagination';\nimport { TableBulkActionsComponent } from '../components';\nimport { NgbCollapse } from '@ng-bootstrap/ng-bootstrap';\n\n/**\n * The `TableComponent` (`<impdc-table`) is a data table component.\n * To use, import `TableModule` from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-table',\n styleUrls: ['./table.component.scss'],\n templateUrl: './table.component.html'\n})\nexport class TableComponent implements OnChanges {\n /**\n * Whether the table data is currently being loaded. The `<impdc-spinner>` will show if data is loading.\n */\n @Input() public loading = false;\n\n /**\n * The visible columns of the table. Each `ITableColumnDef` defines properties regarding the display, formatting and interaction of the column's cells.\n * Column/cell color precedence is:\n * 1) `fieldColor` - allows an `ITableColumnDef` to delegate the responsibility of cell color to an `ITableRowItem` property.\n * 2) `colorGetter`- allows an `ITableColumnDef` to delegate the responsibility of cell color to a function of the `ITableRowItem` determined by the developer.\n * 3) `color` - a property of an `ITableColumnDef`.\n */\n @Input() public columnDefs: TableColumnDef<any>[] = [];\n\n /**\n * Whether the table is striped.\n */\n @Input() public striped = true;\n\n /**\n * Whether table rows should apply hover styles when hovered over via cursor.\n */\n @Input() public hover = true;\n\n /**\n * The layout algorithm to be used when rendering the table.\n */\n @Input() public layout: 'auto' | 'fixed' = 'auto';\n\n /**\n * Whether individual rows can be selected. Will be `true` if explicitly set to `true` or `canSelectAllRows` is `true`.\n */\n @Input() public set canSelectRows(value: boolean) {\n this._canSelectRows = value;\n }\n public get canSelectRows(): boolean {\n return this.canSelectAllRows || this._canSelectRows || !!this.bulkActions;\n }\n\n /**\n * Whether all rows can be selected at once. Will be `true` if explicitly set to `true` or if `TableBulkActionsComponent` is content projected.\n */\n @Input()\n public set canSelectAllRows(value: boolean) {\n this._canSelectAllRows = value;\n }\n\n public get canSelectAllRows(): boolean {\n return this._canSelectAllRows || !!this.bulkActions;\n }\n\n /**\n * The placeholder text and empty value display text for `<impdc-select>` instances in cells with a `ITableColumnDef` `columnType` = `SingleSelect` or `MultiSelect`.\n */\n @Input() public selectPlaceholder = '';\n\n /**\n * The `columnDefs` index of the currently sorted column.\n */\n @Input() public sortColumnIndex: number = 0;\n\n /**\n * The direction of the currently sorted column.\n */\n @Input() public sortDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * The table row data as an array of `ITableRowItem`.\n */\n @Input() public tableData: ITableRowItem[] = [];\n\n /**\n * An array of currently selected IDs from the `tableData` input. Array must be of type `(string | number)[]`.\n */\n @Input()\n public set selectedRowIds(value: (string | number)[]) {\n this._selectedRowIds = [...value];\n }\n public get selectedRowIds(): (string | number)[] {\n return [...this._selectedRowIds];\n }\n\n /**\n * The registered custom cell renderer components available to be used in the table instance.\n * For a given `ITableColumnDef` in the `columnDefs` input, the `cellRendererComponent` property should be set to the key of the registered component in this input.\n */\n @Input() public customCellComponents?: ICustomCellRendererComponents;\n\n /**\n * An optional template for content that may be rendered below a row in an collapsible view. Value can either be an Angular template or a function that can evaluated\n * to resolve to a template. The template will be rendered with a provided `ICollapsibleRowContentContext` object as template context, with the current `ITableRowData`\n * implicitly available as a default template key.\n */\n @Input() public collapsibleTemplate:\n | TemplateRef<ICollapsibleRowContentContext<any>>\n | null\n | ((row: any) => TemplateRef<ICollapsibleRowContentContext<any>> | null) =\n null;\n\n /**\n * The clickable control that will trigger expansion and collapse of content when using `collapsibleTemplate` functionality.\n * When set to `button`, the collapsible content's state can only be toggled from a clickable button at the start of the row.\n * When set to `row`, the entire row will become a clickable trigger.\n */\n @Input()\n public collapsibleTrigger: 'button' | 'row' = 'button';\n\n /**\n * Event emitted when one or multiple rows are selected. Emits `(string | number)[]` payload.\n */\n @Output() public readonly rowSelect: EventEmitter<(string | number)[]> =\n new EventEmitter<(string | number)[]>();\n\n /**\n * Event emitted when a column is sorted. Emits `ISortByPayload` payload.\n */\n @Output() public readonly sortBy: EventEmitter<ISortByPayload> =\n new EventEmitter<ISortByPayload>();\n\n /**\n * Event emitted when a row link is clicked. Emits `ITableEventPayload` payload.\n */\n @Output() public readonly linkClick: EventEmitter<ITableEventPayload<any>> =\n new EventEmitter<ITableEventPayload<any>>();\n\n /**\n * Event emitted when a row action is clicked. Emits an `ITableRowActionPayload` payload.\n */\n @Output()\n public readonly rowActionClick: EventEmitter<ITableRowActionPayload<any>> =\n new EventEmitter<ITableRowActionPayload<any>>();\n\n /**\n * Event emitted when a row input value is changed. Emitted cells of `columnType` `SingleSelect`, `MultiSelect`, `Input`, `Boolean` or `Icon`.\n * Not emitted if column definition property `disabled` = `true`. Emits `ITableEventPayload` payload.\n */\n @Output()\n public readonly inputChange: EventEmitter<ITableEventPayload<any>> =\n new EventEmitter<ITableEventPayload<any>>();\n\n /**\n * Event emitted when a row with collapsible content has its collapse state changed.\n */\n @Output()\n public readonly rowCollapseChange: EventEmitter<\n ITableRowCollapseChange<any>\n > = new EventEmitter<ITableRowCollapseChange<any>>();\n\n /** @ignore */\n @ContentChild(PaginationComponent)\n public paginationComponent?: PaginationComponent = undefined;\n\n /** @ignore */\n @ContentChild(TableBulkActionsComponent)\n public bulkActions?: TableBulkActionsComponent = undefined;\n\n /** @ignore */\n public readonly cellType = TableColumnType;\n /** @ignore */\n public allSelected = true;\n /** @ignore */\n public get someSelected(): boolean {\n return (\n !!this._selectedRowIds &&\n this._selectedRowIds.length > 0 &&\n !!this.tableData &&\n this.tableData.length > 0 &&\n this._selectedRowIds.length < this.tableData.length\n );\n }\n /** @ignore */\n public readonly branded: boolean = false;\n\n /** @ignore */\n public get tableSpan(): number {\n let cols = this.columnDefs.length;\n\n if (this.canSelectRows) {\n cols++;\n }\n\n if (this.collapsibleTemplate) {\n cols++;\n }\n\n return cols;\n }\n\n private _canSelectRows = false;\n private _canSelectAllRows = false;\n private _selectedRowIds: (string | number)[] = [];\n private readonly _inputChange = new EventEmitter<ITableEventPayload>();\n\n constructor(\n private readonly _datePipe: DatePipe,\n private readonly _percentPipe: PercentPipe,\n private readonly _decmialPipe: DecimalPipe,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Host() private _branded: BrandedDirective\n ) {\n this.branded = _branded ? true : false;\n this._inputChange\n .pipe(debounceTime(DEBOUNCE_TIME))\n .subscribe(this.inputChange);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['selectedRowIds'] || changes['tableData']) {\n if (\n !this.tableData ||\n !this.tableData.length ||\n !this.selectedRowIds ||\n !this.selectedRowIds.length\n ) {\n this.allSelected = false;\n } else {\n this.allSelected = this.selectedRowIds.length >= this.tableData.length;\n }\n }\n }\n\n /** @ignore */\n public getMailToValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string {\n const { columnType, truncated: truncated } =\n this._getColumnDefByIndex(columnIndex);\n let value = this._getValue(columnIndex, currentRow);\n\n if (columnType !== TableColumnType.Email) {\n return String(value);\n }\n value = value ? `mailto:${value}` : value;\n\n return String(value);\n }\n\n /** @ignore */\n public getStringValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string {\n const value = this.getValue(columnIndex, currentRow);\n\n if (Array.isArray(value)) {\n return value.join(';');\n }\n\n return String(value);\n }\n\n /** @ignore */\n public getValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string | string[] {\n const { columnType, truncated: truncated } =\n this._getColumnDefByIndex(columnIndex);\n let value = this._getValue(columnIndex, currentRow);\n\n switch (columnType) {\n case TableColumnType.Decimal: {\n value = this._decmialPipe.transform(Number(value) || 0) || '';\n break;\n }\n case TableColumnType.Date: {\n const date = new Date(String(value));\n const validDate = date instanceof Date && !isNaN(date.getTime());\n value = validDate\n ? this._datePipe.transform(date, 'MM/dd/yyyy') || ''\n : String(value);\n break;\n }\n case TableColumnType.DateTime: {\n const dateTime = new Date(String(value));\n const validDateTime =\n dateTime instanceof Date && !isNaN(dateTime.getTime());\n value = validDateTime\n ? this._datePipe.transform(dateTime, 'MM/dd/yyyy h:mm:ss a') || ''\n : String(value);\n break;\n }\n case TableColumnType.Link: {\n value = String(value).replace(/(^\\w+:|^)\\/\\//, '');\n break;\n }\n case TableColumnType.Percentage: {\n value = this._percentPipe.transform(Number(value) || 0) || '';\n break;\n }\n case TableColumnType.Url: {\n if (!/(http(s?)):\\/\\//i.test(String(value))) {\n value = `https://${value}`;\n }\n break;\n }\n case TableColumnType.Text: {\n if (Array.isArray(value)) {\n value = value.join('; ');\n }\n\n if (!truncated) {\n return value;\n }\n\n const truncateString = (string = '', maxLength = truncated) =>\n string.length > maxLength\n ? `${string.substring(0, maxLength)}…`\n : string;\n\n !!truncated\n ? (value = truncateString(String(value), truncated))\n : value;\n break;\n }\n case TableColumnType.MultiSelect:\n if (typeof value === 'string') {\n value = value.split(';')?.map(v => v.trim()) || [];\n }\n return value;\n }\n\n return String(value);\n }\n\n /** @ignore */\n public getRawValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): ITableRowItemValueTypes {\n const { field } = this._getColumnDefByIndex(columnIndex);\n\n if (!field) {\n return '';\n }\n\n return currentRow[field] || '';\n }\n\n /** @ignore */\n public getCellColor(\n columnDefinition: TableColumnDef,\n item: ITableRowItem\n ): string {\n return TableThemeHelper.getCellColor(columnDefinition, item);\n }\n\n /** @ignore */\n public getTheme(\n columnDefinition: TableColumnDef,\n item: ITableRowItem\n ): ComponentTheme {\n return (\n TableThemeHelper.getTheme(columnDefinition, item) ||\n ComponentTheme.Primary\n );\n }\n\n /** @ignore */\n public isSortedColumn(columnIndex: number): boolean {\n return columnIndex === this.sortColumnIndex;\n }\n\n /** @ignore */\n public isRowSelected(id: string | number): boolean {\n return this.selectedRowIds.includes(id);\n }\n\n /** @ignore */\n public handleSelectAll(event: CheckboxChangeEvent): void {\n if (!this.canSelectAllRows || !this.tableData) {\n return;\n }\n\n if (event.checked) {\n this._selectedRowIds = this.tableData?.map(row => row.id) || [];\n } else {\n this._selectedRowIds = [];\n }\n\n this._selectedRowIds.sort();\n this.allSelected = this.selectedRowIds.length >= this.tableData.length;\n\n this.rowSelect.emit(this.selectedRowIds);\n }\n\n /** @ignore */\n public handleSort(columnIndex: number): void {\n if (columnIndex === this.sortColumnIndex) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortColumnIndex = columnIndex;\n this.sortDirection = 'asc';\n }\n\n const field = this._getColumnDefByIndex(columnIndex).field || '';\n\n this.sortBy.emit({\n columnIndex,\n field,\n direction: this.sortDirection\n });\n }\n\n /** @ignore */\n public handleRowSelect(\n event: CheckboxChangeEvent,\n rowId: number | string\n ): void {\n if (!this.canSelectRows) {\n return;\n }\n\n if (event.checked && !this._selectedRowIds.includes(rowId)) {\n this._selectedRowIds.push(rowId);\n } else if (!event.checked && this._selectedRowIds.includes(rowId)) {\n const idx = this._selectedRowIds.indexOf(rowId);\n if (idx > -1) {\n this._selectedRowIds.splice(idx, 1);\n }\n }\n\n if (this._selectedRowIds.length) {\n this._selectedRowIds.sort();\n }\n\n this.allSelected = this.selectedRowIds.length >= this.tableData.length;\n this.rowSelect.emit(this.selectedRowIds);\n }\n\n /** @ignore */\n public handleCellValueChange(\n columnIndex: number,\n rowIndex: number,\n value: string | number | boolean | string[]\n ): void {\n const { field, columnType } = this._getColumnDefByIndex(columnIndex);\n let currentValue: string | number | boolean | string[] = value;\n\n if (columnType !== TableColumnType.Boolean && !Array.isArray(value)) {\n currentValue = isNaN(Number(value)) ? value : Number(value);\n }\n const item = this.tableData[rowIndex];\n\n setNestedValue(item, String(field), currentValue);\n\n this._inputChange.emit({\n columnIndex,\n item,\n value: currentValue\n });\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @ignore */\n public handleLinkClick(\n columnIndex: number,\n item: ITableRowItem,\n event: Event\n ): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.linkClick.emit({\n item,\n columnIndex\n });\n }\n\n /** @ignore */\n public handleActionClick(\n columnIndex: number,\n item: ITableRowItem,\n actionApiName: string\n ) {\n this.rowActionClick.emit({\n item,\n columnIndex,\n actionApiName\n });\n }\n\n protected columnDefIsActions(\n columnDef: TableColumnDef<any>\n ): columnDef is ITableActionsColumnDef<any> {\n return columnDef.columnType === TableColumnType.Actions;\n }\n\n protected tryToggleCollapse(\n collapsibleForRowResult: {\n template: TemplateRef<ICollapsibleRowContentContext> | null;\n },\n ngbCollapse: NgbCollapse,\n event: Event,\n source: 'button' | 'row'\n ): void {\n if (\n collapsibleForRowResult.template &&\n (this.collapsibleTrigger === 'row' || this.collapsibleTrigger === source)\n ) {\n ngbCollapse.toggle();\n event.stopPropagation();\n }\n }\n\n protected getCollapsibleTemplateForRow(row: ITableRowItem): {\n template: TemplateRef<ICollapsibleRowContentContext> | null;\n } {\n return {\n template:\n this.collapsibleTemplate &&\n typeof this.collapsibleTemplate === 'function'\n ? this.collapsibleTemplate(row)\n : this.collapsibleTemplate\n };\n }\n\n private _getColumnDefByIndex(columnIndex: number): TableColumnDef {\n return this.columnDefs[columnIndex];\n }\n\n private _getValue(\n columnIndex: number,\n currentRow: ITableRowItem\n ): string | string[] {\n try {\n const { field, valueGetter } = this._getColumnDefByIndex(columnIndex);\n\n const value: string | string[] = valueGetter\n ? valueGetter(currentRow)\n : (getNestedValue(currentRow, String(field), '') as string | string[]);\n\n return value || '';\n } catch (e) {\n return '';\n }\n }\n}\n","@if (tableData) {\n<table\n impdcTable\n [striped]=\"striped && !collapsibleTemplate\"\n [layout]=\"layout\"\n [hover]=\"hover\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (collapsibleTemplate) {\n <th\n scope=\"col\"\n [class.heading-below-bulk-actions]=\"!!bulkActions\"\n class=\"impdc-table-collapsible-content-row-button-container\"></th>\n } @if (canSelectRows) {\n <th\n scope=\"col\"\n class=\"impdc-table-selectable-row-toggle-container\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row.id; let rowIndex = $index; let\n rowFirst = $first; let rowLast = $last; let rowEven = $even; let rowOdd =\n $odd) { @if (getCollapsibleTemplateForRow(row); as\n collapsibleTemplateForRow) {\n <tr\n [class.impdc-table-collapsible-row-trigger]=\"collapsibleTrigger === 'row'\"\n [class.table-active]=\"isRowSelected(row.id)\"\n (click)=\"\n tryToggleCollapse(collapsibleTemplateForRow, ngbCollapse, $event, 'row')\n \">\n @if (collapsibleTemplate) {\n <td\n class=\"impdc-table-collapsible-content-row-button-container\"\n [class.opened]=\"!collapseMonitor.ngbCollapsing()\">\n @if (collapsibleTemplateForRow.template) {\n <div>\n <button\n type=\"button\"\n (click)=\"\n tryToggleCollapse(\n collapsibleTemplateForRow,\n ngbCollapse,\n $event,\n 'button'\n )\n \"\n class=\"impdc-table-collapsible-content-row-button btn btn-link\">\n <span\n class=\"far fa-chevron-right\"\n [class.fa-rotate-90]=\"!collapseMonitor.ngbCollapsing()\"></span>\n </button>\n </div>\n }\n </td>\n } @if (canSelectRows) {\n <td class=\"impdc-table-selectable-row-toggle-container\">\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"\n (click)=\"$event.stopPropagation()\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row, $event)\">\n @if (!branded) {\n <a class=\"link-primary\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n [attr.href]=\"getMailToValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \"\n (click)=\"$event.stopPropagation()\" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"\n (click)=\"$event.stopPropagation()\"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n allowClear=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \"\n (click)=\"$event.stopPropagation()\">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \"\n (click)=\"$event.stopPropagation()\">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"handleActionClick(colIndex, row, $event)\"\n (click)=\"$event.stopPropagation()\"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n <tr\n class=\"impdc-table-collapsible-content-row\"\n [class.opened]=\"!collapseMonitor.ngbCollapsing()\">\n <td class=\"w-100 p-0\" [attr.colspan]=\"tableSpan\">\n <div\n class=\"impdc-table-collapsible-content-container\"\n #ngbCollapse=\"ngbCollapse\"\n #collapseMonitor=\"impdcCollapseMonitor\"\n [impdcCollapseMonitor]=\"true\"\n (collapseChange)=\"rowCollapseChange.emit({ row, collapsed: $event })\">\n @if (collapsibleTemplateForRow.template) {\n <div>\n <ng-container\n *ngTemplateOutlet=\"\n collapsibleTemplateForRow.template;\n context: {\n $implicit: row,\n collapsed: collapseMonitor.collapsed(),\n selected: isRowSelected(row.id),\n index: rowIndex,\n first: !!rowFirst,\n last: !!rowLast,\n even: !!rowEven,\n odd: !!rowOdd\n }\n \"></ng-container>\n </div>\n }\n </div>\n </td>\n </tr>\n } } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SpinnerComponent],\n exports: [SpinnerComponent]\n})\nexport class SpinnerModule {}\n","import {\n CommonModule,\n DatePipe,\n DecimalPipe,\n PercentPipe\n} from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button';\nimport { TableComponent } from './containers/table.component';\nimport { CollapseMonitorDirective, TableDirective } from './directives';\nimport { PaginationModule } from '../pagination';\nimport { IconModule } from '../icon';\nimport { ImpdcFormsModule } from '../form-field';\nimport { SpinnerModule } from '../spinner';\nimport {\n ColumnHeadingComponent,\n RowActionsComponent,\n TableBulkActionsComponent\n} from './components';\nimport { TableInjectComponentDirective } from './directives';\nimport { BadgeModule } from '../badge';\nimport { BrandingModule } from '../branding';\nimport {\n NgbCollapseModule,\n NgbDropdownModule\n} from '@ng-bootstrap/ng-bootstrap';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n PaginationModule,\n IconModule,\n ImpdcFormsModule,\n FormsModule,\n SpinnerModule,\n BadgeModule,\n BrandingModule,\n NgbDropdownModule,\n NgbCollapseModule\n ],\n declarations: [\n CollapseMonitorDirective,\n TableDirective,\n TableComponent,\n ColumnHeadingComponent,\n TableInjectComponentDirective,\n TableBulkActionsComponent,\n RowActionsComponent\n ],\n exports: [\n ButtonModule,\n TableDirective,\n ColumnHeadingComponent,\n TableBulkActionsComponent,\n PaginationModule,\n TableComponent,\n IconModule,\n TableInjectComponentDirective,\n BrandingModule,\n RowActionsComponent\n ],\n providers: [DatePipe, PercentPipe, DecimalPipe]\n})\nexport class TableModule {\n constructor() {}\n}\n","import { ComponentSize } from '../../../types';\n\nexport const ModalComponentSizesArr = [\n ComponentSize.Small,\n ComponentSize.Medium,\n ComponentSize.Large,\n ComponentSize.XLarge,\n ComponentSize.Fullscreen\n];\n\nexport type ModalComponentSizes = (typeof ModalComponentSizesArr)[number];\n","export enum ModalTheme {\n Simple = 'simple',\n Working = 'working',\n Destructive = 'destructive'\n}\n\nexport const ModalThemesArr = [\n ModalTheme.Simple,\n ModalTheme.Working,\n ModalTheme.Destructive\n];\n\nexport type ModalThemes = (typeof ModalThemesArr)[number];\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport {\n Subject,\n filter,\n fromEvent,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs';\nimport { FontAwesomeIcon, FontAwesomeIconTheme } from '../../constants';\nimport { IInteractableComponent, InteractionService } from '../../services';\nimport { ComponentSize } from '../../types';\nimport { ButtonTheme } from '../button';\nimport { ModalComponentSizes, ModalTheme, ModalThemes } from './types';\n\n/**\n * The `ModalComponent` (`<impdc-modal`) displays over the content of the page when a user action is required.\n * To use, import `ModalModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ModalModule` imports and exports BackdropModule, [ButtonModule](./?path=/docs/design-components-button),\n * and [IconModule](./?path=/docs/design-components-icon).\n */\n@Component({\n selector: 'impdc-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n host: {\n class: 'impdc modal',\n '[class.fade]': 'fade',\n '[class.in]': 'fade && shown',\n '[class.show]': 'shown',\n '[class.dismissable]': 'dismissable',\n tabindex: '-1'\n }\n})\nexport class ModalComponent\n implements OnInit, OnDestroy, IInteractableComponent\n{\n private readonly _interactableId = `impdc-modal-${nanoid()}`;\n private readonly _closed$ = new Subject<void>();\n private _initialized = false;\n private _show = false;\n\n @ViewChild('dialogElement')\n private _dialogElementRef?: ElementRef<HTMLElement>;\n\n /**\n * Determines if the Modal should be shown immediately.\n */\n @Input()\n set show(show: boolean) {\n if (show) {\n this.open();\n } else {\n this.close();\n }\n }\n\n get show(): boolean {\n return this._show;\n }\n\n /**\n * The theme of the Modal. Affects the layout of the Modal as well as some colors.\n */\n @Input()\n theme: ModalThemes = ModalTheme.Simple;\n\n /**\n * The size of the Modal.\n */\n @Input()\n size: ModalComponentSizes = ComponentSize.Medium;\n\n /**\n * The Font Awesome 5 icon name. Only supported when the theme is Working or Destructive.\n */\n @Input()\n iconName?: FontAwesomeIcon;\n\n /**\n * The Font Awesome 5 icon style. Fewer icons support the Regular theme and will fallback to Solid\n * if not supported.\n */\n @Input()\n iconTheme: FontAwesomeIconTheme = 'light';\n\n /**\n * The subject text of the Modal.\n */\n @Input()\n titleText = '';\n\n /**\n * The fallback button text to accept the Modal. This is bypassed if you content-project the accept button.\n */\n @Input()\n acceptText = 'OK';\n\n /**\n * Allows the Modal to be dismissed. This is different from `accept` and `deny`. If a Modal is meant to be re-opened frequently it should be dismissable.\n */\n @Input()\n dismissable?: boolean;\n\n /**\n * Determines if the Modal should fade in/out.\n */\n @Input()\n fade = true;\n\n /**\n * Shows a backdrop behind the Modal.\n */\n @Input()\n backdrop = true;\n\n /**\n * When `true`, Modal will not automatically render a fallback \"accept\" button in the footer.\n */\n @Input()\n noFallback = false;\n\n /**\n * Contains the dismiss button content projection.\n */\n @ViewChild('dismissEl', { static: false })\n dismissEl!: ElementRef;\n\n /**\n * Contains the deny button content projection.\n */\n @ViewChild('denyEl', { static: false })\n denyEl!: ElementRef;\n\n /**\n * Contains the accept button content projection.\n */\n @ViewChild('acceptEl', { static: false })\n acceptEl!: ElementRef;\n\n /**\n * Event emitted when the Modal content is dismissed.\n */\n @Output()\n dismiss = new EventEmitter<MouseEvent | Event>();\n\n /**\n * Event emitted when the Modal content is denied.\n */\n @Output()\n deny = new EventEmitter<MouseEvent | Event>();\n\n /**\n * Event emitted when the Modal content is accepted.\n */\n @Output()\n accept = new EventEmitter<MouseEvent | Event>();\n\n constructor(\n private readonly _interactionService: InteractionService,\n private readonly _elementRef: ElementRef<HTMLElement>\n ) {}\n\n get interactableId(): string {\n return this._interactableId;\n }\n\n get valid(): boolean {\n return this._initialized;\n }\n\n get shown(): boolean {\n return this.valid && this._show;\n }\n\n get showWorkingIcon(): boolean {\n return !!this.iconName && this.theme === ModalTheme.Working;\n }\n\n get showDestructiveIcon(): boolean {\n return !!this.iconName && this.theme === ModalTheme.Destructive;\n }\n\n get acceptFallbackTheme(): ButtonTheme {\n return this.theme === ModalTheme.Destructive ? 'danger' : 'primary';\n }\n\n get hideHeader(): boolean {\n return !this.titleText && !this.dismissable;\n }\n\n ngOnInit(): void {\n this._interactionService.add(this);\n\n if (this.dismissable === undefined && this.theme === ModalTheme.Working) {\n this.dismissable = true;\n }\n\n if (this.iconName === undefined && this.theme === ModalTheme.Destructive) {\n this.iconName = 'exclamation-triangle';\n }\n\n this._initialized = true;\n }\n\n ngOnDestroy(): void {\n this._interactionService.remove(this.interactableId);\n this._disableEventHandling();\n }\n\n protected handleDismiss(event: MouseEvent | Event): void {\n if (\n !this.dismissable ||\n !!this.dismissEl?.nativeElement?.firstChild?.disabled\n ) {\n return;\n }\n this.close();\n this.dismiss.emit(event);\n }\n\n protected handleDeny(event: MouseEvent | Event): void {\n if (!!this.denyEl?.nativeElement?.firstChild?.disabled) {\n return;\n }\n this.close();\n this.deny.emit(event);\n }\n\n protected handleAccept(event: MouseEvent | Event): void {\n if (!!this.acceptEl?.nativeElement?.firstChild?.disabled) {\n return;\n }\n this.close();\n this.accept.emit(event);\n }\n\n /**\n * Opens/shows the modal. Can be used programmatically.\n */\n open(): void {\n if (this.backdrop) {\n this._interactionService.queueBackdrop(this.interactableId);\n }\n this._show = true;\n this._setupEventHandling();\n }\n\n /**\n * Closes/hides the modal. Can be used programmatically.\n */\n close(): void {\n this._show = false;\n this._interactionService.dequeueBackdrop(this.interactableId);\n this._disableEventHandling();\n }\n\n private _setupEventHandling(): void {\n const { nativeElement } = this._elementRef;\n\n fromEvent<KeyboardEvent>(nativeElement, 'keydown')\n .pipe(\n takeUntil(this._closed$),\n filter(evt => evt.key === 'Escape')\n )\n .subscribe(evt => {\n if (this.dismissable && !evt.defaultPrevented) {\n Promise.resolve().then(() => {\n this.handleDismiss(evt);\n evt.stopPropagation();\n });\n }\n });\n\n fromEvent<KeyboardEvent>(nativeElement, 'keydown')\n .pipe(\n takeUntil(this._closed$),\n filter(evt => evt.key === 'Enter')\n )\n .subscribe(evt => {\n if (!evt.defaultPrevented) {\n Promise.resolve().then(() => {\n this.handleAccept(evt);\n evt.stopPropagation();\n });\n }\n });\n\n let preventClose = false;\n if (this._dialogElementRef) {\n // listen to 'mousedown' and 'mouseup' to prevent dismissal when mouse is pressed inside\n // of the dialog window and then released outside\n fromEvent<MouseEvent>(this._dialogElementRef.nativeElement, 'mousedown')\n .pipe(\n takeUntil(this._closed$),\n tap(() => {\n preventClose = false;\n }),\n switchMap(() =>\n fromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(\n takeUntil(this._closed$),\n take(1)\n )\n ),\n filter(({ target }) => nativeElement === target)\n )\n .subscribe(() => {\n preventClose = true;\n });\n }\n\n // listen to 'click' events to dismiss on component/container click, except when\n // clicking inside the dialog window or when prevented by the above 'mousedown'\n // and 'mouseup' handlers\n fromEvent<MouseEvent>(nativeElement, 'click')\n .pipe(takeUntil(this._closed$))\n .subscribe(evt => {\n if (nativeElement === evt.target && !preventClose) {\n Promise.resolve().then(() => {\n this.handleDismiss(evt);\n evt.stopPropagation();\n });\n }\n\n preventClose = false;\n });\n }\n\n private _disableEventHandling(): void {\n this._closed$.next();\n }\n}\n","<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!noFallback && !acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { IBackdropComponent, InteractionService } from '../../services';\nimport { Subject, takeUntil } from 'rxjs';\n\n/**\n * The `BackdropComponent` (`<impdc-backdrop`) is a component to mask the background when an interaction is taking place.\n * This component needs to be added to the body of the host application if a backdrop is desired.\n * To use, import `BackdropModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-backdrop',\n templateUrl: './backdrop.component.html',\n styleUrls: ['./backdrop.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BackdropComponent\n implements OnInit, OnDestroy, IBackdropComponent\n{\n private readonly _ngDestroy = new Subject<void>();\n private _valid = true;\n private _showBackdrop = false;\n\n constructor(\n private readonly _interactionService: InteractionService,\n private readonly _changeDetector: ChangeDetectorRef\n ) {}\n\n get valid(): boolean {\n return this._valid;\n }\n\n get show(): boolean {\n return this.valid && this._showBackdrop;\n }\n\n ngOnInit(): void {\n this._interactionService.registerBackdrop(this);\n this._interactionService.showBackdrop$\n .pipe(takeUntil(this._ngDestroy))\n .subscribe(showBackdrop => {\n this._showBackdrop = showBackdrop;\n this._changeDetector.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this._interactionService.unregisterBackdrop(this);\n this._ngDestroy.next();\n this._ngDestroy.complete();\n }\n\n invalidate(): void {\n this._valid = false;\n }\n\n validate(): void {\n this._valid = true;\n }\n}\n","<div *ngIf=\"valid\" class=\"impdc modal-backdrop fade\" [class.show]=\"show\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BackdropComponent } from './backdrop.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [BackdropComponent],\n exports: [BackdropComponent]\n})\nexport class BackdropModule {\n constructor() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BackdropModule } from '../backdrop';\nimport { ButtonModule } from '../button';\nimport { IconModule } from '../icon';\nimport { ModalComponent } from './modal.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n BackdropModule,\n ButtonModule,\n IconModule\n ],\n declarations: [ModalComponent],\n exports: [BackdropModule, ButtonModule, IconModule, ModalComponent]\n})\nexport class ModalModule {\n constructor() {}\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * The `ProgressBarComponent` (`<impdc-progress-bar`) is a display-only slider to show progress.\n * To use, import `ProgressBarModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss']\n})\nexport class ProgressBarComponent {\n /**\n * The left/subject text of the Progress Bar.\n */\n @Input()\n public labelText = '';\n\n /**\n * The right/status text of the Progress Bar.\n */\n @Input()\n public statusText = '';\n\n /**\n * The color of the progress bar\n */\n @Input()\n public barColor = '';\n\n /**\n * The color of the label and status\n */\n @Input()\n public darkText = true;\n\n /**\n * The current value of the Progress Bar represented as a number between 0 and 100.\n */\n @Input()\n public progressPercentage = 0;\n\n get textClass(): string {\n return this.darkText ? 'dark-progress-text' : 'light-progress-text';\n }\n\n constructor() {}\n}\n","<div class=\"progress-container\">\n <div class=\"progress-text\" [ngClass]=\"textClass\">\n <div class=\"text-left\">\n {{ labelText }}\n </div>\n <div class=\"text-right\">\n {{ statusText }}\n </div>\n </div>\n <div class=\"bar-bg\">\n <div\n [ngStyle]=\"{ 'background-color': barColor }\"\n class=\"bar\"\n role=\"progressbar\"\n [style.width.%]=\"progressPercentage\"\n [attr.aria-valuenow]=\"progressPercentage\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ProgressBarComponent],\n exports: [ProgressBarComponent]\n})\nexport class ProgressBarModule {}\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'impdc-dropdown-item',\n templateUrl: './dropdown-item.component.html'\n})\nexport class DropdownItemComponent {\n /**\n * Used in DropdownComponent to determine if the projected content should be rendered or it's a divider.\n */\n @Input()\n divider = false;\n\n @ViewChild(TemplateRef) template!: TemplateRef<never>;\n}\n","<ng-template>\n <ng-content></ng-content>\n</ng-template>\n","import {\n Component,\n Input,\n HostListener,\n Output,\n EventEmitter,\n HostBinding,\n QueryList,\n ContentChildren,\n OnInit,\n OnDestroy\n} from '@angular/core';\nimport { nanoid } from 'nanoid';\nimport { IInteractableComponent, InteractionService } from '../../services';\nimport { ButtonTheme } from '../button';\nimport { DropdownItemComponent } from './components';\nimport { DropdownPosition } from './types';\n\n/**\n * The `DropdownComponent` (`<impdc-dropdown` or `<any impdc-dropdown`) contains a button that toggles a dropdown where a user\n * can select various actions. Items within must be wrapped with `DropdownItemComponent` (`<impdc-dropdown-item`).\n * To use, import `DropdownModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `DropdownModule` imports and exports [ButtonModule](./?path=/docs/design-components-button).\n */\n@Component({\n selector: 'impdc-dropdown, [impdc-dropdown]',\n exportAs: 'impdcDropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent\n implements OnInit, OnDestroy, IInteractableComponent\n{\n private readonly _interactableId = `impdc-dropdown-${nanoid()}`;\n private _initialized = false;\n\n /**\n * Whether or not the dropdown list is showing.\n */\n @Input()\n show = false;\n\n /**\n * The content projected `DropdownItemComponent` children.\n */\n @ContentChildren(DropdownItemComponent)\n items!: QueryList<DropdownItemComponent>;\n\n /**\n * The theme of the button affecting text, icons, backgrounds, and borders.\n */\n @Input()\n buttonTheme: ButtonTheme = 'primary';\n\n /**\n * The text of the button.\n */\n @Input()\n buttonText = '';\n\n // we don't want headerText to be available right now\n // @Input()\n //headerText: string = '';\n\n /**\n * Where the list shows relative to the button when it is showing.\n */\n @Input()\n position: DropdownPosition = 'down';\n\n /**\n * If true, the icon is split from the button and only clicking the icon triggers the list showing/hiding.\n */\n @Input()\n split = false;\n\n /**\n * Emitted when the dropdown is toggled.\n */\n @Output()\n toggle = new EventEmitter<boolean>();\n\n /**\n * Emitted when the button is clicked.\n */\n @Output()\n public buttonClick = new EventEmitter<MouseEvent>();\n\n @HostBinding('class.btn-group') private classBtnGroup = true;\n\n @HostBinding('class.dropdown') private get classDropdown() {\n return this.position === 'down';\n }\n\n @HostBinding('class.dropend') private get classDropend() {\n return this.position === 'right';\n }\n\n @HostBinding('class.dropstart') private get classDropstart() {\n return this.position === 'left';\n }\n\n @HostBinding('class.dropup') private get classDropup() {\n return this.position === 'up';\n }\n\n @HostListener('click')\n handleHostClick($event: MouseEvent): void {\n $event.stopPropagation();\n }\n\n @HostListener('document:click')\n handleDocumentClick(): void {\n if (this.show) {\n this.hide();\n }\n }\n\n constructor(private _interactionService: InteractionService) {}\n\n get interactableId(): string {\n return this._interactableId;\n }\n\n get valid(): boolean {\n return this._initialized;\n }\n\n get shown(): boolean {\n return this.valid && this.show;\n }\n\n ngOnInit(): void {\n this._interactionService.add(this);\n }\n\n ngOnDestroy(): void {\n this._interactionService.remove(this.interactableId);\n }\n\n handleToggle(): void {\n this.show = this._interactionService.toggle(this);\n this.toggle.emit(this.show);\n }\n\n handleButtonClick(event: MouseEvent): void {\n this.buttonClick.emit(event);\n }\n\n hide(): void {\n this.show = false;\n this.toggle.emit(this.show);\n }\n}\n","<ng-container *ngIf=\"!linkEl.children.length\">\n <button\n *ngIf=\"!split; else splitTemplate\"\n impdcButton\n [theme]=\"buttonTheme\"\n [text]=\"buttonText\"\n class=\"dropdown-toggle\"\n [class.show]=\"show\"\n data-bs-toggle=\"dropdown\"\n [attr.aria-expanded]=\"show\"\n (click)=\"handleToggle(); $event.stopPropagation()\"></button>\n\n <ng-template #splitTemplate>\n <button\n impdcButton\n [theme]=\"buttonTheme\"\n [text]=\"buttonText\"\n (click)=\"handleButtonClick($event)\"></button>\n <button\n impdcButton\n [theme]=\"buttonTheme\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [class.show]=\"show\"\n [attr.aria-expanded]=\"show\"\n (click)=\"handleToggle(); $event.stopPropagation()\">\n <span class=\"visually-hidden\">Toggle Dropdown</span>\n </button>\n </ng-template>\n</ng-container>\n\n<ul\n class=\"dropdown-menu\"\n [class.dropdown-menu-end]=\"false\"\n [class.show]=\"show\"\n (click)=\"$event.stopPropagation()\">\n <!-- <li *ngIf=\"headerText\">\n <h6 class=\"dropdown-header\">{{ headerText }}</h6>\n </li> -->\n <li *ngFor=\"let item of items\">\n <span *ngIf=\"!item.divider; else dividerTemplate\" class=\"dropdown-item\">\n <ng-content *ngTemplateOutlet=\"item.template\"></ng-content>\n </span>\n </li>\n</ul>\n\n<ng-template #dividerTemplate>\n <hr class=\"dropdown-divider\" />\n</ng-template>\n\n<a\n #linkEl\n class=\"impdc-dropdown-link\"\n [class.hide]=\"!linkEl.children.length\"\n [class.impdc-dropdown-open]=\"show\"\n data-bs-toggle=\"dropdown\"\n [attr.aria-expanded]=\"show\"\n (click)=\"handleToggle(); $event.stopPropagation()\">\n <ng-content select=\"[toggle]\"></ng-content>\n</a>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button';\nimport { DropdownComponent } from './dropdown.component';\nimport { DropdownItemComponent } from './components';\n\n@NgModule({\n imports: [CommonModule, ButtonModule],\n declarations: [DropdownItemComponent, DropdownComponent],\n exports: [ButtonModule, DropdownItemComponent, DropdownComponent]\n})\nexport class DropdownModule {\n constructor() {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AlertTheme } from './theme';\n\n/**\n * The `AlertComponent` (`<impdc-alert` or `<any impdc-alert`) is intended to show information or feedback inline with content.\n * To use, import `AlertModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-alert, [impdc-alert]',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n /**\n * The theme of the Alert affecting text, icons, backgrounds, and borders.\n */\n @Input()\n theme: AlertTheme = 'warning';\n\n /**\n * Determines if the Alert should be shown immediately.\n */\n @Input() show = false;\n\n /**\n * The heading text of the Alert. Content can also be projected in the heading area using a `heading` directive.\n */\n @Input() headingText = '';\n\n /**\n * The body text of the Alert. Content can also be projected into the body area using default projection.\n */\n @Input() bodyText = '';\n\n /**\n * By default, an Alert is a \"floating\" notification. When set to \"inline\", these \"floating\" styles are replaced.\n */\n @Input() inline = false;\n\n /**\n * Removes the Alert icon provided by the theme or projected into the icon area using the `icon` directive.\n */\n @Input() hideIcon = false;\n\n /**\n * Removes the Alert border and background colors to only style icon and text according to theme.\n */\n @Input() borderless = false;\n\n /**\n * Allows the Alert to be dismissed.\n */\n @Input() dismissible = true;\n\n /**\n * Event emitted when the Alert is dismissed.\n */\n @Output()\n dismiss = new EventEmitter<void>();\n\n get componentClasses(): string {\n const themeClass =\n this.theme === 'warning'\n ? 'alert-warning'\n : this.theme === 'info'\n ? 'alert-info'\n : this.theme === 'danger'\n ? 'alert-danger'\n : this.theme === 'success'\n ? 'alert-success'\n : '';\n const inlineClass = this.inline ? ' alert-inline' : '';\n const dismissibleClass = this.dismissible ? ' alert-dismissible' : '';\n const borderless = this.borderless ? ' borderless' : '';\n return themeClass + inlineClass + dismissibleClass + borderless;\n }\n\n get themeIconName(): string {\n return this.theme === 'warning'\n ? 'exclamation-circle'\n : this.theme === 'info'\n ? 'info-circle'\n : this.theme === 'danger'\n ? 'times-circle'\n : this.theme === 'success'\n ? 'check-circle'\n : '';\n }\n\n closeAlert(): void {\n if (!this.dismissible) {\n return;\n }\n this.show = false;\n this.dismiss.emit();\n }\n}\n","<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertComponent } from './alert.component';\nimport { IconModule } from '../icon';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [AlertComponent],\n exports: [IconModule, AlertComponent]\n})\nexport class AlertModule {}\n","import {\n Directive,\n Output,\n EventEmitter,\n HostBinding,\n HostListener\n} from '@angular/core';\n\n@Directive({\n selector: '[impdcFileDrop]'\n})\nexport class FileDropDirective {\n @HostBinding('class.file-hover')\n fileHovering = false;\n\n @Output() filesDropped = new EventEmitter<FileList>();\n\n @HostListener('dragover', ['$event']) onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.fileHovering = true;\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.fileHovering = false;\n }\n\n @HostListener('drop', ['$event']) public OnDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.fileHovering = false;\n let fileList = event.dataTransfer?.files;\n if (fileList) {\n this.filesDropped.emit(fileList);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'humanReadableByteSize'\n})\nexport class HumanReadableByteSizePipe implements PipeTransform {\n transform(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes}B`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const num = bytes / Math.pow(1024, i);\n const round = Math.round(num);\n const display =\n round < 10 ? num.toFixed(2) : round < 100 ? num.toFixed(1) : round;\n\n return `${display}${'KMGTPEZY'[i - 1]}B`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport { BooleanInput, coerceBooleanPropertyValue } from '../../utilities';\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n IMPDC_FORM_ROOT,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../form-field';\nimport { FileDropDirective } from './directives';\n\nconst _FileUploadComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * The `FileUploadComponent` (`<impdc-file-upload` or `<any impdc-file-upload`) is a file selector that supports drag and drop.\n * To use, import `FileUploadModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-file-upload, [impdc-file-upload]',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-file-upload',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.impdc-file-upload--required]': 'required',\n '[class.impdc-file-upload--disabled]': 'disabled',\n '[class.impdc-file-upload--invalid]': 'errorState',\n '[class.impdc-file-upload--multiple]': 'multiple',\n '[class.impdc-file-upload--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: FileUploadComponent\n }\n ]\n})\nexport class FileUploadComponent\n extends _FileUploadComponentBase\n implements\n ControlValueAccessor,\n Validator,\n ImpdcFormFieldControl<File | File[]>,\n ICanUpdateErrorState,\n IHasErrorState,\n DoCheck,\n OnDestroy\n{\n @ViewChild(FileDropDirective, { read: ElementRef })\n protected fileDropElementRef!: ElementRef<HTMLElement>;\n\n /** @ignore */\n @ViewChild('fileUploadInputElt', { static: false })\n public fileUploadInputEltRef!: ElementRef<HTMLInputElement>;\n\n /**\n * Whether the control supports uploading multiple files.\n */\n @Input()\n multiple = false;\n\n /**\n * The instructional text to display in the file upload dropzone.\n */\n @Input()\n uploadText = 'Drag and drop files here or click to upload';\n\n /**\n * The comma-delimited list of file types that are accepted by the control.\n */\n @Input()\n accept = '';\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n public get canUpload(): boolean {\n return this.multiple || this._value.length === 0;\n }\n\n private get acceptTypes(): string[] {\n if (!this.accept || !this.accept.length) {\n return [];\n }\n\n return this.accept\n .split(',')\n .map(a => a.trim())\n .filter(a => !!a);\n }\n\n public get empty(): boolean {\n return this._value.length === 0;\n }\n\n protected get filesForDisplay(): readonly File[] {\n return this._value || [];\n }\n\n private _cvaOnChange: Function | undefined;\n private _cvaOnTouched: Function | undefined;\n private _uid = `impdc-file-upload-${nanoid()}`;\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl | null\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.control?.addValidators(() => {\n return this.validate();\n });\n }\n\n this.id = this.id;\n }\n\n /** @ignore */\n public handleChange(event: Event) {\n const fileList: FileList | null = ((event.target as HTMLInputElement) || {})\n .files;\n\n if (!fileList) {\n return;\n }\n\n this._mergeNewFilesWithExistingFiles(fileList);\n }\n\n /** @ignore */\n public handleDrop(event: FileList) {\n if (this.disabled || !event) {\n return;\n }\n\n this._mergeNewFilesWithExistingFiles(event);\n }\n\n /** @ignore */\n public removeFile(fileIndex: number): void {\n const newFilesArr = [...this._value];\n newFilesArr.splice(fileIndex, 1);\n\n this._updateValueFromInteraction(newFilesArr);\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this.fileDropElementRef.nativeElement.focus(options);\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ImpdcFormFieldControl */\n\n /**\n * The file(s) currently uploaded into the control. Returns `File | null` when `multiple` is `false`,\n * and `File[]` when `multiple` is `true`.\n */\n @Input()\n public get value(): File | File[] | null {\n return this.multiple ? [...this._value] : this._value[0];\n }\n public set value(newValue: File | File[] | null) {\n if (newValue !== this._value) {\n if (Array.isArray(newValue)) {\n this._value = newValue ? [...newValue] : [];\n } else {\n this._value = newValue ? [newValue] : [];\n }\n }\n\n const fileList = this._getFileList(this._value);\n\n if (\n this.fileUploadInputEltRef &&\n this.fileUploadInputEltRef.nativeElement\n ) {\n this.fileUploadInputEltRef.nativeElement.files = fileList;\n }\n }\n private _value: readonly File[] = [];\n\n /** @ignore */\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n public readonly controlType: string = 'impdc-file-upload';\n public readonly supportsAffixes: boolean = false;\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(value: File[]): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: Function): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: Function): void {\n this._cvaOnTouched = fn;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /* Validator */\n\n /**\n * @ignore\n */\n public validate(): ValidationErrors | null {\n return !this.disabled && this.required && this._value.length === 0\n ? { required: true }\n : null;\n }\n\n /* Internals */\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _onBlur(): void {\n this._focused = false;\n\n if (!this.disabled) {\n this._cvaOnTouched && this._cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _updateValueFromInteraction(newValue: File[]): void {\n this.value = newValue;\n\n this._cvaOnChange && this._cvaOnChange(this.value);\n this._cvaOnTouched && this._cvaOnTouched();\n this.stateChanges.next();\n }\n\n private _mergeNewFilesWithExistingFiles(fileList: FileList | null) {\n if (!fileList) {\n return;\n }\n\n if (this._value && this._value.length == 1 && !this.multiple) {\n return;\n }\n\n const tempFiles = [...this._value];\n\n Array.from(fileList).forEach(newFile => {\n if (!this.multiple && tempFiles.length > 0) {\n return;\n }\n const existingFile = tempFiles.find(\n existing =>\n existing.name === newFile.name &&\n existing.lastModified === newFile.lastModified &&\n existing.size === newFile.size\n );\n\n if (existingFile) {\n return;\n }\n\n if (this._acceptedFileType(newFile.type, newFile.name)) {\n tempFiles.push(newFile);\n }\n });\n\n this._updateValueFromInteraction(tempFiles);\n }\n\n private _getFileList(files: readonly File[]): FileList {\n const dataTransfer = new DataTransfer();\n\n files.forEach(file => {\n dataTransfer.items.add(file);\n });\n\n return dataTransfer.files;\n }\n\n private _getExtensions(fileName: string): string[] {\n const nameSegments = fileName.split('.');\n let extensions: string[] = [];\n\n if (nameSegments.length < 2) {\n return extensions;\n }\n\n const extension = `.${nameSegments.slice(1).join('.')}`;\n extensions.push(extension);\n\n if (nameSegments.length === 2) {\n return extensions;\n }\n\n const sub = `.${nameSegments.slice(2).join('.')}`;\n const subExtensions = this._getExtensions(sub);\n extensions = [...extensions, ...subExtensions];\n\n return extensions;\n }\n\n private _acceptedFileType(type: string, fileName: string): boolean {\n if (!this.acceptTypes || this.acceptTypes.length === 0) {\n return true;\n }\n\n const acceptedByType = this.acceptTypes.includes(type);\n\n if (acceptedByType) {\n return true;\n }\n\n const fileExtensions = this._getExtensions(fileName);\n\n if (!fileExtensions || fileExtensions.length === 0) {\n return false;\n }\n\n const acceptedByExtension = this.acceptTypes.some(type =>\n fileExtensions.includes(type)\n );\n\n return acceptedByExtension;\n }\n}\n","<div class=\"impdc-file-upload-container\">\n <div\n class=\"impdc-file-upload-dropzone\"\n [ngClass]=\"{\n 'hide-upload': !canUpload\n }\"\n impdcFileDrop\n (filesDropped)=\"handleDrop($event)\"\n (keyup.enter)=\"fileUploadInputElt.click()\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n [tabindex]=\"disabled ? '-1' : '0'\">\n <input\n class=\"file-upload-input\"\n type=\"file\"\n #fileUploadInputElt\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n (change)=\"handleChange($event)\"\n tabindex=\"-1\" />\n <span\n impdc-icon\n theme=\"regular\"\n name=\"cloud-upload-alt\"\n class=\"upload-icon\"></span>\n <p class=\"upload-text\">{{ uploadText }}</p>\n </div>\n <div class=\"current-files\" *ngIf=\"filesForDisplay.length\">\n <ng-container *ngFor=\"let file of filesForDisplay; let idx = index\">\n <div class=\"current-file\">\n <div class=\"current-file-details\">\n <div class=\"name\">{{ file.name }}</div>\n <div class=\"size\">{{ file.size | humanReadableByteSize }}</div>\n </div>\n <div *ngIf=\"!disabled\" class=\"current-file-actions\">\n <button\n impdcButton\n theme=\"close\"\n tabindex=\"0\"\n (keyup.enter)=\"removeFile(idx)\"\n (click)=\"removeFile(idx)\"></button>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button';\nimport { IconModule } from '../icon';\nimport { FileDropDirective } from './directives';\nimport { FileUploadComponent } from './file-upload.component';\nimport { HumanReadableByteSizePipe } from './pipes';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ButtonModule, IconModule],\n declarations: [\n FileDropDirective,\n FileUploadComponent,\n HumanReadableByteSizePipe\n ],\n exports: [\n IconModule,\n FileDropDirective,\n FileUploadComponent,\n HumanReadableByteSizePipe\n ]\n})\nexport class FileUploadModule {\n constructor() {}\n}\n","import { Component, Input } from '@angular/core';\nimport { ComponentSize, PrimaryComponentSizes } from '../../types';\n\n/**\n * The `AvatarComponent` (`<impdc-avatar`) is a rounded user avatar/icon with an optional status color.\n * For a horizontal container, see [AvatarGroupComponent](./?path=/docs/design-components-avatar--group).\n * To use, import `AvatarModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss']\n})\nexport class AvatarComponent {\n /**\n * The image source url to display as the Avatar's background.\n */\n @Input() imgSrc = '';\n\n /**\n * Initials to display if an `imgSrc` is not available.\n */\n @Input() initials = '';\n\n /**\n * A status to display as part of the Avatar.\n */\n @Input() status: '' | 'active' | 'inactive' | 'busy' = '';\n\n /**\n * The size of the Avatar.\n */\n @Input() size: PrimaryComponentSizes = ComponentSize.Medium;\n\n get avatarHasImg(): boolean {\n return this.imgSrc && this.imgSrc.length > 0 ? true : false;\n }\n}\n","<div class=\"avatar-container\">\n <span class=\"avatar-status\" *ngIf=\"status\" [ngClass]=\"[size, status]\"></span>\n\n <img\n class=\"avatar\"\n *ngIf=\"avatarHasImg\"\n [attr.src]=\"imgSrc\"\n [ngClass]=\"size\" />\n <div\n class=\"avatar initials\"\n *ngIf=\"!avatarHasImg && initials\"\n [ngClass]=\"size\">\n {{ initials.toUpperCase() }}\n </div>\n\n <div\n class=\"avatar fallback\"\n *ngIf=\"!avatarHasImg && !initials\"\n [ngClass]=\"size\">\n <span impdc-icon name=\"user\"></span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '../icon';\nimport { AvatarComponent } from './avatar.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [AvatarComponent],\n exports: [IconModule, AvatarComponent]\n})\nexport class AvatarModule {}\n","import { Component } from '@angular/core';\n\n/**\n * The `AvatarGroupComponent` (`<impdc-avatar-group`) is a horizontal container for [AvatarComponent](./?path=/docs/design-components-avatar--single).\n * To use, import `AvatarGroupModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `AvatarGroupModule` also imports and exports [AvatarModule](./?path=/docs/design-components-avatar--single)\n */\n@Component({\n selector: 'impdc-avatar-group',\n templateUrl: './avatar-group.component.html',\n styleUrls: ['./avatar-group.component.scss']\n})\nexport class AvatarGroupComponent {}\n","<div class=\"avatar-group\">\n <ng-content select=\"impdc-avatar\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarGroupComponent } from './avatar-group.component';\nimport { AvatarModule } from '../avatar/avatar.module';\n\n@NgModule({\n declarations: [AvatarGroupComponent],\n imports: [CommonModule, AvatarModule],\n exports: [AvatarModule, AvatarGroupComponent]\n})\nexport class AvatarGroupModule {}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'impdc-breadcrumb-item',\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n `\n})\nexport class BreadcrumbItemComponent {\n @ViewChild('content', { read: TemplateRef })\n public contentTemplate!: TemplateRef<never>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n HostBinding,\n Input,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\n\n/**\n * The `BreadcrumbComponent` (`<impdc-breadcrumb` or `<div impdc-breadcrumb`) is for historical navigation so the user can get back\n * to a previous page. Items within must be wrapped with `BreadcrumbItemComponent` (`<impdc-breadcrumb-item`).\n * To use, import `BreadcrumbModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-breadcrumb, div[impdc-breadcrumb]',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent implements AfterViewInit {\n /**\n * Sets the `aria-label` attribute for the Breadcrumb's `nav` element for accessibility.\n */\n @Input()\n public label = '';\n\n @HostBinding('class.impdc-breadcrumb') private impdcBreadcrumb = true;\n\n @ContentChildren(BreadcrumbItemComponent)\n protected breadcrumbItems!: QueryList<BreadcrumbItemComponent>;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n this._changeDetectorRef.detectChanges();\n }\n}\n","<nav class=\"impdc-breadcrumb\" [attr.aria-label]=\"label || 'breadcrumb'\">\n <ol>\n <li\n *ngFor=\"let breadcrumbItem of breadcrumbItems; last as isLast\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <ng-container\n [ngTemplateOutlet]=\"breadcrumbItem.contentTemplate\"></ng-container>\n </li>\n </ol>\n</nav>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n declarations: [BreadcrumbItemComponent, BreadcrumbComponent],\n imports: [CommonModule],\n exports: [BreadcrumbItemComponent, BreadcrumbComponent]\n})\nexport class BreadcrumbModule {}\n","import { Injectable } from '@angular/core';\nimport { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\n\nexport function IMPDC_DATETIME_PICKER_FORMATTER_FACTORY() {\n return new ImpdcDatetimeISOFormatter();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: IMPDC_DATETIME_PICKER_FORMATTER_FACTORY\n})\nexport abstract class ImpdcDatetimeFormatter {\n abstract format(\n date: NgbDateStruct,\n time?:\n | NgbTimeStruct\n | null\n | { value: NgbTimeStruct | null; withSeconds: boolean }\n ): string;\n}\n\n@Injectable()\nexport class ImpdcDatetimeISOFormatter extends ImpdcDatetimeFormatter {\n public format(\n date: NgbDateStruct,\n time?:\n | NgbTimeStruct\n | null\n | { value: NgbTimeStruct | null; withSeconds: boolean }\n ): string {\n let result = `${date.year}-${this._padNumberString(\n date.month\n )}-${this._padNumberString(date.day)}`;\n\n if (!!time) {\n let timeValue =\n 'withSeconds' in time ? time : { value: time, withSeconds: true };\n\n if (!!timeValue.value) {\n result += ` ${this._padNumberString(\n timeValue.value.hour\n )}:${this._padNumberString(timeValue.value.minute)}`;\n\n if (timeValue.withSeconds) {\n result += `:${this._padNumberString(timeValue.value.second)}`;\n }\n }\n }\n\n return result;\n }\n\n private _padNumberString(value: number): string {\n return `0${value}`.slice(-2);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n NgbDate,\n NgbDatepicker,\n NgbDatepickerI18n\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ImpdcFormsModule } from '../../../form-field';\nimport { IconModule } from '../../../icon';\n\ntype NgbDatepickerViewModel = NgbDatepicker['model'];\ntype NgbNavigationEvent = Parameters<NgbDatepicker['onNavigateEvent']>[0];\n\n@Component({\n selector: 'impdc-datepicker-nav',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ImpdcFormsModule, IconModule],\n templateUrl: './datepicker-nav.component.html',\n styleUrls: ['./datepicker-nav.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class DatepickerNavComponent implements OnInit, AfterViewChecked {\n private readonly _cd = inject(ChangeDetectorRef);\n private readonly _destroyRef$ = inject(DestroyRef);\n protected readonly monthControl = new FormControl<number | null>(null);\n protected readonly yearControl = new FormControl<number | null>(null);\n protected readonly datepickerI18n = inject(NgbDatepickerI18n);\n\n @Input({ required: true })\n public date!: NgbDate;\n\n @Input({ required: true })\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n this._disabled = value;\n\n if (value) {\n this.monthControl.disable();\n this.yearControl.disable();\n } else {\n this.monthControl.enable();\n this.yearControl.enable();\n }\n }\n private _disabled = false;\n\n @Input({ required: true })\n public prevDisabled: boolean = false;\n\n @Input({ required: true })\n public nextDisabled: boolean = false;\n\n @Input({ required: true })\n public selectBoxes!: NgbDatepickerViewModel['selectBoxes'];\n\n @Output() navigate = new EventEmitter<NgbNavigationEvent>();\n @Output() selected = new EventEmitter<NgbDate>();\n\n public onClickGoPrevious(event: MouseEvent) {\n (event.currentTarget as HTMLElement).focus();\n this.navigate.emit(0);\n }\n\n public onClickGoNext(event: MouseEvent) {\n (event.currentTarget as HTMLElement).focus();\n this.navigate.emit(1);\n }\n\n public changeMonth(month: number) {\n this.selected.emit(new NgbDate(this.date.year, month, 1));\n }\n\n public changeYear(year: number) {\n this.selected.emit(new NgbDate(year, this.date.month, 1));\n }\n\n public ngOnInit() {\n this.monthControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef$))\n .subscribe(month => !!month && this.changeMonth(month));\n\n this.yearControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef$))\n .subscribe(year => !!year && this.changeYear(year));\n\n this._applyDateToControls(this.date);\n }\n\n public ngAfterViewChecked() {\n this._applyDateToControls(this.date);\n }\n\n private _applyDateToControls(dateValue?: NgbDate): void {\n if (dateValue) {\n if (this.date.month !== this.monthControl.value) {\n this.monthControl.setValue(this.date.month);\n this._cd.markForCheck();\n }\n\n if (this.date.year !== this.yearControl.value) {\n this.yearControl.setValue(this.date.year);\n this._cd.markForCheck();\n }\n }\n }\n}\n","<div class=\"d-flex justify-content-between align-items-center\">\n <button\n class=\"impdc-datepicker-nav-prev btn btn-link me-auto\"\n (click)=\"onClickGoPrevious($event)\"\n [disabled]=\"disabled || prevDisabled\">\n <impdc-icon name=\"chevron-left\" size=\"12\"></impdc-icon>\n </button>\n\n <div class=\"d-flex\">\n <impdc-select\n [formControl]=\"monthControl\"\n [dropdownContainer]=\"null\"\n allowClear=\"false\"\n class=\"impdc-datepicker-nav-month no-caret\">\n <impdc-select-option\n *ngFor=\"let month of selectBoxes.months\"\n [value]=\"month\"\n [label]=\"datepickerI18n.getMonthFullName(month, date.year)\" />\n </impdc-select>\n <impdc-select\n [formControl]=\"yearControl\"\n [dropdownContainer]=\"null\"\n allowClear=\"false\"\n class=\"impdc-datepicker-nav-year no-caret\">\n @for (year of selectBoxes.years; track year) {\n <impdc-select-option\n [value]=\"year\"\n [label]=\"datepickerI18n.getYearNumerals(year)\" />\n }\n </impdc-select>\n </div>\n\n <button\n class=\"impdc-datepicker-nav-next btn btn-link ms-auto\"\n (click)=\"onClickGoNext($event)\"\n [disabled]=\"disabled || nextDisabled\">\n <impdc-icon name=\"chevron-right\" size=\"12\"></impdc-icon>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\nimport {\n NgbCalendar,\n NgbDate,\n NgbDatepickerMonth\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ContentTemplateContext } from '@ng-bootstrap/ng-bootstrap/datepicker/datepicker-content-template-context';\nimport { DayTemplateContext } from '@ng-bootstrap/ng-bootstrap/datepicker/datepicker-day-template-context';\n\nimport { DatepickerNavComponent } from '../datepicker-nav';\n\n@Component({\n selector: 'impdc-datepicker-template-host',\n standalone: true,\n imports: [NgbDatepickerMonth, DatepickerNavComponent],\n templateUrl: './datepicker-template-host.component.html',\n styleUrls: ['./datepicker-template-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerTemplateHostComponent {\n private readonly _calendar = inject(NgbCalendar);\n\n public readonly isWeekend = (date: NgbDate) =>\n this._calendar.getWeekday(date) >= 6;\n\n public readonly isToday = (date: NgbDate) =>\n this._calendar.getToday().equals(date);\n\n @ViewChild('dayTemplate', {\n read: TemplateRef<DayTemplateContext>,\n static: true\n })\n public dayTemplateRef!: TemplateRef<DayTemplateContext>;\n\n @ViewChild('contentTemplate', {\n read: TemplateRef<ContentTemplateContext>,\n static: true\n })\n public contentTemplateRef!: TemplateRef<ContentTemplateContext>;\n}\n","<ng-template\n #dayTemplate\n let-date\n let-currentMonth=\"currentMonth\"\n let-selected=\"selected\"\n let-disabled=\"disabled\"\n let-focused=\"focused\">\n <span\n class=\"impdc-datepicker-day\"\n [class.impdc-datepicker-day--today]=\"isToday(date)\"\n [class.impdc-datepicker-day--weekend]=\"isWeekend(date)\"\n [class.impdc-datepicker-day--focused]=\"focused\"\n [class.impdc-datepicker-day--selected]=\"selected\"\n [class.impdc-datepicker-day--other-month]=\"date.month !== currentMonth\"\n [class.impdc-datepicker-day--disabled]=\"disabled\">\n {{ date.day }}\n </span>\n</ng-template>\n\n<ng-template #contentTemplate let-dp>\n <div class=\"impdc-datepicker-content p-4\">\n <impdc-datepicker-nav\n [date]=\"dp.model.firstDate!\"\n [disabled]=\"dp.model.disabled\"\n [prevDisabled]=\"dp.model.prevDisabled\"\n [nextDisabled]=\"dp.model.nextDisabled\"\n [selectBoxes]=\"dp.model.selectBoxes\"\n (navigate)=\"dp.onNavigateEvent($event)\"\n (selected)=\"dp.onNavigateDateSelect($event)\"></impdc-datepicker-nav>\n <div class=\"custom-month-grid\">\n @for (month of dp.state.months; track month) {\n <div>\n <ngb-datepicker-month [month]=\"month\"></ngb-datepicker-month>\n </div>\n }\n </div>\n </div>\n</ng-template>\n","import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\n\nexport const DEFAULT_USE_24HR_TIME_LABEL = 'Use 24-hour format';\nexport const DEFAULT_MIN_DATE: NgbDateStruct = {\n year: 1900,\n month: 1,\n day: 1\n} as const;\nexport const DEFAULT_MAX_DATE: NgbDateStruct = {\n year: 2099,\n month: 12,\n day: 31\n} as const;\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl } from '@angular/forms';\nimport { ButtonModule } from '../../../button';\nimport { IDatetimePickerValue } from '../../types';\nimport { DatetimePickerComponent } from '../datetime-picker/datetime-picker.component';\n\n@Component({\n selector: 'impdc-datetime-picker-input-footer',\n standalone: true,\n imports: [CommonModule, ButtonModule],\n templateUrl: './datetime-picker-input-footer.component.html',\n styleUrls: ['./datetime-picker-input-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatetimePickerInputFooterComponent implements OnInit {\n private readonly _cd = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n protected readonly datetimePickerFormControl =\n new FormControl<IDatetimePickerValue<any, any> | null>(null);\n\n @Input({ required: true })\n public datetimePicker!: DatetimePickerComponent;\n\n @Input()\n public initialValue: IDatetimePickerValue<any, any> | null = null;\n\n @Input()\n public cancelLabel: string = 'Cancel';\n\n @Input()\n public clearLabel: string = 'Clear';\n\n @Input()\n public saveLabel: string = 'Save';\n\n @Output()\n public readonly datetimeSelected = new EventEmitter<IDatetimePickerValue<\n any,\n any\n > | null>();\n\n @Output()\n public readonly closeRequested = new EventEmitter<void>();\n\n public ngOnInit() {\n this.datetimePickerFormControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(v => this.datetimePicker.writeValue(v));\n this.datetimePickerFormControl.reset(this.initialValue);\n this.datetimePicker.registerOnChange(\n (value: IDatetimePickerValue<unknown, unknown> | null) => {\n this.datetimePickerFormControl.setValue(value, { emitEvent: false });\n this._cd.markForCheck();\n }\n );\n }\n\n public allowSave(): boolean {\n const currentValue = this.datetimePickerFormControl.value;\n\n return (\n !!currentValue?.date &&\n (!this.datetimePicker.withTime || !!currentValue.time)\n );\n }\n\n public clearAndClose() {\n this.datetimePickerFormControl.reset(null);\n this.saveAndClose();\n }\n\n public saveAndClose() {\n this.datetimeSelected.emit(this.datetimePickerFormControl.value);\n this.closePicker();\n }\n\n public closePicker() {\n this.closeRequested.emit();\n }\n}\n","<div class=\"d-flex gap-3\">\n <button class=\"btn btn-link me-auto\" type=\"button\" (click)=\"clearAndClose()\">\n {{ clearLabel }}\n </button>\n <button impdcButton theme=\"secondary\" (click)=\"closePicker()\">\n {{ cancelLabel }}\n </button>\n <button\n impdcButton\n theme=\"primary\"\n [disabled]=\"!allowSave()\"\n (click)=\"saveAndClose()\">\n {{ saveLabel }}\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { CommonModule, TranslationWidth } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport {\n NgbDateAdapter,\n NgbDateStruct,\n NgbDatepicker,\n NgbDatepickerModule,\n NgbTimepickerModule\n} from '@ng-bootstrap/ng-bootstrap';\nimport { nanoid } from 'nanoid';\nimport { Subject, debounceTime } from 'rxjs';\n\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n IMPDC_FORM_ROOT,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n ImpdcFormsModule,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../../../form-field';\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n DEFAULT_USE_24HR_TIME_LABEL\n} from '../../constants';\nimport { IDatetimePickerValue } from '../../types';\nimport { DatepickerTemplateHostComponent } from '../datepicker-template-host';\nimport { DatetimePickerInputFooterComponent } from '../datetime-picker-input-footer';\n\ninterface ITimeOptions {\n readonly border: boolean;\n readonly layout: 'inline' | 'stacked';\n}\n\nexport const DEFAULT_TIME_LAYOUT: ITimeOptions = {\n border: false,\n layout: 'inline'\n} as const;\n\nconst _DatetimePickerComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * A control for selecting date or datetime via an inline calendar control.\n *\n * Implements [ControlValueAccessor](https://angular.io/api/forms/ControlValueAccessor) to support two-way binding with\n * Angular forms via usage of the \\`[(ngModel)]\\`, \\`[formControl]\\`, and \\`[formControlName]\\` directives.\n *\n * The date and time controls inside this component leverage the value adapter patterns and services of NG-Bootstrap's\n * [Datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview#date-model) and\n * [Timepicker](https://ng-bootstrap.github.io/#/components/timepicker/examples#adapter) components when working with input values.\n * This means that `date` values will be [NgbDateStruct](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateStruct)\n * objects and `time` values will be [NgbTimeStruct](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeStruct) objects\n * by default, and the [NgbDateAdapter](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateAdapter) and\n * [NgbTimeAdapter](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeAdapter) services will be used to handle them respectively.\n * If usage of alternative date and time models is desired, consult NG-Bootstrap's documentation for directions.\n */\n@Component({\n selector: 'impdc-datetime-picker',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgbDatepickerModule,\n NgbTimepickerModule,\n DatepickerTemplateHostComponent,\n DatetimePickerInputFooterComponent,\n ImpdcFormsModule\n ],\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-datetime-picker--required]': 'required',\n '[class.impdc-datetime-picker--disabled]': 'disabled',\n '[class.impdc-datetime-picker--invalid]': 'errorState',\n '[class.impdc-datetime-picker--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: DatetimePickerComponent\n }\n ]\n})\nexport class DatetimePickerComponent\n extends _DatetimePickerComponentBase\n implements\n ControlValueAccessor,\n DoCheck,\n OnChanges,\n OnDestroy,\n OnInit,\n ImpdcFormFieldControl<IDatetimePickerValue<any, any> | null>,\n ICanUpdateErrorState,\n IHasErrorState\n{\n private readonly _changeDetector = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _hostElement = inject(ElementRef);\n private readonly _ngbDateAdapter = inject(NgbDateAdapter<any>);\n private readonly _uid = `impdc-datetime-picker-${nanoid()}`;\n private _previousControl?: AbstractControl | null;\n\n protected readonly NgTranslationWidth = TranslationWidth;\n protected readonly formGroup = inject(FormBuilder).group({\n date: new FormControl<any>(null),\n time: new FormControl<any>(null),\n use24hrTime: new FormControl<boolean>(false, { nonNullable: true })\n });\n protected cvaOnChange = (_: any) => {};\n protected cvaOnTouched = () => {};\n\n @ViewChild(NgbDatepicker, { static: true })\n protected ngbDatepicker!: NgbDatepicker;\n\n /**\n * A callback function that can be evaluated to decide if a given date is disabled\n * in the calendar view.\n *\n * @param date An [`NgbDate`](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDate) value describing the singular date being evaluated.\n * @param current The month and year selected for the current calendar view.\n */\n @Input()\n public markDateDisabled?: (\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ) => boolean;\n\n /**\n * The earliest allowable date for display or selection.\n *\n * @default { year: 1900, month: 1, day: 1 }\n */\n @Input()\n public get minDate(): NgbDateStruct {\n return { ...this._minDate };\n }\n public set minDate(value: NgbDateStruct | null) {\n this._minDate = value || DEFAULT_MIN_DATE;\n }\n private _minDate: NgbDateStruct = DEFAULT_MIN_DATE;\n\n /**\n * The latest allowable date for display or selection.\n *\n * @default { year: 2099, month: 12, day: 31 }\n */\n @Input()\n public get maxDate(): NgbDateStruct {\n return { ...this._maxDate };\n }\n public set maxDate(value: NgbDateStruct | null) {\n this._maxDate = value || DEFAULT_MAX_DATE;\n }\n private _maxDate: NgbDateStruct = DEFAULT_MAX_DATE;\n\n /**\n * Configurable options for setting the layout of the date and time controls within the component.\n */\n @Input()\n public get timeLayout(): ITimeOptions {\n return { ...this._timeLayout };\n }\n public set timeLayout(value: Partial<ITimeOptions>) {\n this._timeLayout = {\n ...DEFAULT_TIME_LAYOUT,\n ...value\n };\n }\n private _timeLayout: ITimeOptions = { ...DEFAULT_TIME_LAYOUT };\n\n /**\n * Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.\n */\n @Input()\n public meridianToggleLabel: string = DEFAULT_USE_24HR_TIME_LABEL;\n\n /**\n * Set whether to display controls for selecting a time value in addition to the date.\n */\n @Input()\n public withTime = false;\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Events fire when raw value of picker input changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n @Output()\n public readonly valueChange: EventEmitter<IDatetimePickerValue<\n any,\n any\n > | null> = new EventEmitter<IDatetimePickerValue<any, any> | null>();\n\n /** @ignore */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly blur = new EventEmitter<FocusEvent>();\n\n constructor(\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.id = this.id;\n }\n\n /** @ignore */\n public focus(): void {\n this.ngbDatepicker.focus();\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /** @ignore */\n public ngOnInit(): void {\n this.formGroup.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef), debounceTime(100))\n .subscribe(formValue => {\n const changeValue = this._getValueFromFormModel(formValue);\n this.cvaOnChange(changeValue);\n this.valueChange.emit(changeValue);\n this.cvaOnTouched();\n });\n }\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(obj: IDatetimePickerValue<any, any> | any): void {\n let newValue: Partial<IDatetimePickerValue> = {};\n if (obj && 'date' in obj) {\n newValue = {\n ...newValue,\n date: obj.date\n };\n }\n\n if (this.withTime && obj && 'time' in obj) {\n newValue = {\n ...newValue,\n time: obj.time\n };\n }\n\n this.formGroup.patchValue(newValue, { emitEvent: false });\n if ('date' in newValue) {\n this.ngbDatepicker.focusDate(\n this._ngbDateAdapter.fromModel(newValue.date)\n );\n }\n\n this.stateChanges.next();\n }\n\n /** @ignore */\n public registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: any): void {\n this.cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n if (isDisabled) {\n this.formGroup.disable();\n } else {\n this.formGroup.enable();\n }\n }\n\n /* ImpdcFormFieldControl */\n\n @Input()\n public get value(): IDatetimePickerValue<any, any> | null {\n return this._getValueFromFormModel(this.formGroup.value);\n }\n public set value(value: IDatetimePickerValue<any, any> | null) {\n this.writeValue(value);\n }\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused;\n }\n protected _focused = false;\n\n public readonly controlType: string = 'impdc-datetime-picker';\n public readonly supportsAffixes: boolean = false;\n\n /* Internals */\n\n protected get use24hrTime(): boolean {\n return this.formGroup.getRawValue().use24hrTime;\n }\n\n protected get use24hrTimeLabelText(): string {\n return this.meridianToggleLabel?.trim() || DEFAULT_USE_24HR_TIME_LABEL;\n }\n\n protected handleFocusOut(evt: FocusEvent): void {\n if (\n !evt.relatedTarget ||\n !this._hostElement.nativeElement.contains(evt.relatedTarget)\n ) {\n this._onBlur(evt);\n }\n }\n\n private _getValueFromFormModel(\n formValue: Partial<{ date: any; time: any; use24hrTime: any }>\n ): IDatetimePickerValue<any, any> | null {\n if (!formValue.date && !formValue.time) {\n return null;\n }\n\n let result: IDatetimePickerValue<any, any> = {\n date: formValue.date\n };\n\n if (this.withTime) {\n result = {\n ...result,\n time: formValue.time\n };\n }\n\n return result;\n }\n\n private _dateIsOutsideCurrentMonth(\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ): boolean {\n return !!current && date.month !== current.month;\n }\n\n protected readonly markDateDisabledFn = (\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ) => {\n return (\n this._dateIsOutsideCurrentMonth(date, current) ||\n (!!this.markDateDisabled && this.markDateDisabled(date, current))\n );\n };\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _onBlur(focusEvent: FocusEvent): void {\n this._focused = false;\n\n if (!this.disabled) {\n this.cvaOnTouched();\n this.blur.emit(focusEvent);\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n}\n","<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"use24hrTimeLabelText\"\n formControlName=\"use24hrTime\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"!use24hrTime\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { IDatetimePickerValue } from '../../types';\nimport {\n NgbDateAdapter,\n NgbDateStruct,\n NgbDropdownModule,\n NgbTimeAdapter\n} from '@ng-bootstrap/ng-bootstrap';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { nanoid } from 'nanoid';\nimport { Subject } from 'rxjs';\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n IMPDC_FORM_ROOT,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../../../form-field';\nimport { ImpdcDatetimeFormatter } from '../../services';\nimport { DatetimePickerComponent } from '../datetime-picker/datetime-picker.component';\nimport { DatetimePickerInputFooterComponent } from '../datetime-picker-input-footer';\nimport { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE } from '../../constants';\n\nexport interface IDatetimePickerPopupButtonLabels {\n readonly cancelLabel: string;\n readonly clearLabel: string;\n readonly saveLabel: string;\n}\n\nexport const DEFAULT_POPUP_BUTTON_LABELS: IDatetimePickerPopupButtonLabels = {\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n saveLabel: 'Save'\n} as const;\n\nconst _DatetimePickerInputComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * A control for selecting date or datetime via an interactive dropdown control.\n *\n * Implements [ControlValueAccessor](https://angular.io/api/forms/ControlValueAccessor) to support two-way binding with\n * Angular forms via usage of the \\`[(ngModel)]\\`, \\`[formControl]\\`, and \\`[formControlName]\\` directives.\n *\n * The date and time controls inside this component leverage the value adapter patterns and services of NG-Bootstrap's\n * [Datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview#date-model) and\n * [Timepicker](https://ng-bootstrap.github.io/#/components/timepicker/examples#adapter) components when working with input values.\n * This means that `date` values will be [NgbDateStruct](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateStruct)\n * objects and `time` values will be [NgbTimeStruct](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeStruct) objects\n * by default, and the [NgbDateAdapter](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateAdapter) and\n * [NgbTimeAdapter](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeAdapter) services will be used to handle them respectively.\n * If usage of alternative date and time models is desired, consult NG-Bootstrap's documentation for directions.\n */\n@Component({\n selector: 'impdc-datetime-picker-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatetimePickerComponent,\n DatetimePickerInputFooterComponent,\n NgbDropdownModule\n ],\n templateUrl: './datetime-picker-input.component.html',\n styleUrls: ['./datetime-picker-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-control]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-datetime-picker-input--required]': 'required',\n '[class.impdc-datetime-picker-input--disabled]': 'disabled',\n '[class.impdc-datetime-picker-input--invalid]': 'errorState',\n '[class.impdc-datetime-picker-input--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: DatetimePickerInputComponent\n }\n ]\n})\nexport class DatetimePickerInputComponent\n extends _DatetimePickerInputComponentBase\n implements\n ControlValueAccessor,\n DoCheck,\n OnChanges,\n OnDestroy,\n OnInit,\n ImpdcFormFieldControl<IDatetimePickerValue<any, any> | null>,\n ICanUpdateErrorState,\n IHasErrorState\n{\n private readonly _changeDetector = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _ngbDateAdapter = inject(NgbDateAdapter<any>);\n private readonly _ngbTimeAdapter = inject(NgbTimeAdapter<any>);\n private readonly _datetimeFormatter = inject(ImpdcDatetimeFormatter);\n private readonly _uid = `impdc-datetime-picker-input-${nanoid()}`;\n private _previousControl?: AbstractControl | null;\n private _dropdownOpen = false;\n\n protected readonly datetimePickerControl =\n new FormControl<IDatetimePickerValue<any, any> | null>(null);\n protected cvaOnChange = (_: any) => {};\n protected cvaOnTouched = () => {};\n\n @ViewChild('toggleButton', { static: true, read: ElementRef })\n protected _toggleButtonRef!: ElementRef<HTMLButtonElement>;\n\n /**\n * A callback function that can be evaluated to decide if a given date is disabled\n * in the calendar view.\n *\n * @param date An [`NgbDate`](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDate) value describing the singular date being evaluated.\n * @param current The month and year selected for the current calendar view.\n */\n @Input()\n public markDateDisabled?: (\n date: NgbDateStruct,\n current?: { month: number; year: number }\n ) => boolean;\n\n /**\n * The earliest allowable date for display or selection.\n *\n * @default { year: 1900, month: 1, day: 1 }\n */\n @Input()\n public get minDate(): NgbDateStruct {\n return { ...this._minDate };\n }\n public set minDate(value: NgbDateStruct | null) {\n this._minDate = value || DEFAULT_MIN_DATE;\n }\n private _minDate: NgbDateStruct = DEFAULT_MIN_DATE;\n\n /**\n * The latest allowable date for display or selection.\n *\n * @default { year: 2099, month: 12, day: 31 }\n */\n @Input()\n public get maxDate(): NgbDateStruct {\n return { ...this._maxDate };\n }\n public set maxDate(value: NgbDateStruct | null) {\n this._maxDate = value || DEFAULT_MAX_DATE;\n }\n private _maxDate: NgbDateStruct = DEFAULT_MAX_DATE;\n\n /**\n * Set whether to display controls for selecting a time value in addition to the date.\n */\n @Input()\n public withTime = false;\n\n /**\n * Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.\n */\n @Input()\n public meridianToggleLabel: string = 'Use 24-hour format';\n\n /**\n * Object dictating the labels used for the buttons displayed in the footer of the datetime picker popup.\n *\n * @default { cancelLabel: \"Cancel\", clearLabel: \"Clear\", saveLabel: \"Save\" }\n */\n @Input()\n public get popupButtonLabels(): IDatetimePickerPopupButtonLabels {\n return this._popupButtonLabels;\n }\n public set popupButtonLabels(\n value: Partial<IDatetimePickerPopupButtonLabels>\n ) {\n this._popupButtonLabels = {\n ...DEFAULT_POPUP_BUTTON_LABELS,\n ...value\n };\n }\n private _popupButtonLabels = DEFAULT_POPUP_BUTTON_LABELS;\n\n /**\n * The placeholder text that will be displayed when no selection has been made.\n *\n * @default YYYY-MM-DD hh:mm\n */\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n public set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder = '';\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /**\n * Events fire when raw value of picker input changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n @Output()\n public readonly valueChange: EventEmitter<IDatetimePickerValue<\n any,\n any\n > | null> = new EventEmitter<IDatetimePickerValue<any, any> | null>();\n\n constructor(\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.id = this.id;\n }\n\n /** @ignore */\n public get empty(): boolean {\n return !this.value;\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this._toggleButtonRef.nativeElement.focus(options);\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /** @ignore */\n public ngOnInit() {\n this.datetimePickerControl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(v => {\n this.cvaOnChange(v);\n this.valueChange.emit(v);\n this._updateDisplayedValue(v);\n });\n }\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(obj: any): void {\n this.datetimePickerControl.setValue(obj, { emitEvent: false });\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: any): void {\n this.cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n if (isDisabled) {\n this.datetimePickerControl.disable();\n } else {\n this.datetimePickerControl.enable();\n }\n\n this._changeDetector.markForCheck();\n }\n\n /* ImpdcFormFieldControl */\n\n @Input()\n public get value(): IDatetimePickerValue<any, any> | null {\n return this.datetimePickerControl.value;\n }\n public set value(value: IDatetimePickerValue<any, any> | null) {\n if (value !== this.datetimePickerControl.value) {\n this.datetimePickerControl.setValue(value);\n this.stateChanges.next();\n }\n }\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused || this._dropdownOpen;\n }\n protected _focused = false;\n\n public readonly controlType: string = 'impdc-datetime-picker-input';\n public readonly supportsAffixes: boolean = true;\n\n /* Internals */\n\n protected displayedValue: string = '';\n\n protected get placeholderText(): string {\n return (\n this.placeholder?.trim() || `YYYY-MM-DD${this.withTime ? ' hh:mm' : ''}`\n );\n }\n\n protected updateValue(newValue: IDatetimePickerValue<any, any> | null): void {\n this.datetimePickerControl.setValue(newValue);\n }\n\n protected handleOpenChange(isOpen: boolean): void {\n this._dropdownOpen = isOpen;\n\n if (isOpen) {\n this._onFocus();\n } else {\n this._onBlur();\n }\n\n this.stateChanges.next();\n }\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n protected _onBlur(): void {\n this._focused = false;\n\n if (!this.disabled && !this._dropdownOpen) {\n this.cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _updateDisplayedValue(\n datetimePickerValue: IDatetimePickerValue<any, any> | null\n ): void {\n let newValue = '';\n if (datetimePickerValue) {\n const convertedDateValue = this._ngbDateAdapter.fromModel(\n datetimePickerValue.date\n );\n\n if (convertedDateValue) {\n newValue = this._datetimeFormatter.format(convertedDateValue, {\n value: this.withTime\n ? this._ngbTimeAdapter.fromModel(datetimePickerValue.time)\n : null,\n withSeconds: false\n });\n }\n }\n\n this.displayedValue = newValue;\n }\n}\n","<div\n ngbDropdown\n #ngbDropdown=\"ngbDropdown\"\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom bottom-start bottom-end top top-start top-end\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"h-100 w-100\">\n <button\n #toggleButton\n class=\"impdc-datetime-picker--toggle btn border-0 h-100 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n ngbDropdownToggle>\n @if (!displayedValue) {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--placeholder\"\n >{{ placeholderText }}</span\n >\n } @else {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--value-text\"\n >{{ displayedValue }}</span\n >\n }\n </button>\n <div\n ngbDropdownMenu\n class=\"impdc-datetime-picker--dropdown w-100 bg-white overflow-y-visible text-gray-600\"\n tabindex=\"-1\">\n <ng-container *ngIf=\"ngbDropdown.isOpen()\">\n <impdc-datetime-picker\n #picker\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [markDateDisabled]=\"markDateDisabled\"\n [withTime]=\"withTime\"\n [meridianToggleLabel]=\"meridianToggleLabel\"\n [timeLayout]=\"{ layout: 'stacked', border: true }\" />\n <div\n class=\"border-gray-200 border-top d-flex flex-column gap-4 mt-2 p-4 w-100\">\n <impdc-datetime-picker-input-footer\n [datetimePicker]=\"picker\"\n [initialValue]=\"datetimePickerControl.value\"\n [cancelLabel]=\"popupButtonLabels.cancelLabel\"\n [clearLabel]=\"popupButtonLabels.clearLabel\"\n [saveLabel]=\"popupButtonLabels.saveLabel\"\n (datetimeSelected)=\"updateValue($event)\"\n (closeRequested)=\"ngbDropdown.close()\" />\n </div>\n </ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport {\n DatetimePickerComponent,\n DatetimePickerInputComponent\n} from './components';\n\nconst DATETIME_PICKER_DIRECTIVES = [\n DatetimePickerComponent,\n DatetimePickerInputComponent\n];\n\n@NgModule({\n imports: DATETIME_PICKER_DIRECTIVES,\n exports: DATETIME_PICKER_DIRECTIVES\n})\nexport class DatetimePickerModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TextHighlightModule } from './text-highlight';\nimport { ButtonModule } from './button';\nimport { TableModule } from './table';\nimport { ModalModule } from './modal';\nimport { IconModule } from './icon';\nimport { ProgressBarModule } from './progress-bar';\nimport { DropdownModule } from './dropdown';\nimport { AlertModule } from './alert';\nimport { FileUploadModule } from './file-upload';\nimport { AvatarModule } from './avatar';\nimport { AvatarGroupModule } from './avatar-group';\nimport { BadgeModule } from './badge';\nimport { BreadcrumbModule } from './breadcrumb';\nimport { BrandingModule } from './branding';\nimport { DatetimePickerModule } from './datetime-picker';\nimport { TagComponent } from './tag';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TextHighlightModule,\n IconModule,\n BadgeModule,\n TagComponent,\n ProgressBarModule,\n ButtonModule,\n TableModule,\n DropdownModule,\n AlertModule,\n ModalModule,\n FileUploadModule,\n AvatarModule,\n AvatarGroupModule,\n BreadcrumbModule,\n BrandingModule,\n DatetimePickerModule\n ],\n exports: [\n TextHighlightModule,\n IconModule,\n BadgeModule,\n TagComponent,\n ProgressBarModule,\n ButtonModule,\n TableModule,\n DropdownModule,\n AlertModule,\n ModalModule,\n FileUploadModule,\n AvatarModule,\n AvatarGroupModule,\n BreadcrumbModule,\n BrandingModule,\n DatetimePickerModule\n ]\n})\nexport default class DesignComponentsModule {}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n HostBinding\n} from '@angular/core';\n\n/**\n * The `ButtonGroupComponent` (`<impdc-button-group` or `<any impdc-button-group`) is a container for multiple [ButtonComponent](./?path=/docs/design-components-button)s.\n * To use, import `ButtonGroupModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ButtonGroupModule` imports and exports [ButtonModule](./?path=/docs/design-components-button).\n */\n@Component({\n selector: 'impdc-button-group, [impdc-button-group]',\n templateUrl: './button-group.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonGroupComponent {\n /**\n * Changes the orientation of the Button Group to vertical, making any Button within it stack vertically.\n */\n @Input()\n vertical = false;\n\n /**\n * Sets the `aria-label` attribute for the Button Group's element.\n */\n @Input()\n ariaLabel = '';\n\n @HostBinding('class.btn-group') private get classBtnGroup() {\n return !this.vertical;\n }\n\n @HostBinding('class.btn-group-vertical') private get classBtnGroupVertical() {\n return this.vertical;\n }\n\n @HostBinding('attr.role') private attrRole = 'group';\n\n @HostBinding('attr.aria-label') private get attrAriaLabel() {\n return this.ariaLabel || undefined;\n }\n}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '../button/button.module';\nimport { ButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule],\n declarations: [ButtonGroupComponent],\n exports: [ButtonModule, ButtonGroupComponent]\n})\nexport class ButtonGroupModule {\n constructor() {}\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * The `CardHeadingComponent` (`<impdc-card-heading` or `<div impdc-card-heading`) is used to display projected content as a card with a consistent heading.\n * To use, import `CardHeadingModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-card-heading, div[impdc-card-heading]',\n templateUrl: './card-heading.component.html',\n styleUrls: ['./card-heading.component.scss']\n})\nexport class CardHeadingComponent {\n /**\n * The subject text for a Card.\n */\n @Input()\n public title = '';\n\n /**\n * The description, subtitle, or other pre-text for a Card.\n */\n @Input()\n public description = '';\n\n constructor() {}\n}\n","<div class=\"card-heading\">\n <div class=\"heading\">\n <div class=\"heading-left\">\n <div class=\"heading-avatar\">\n <ng-content select=\"impdc-avatar\"></ng-content>\n </div>\n <div class=\"heading-title\">\n <h3 *ngIf=\"title\">{{ title }}</h3>\n <span class=\"description\" *ngIf=\"description\">{{ description }}</span>\n </div>\n </div>\n <div class=\"heading-actions\">\n <ng-content select=\"button[impdcButton]\"></ng-content>\n </div>\n </div>\n <div class=\"card-heading-body\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CardHeadingComponent } from './card-heading.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CardHeadingComponent],\n exports: [CardHeadingComponent]\n})\nexport class CardHeadingModule {\n constructor() {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IElementSize } from '../size-detection';\n\n/**\n * The `ScrollableComponent` (`<impdc-scrollable` or `<div impdc-scrollable`) is a container that hides items that wouldn't fit\n * with arrows on the left and right to slide between them.\n * To use, import `ScrollableModule` or another module that imports and exports that module from `@impartner/design-components`.\n * `ScrollableModule` also imports and exports [BrandingModule](./?path=/docs/design-components-directives-impdcbranded).\n */\n@Component({\n selector: 'impdc-scrollable, div[impdc-scrollable]',\n templateUrl: './scrollable.component.html',\n styleUrls: ['./scrollable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScrollableComponent implements OnChanges, AfterViewInit {\n private readonly GET_ANCESTOR_BG_SEARCH_DEPTH = 64;\n /**\n * The base amount to scroll.\n */\n @Input()\n public scrollUnit = 20;\n\n /**\n * Used in combination with `scrollUnit` to determine how far the Scrollable scrolls when directional arrows are clicked.\n */\n @Input()\n public clickScrollMultiplier = 5;\n\n @HostBinding('style.--impdc-scrollable-bg')\n private _scrollableBgColor: string | null = null;\n\n public get canScrollLeft(): boolean {\n if (!this._contentElement) {\n return false;\n }\n\n return Math.floor(this._contentElement.scrollLeft) > 0;\n }\n\n public get canScrollRight(): boolean {\n if (!this._contentElement) {\n return false;\n }\n\n return (\n Math.ceil(this._contentElement.scrollLeft + this._width) <\n this._contentElement.scrollWidth\n );\n }\n\n private _width = 0;\n\n @ViewChild('container', { static: false })\n public containerRef: ElementRef | undefined;\n\n private get _containerElement(): HTMLDivElement | null {\n if (!this.containerRef) {\n return null;\n }\n\n return this.containerRef.nativeElement;\n }\n\n @ViewChild('content', { static: false })\n public contentRef: ElementRef | undefined;\n\n private get _contentElement(): HTMLDivElement | null {\n if (!this.contentRef) {\n return null;\n }\n\n return this.contentRef.nativeElement;\n }\n\n constructor(\n private _cd: ChangeDetectorRef,\n private readonly _hostElementRef: ElementRef\n ) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['scrollUnit'] || changes['clickScrollMultiplier']) {\n if (this._containerElement) {\n this._width = this._containerElement?.clientWidth;\n this._cd.detectChanges();\n }\n }\n }\n\n public ngAfterViewInit(): void {\n this._width = this.contentRef?.nativeElement.width;\n this._cd.detectChanges();\n\n Promise.resolve().then(() => this._getBackgroundColorForButtons());\n }\n\n public async scroll(direction: number): Promise<void> {\n if (!this._contentElement) {\n return;\n }\n\n let pixels = direction * this.scrollUnit * this.clickScrollMultiplier;\n let position = 0;\n\n if (!pixels) {\n if (direction === 1) {\n position = this._contentElement.scrollWidth;\n }\n } else {\n position = this._contentElement.scrollLeft + pixels;\n }\n\n await this._scrollToPosition(this._contentElement, position);\n\n this._cd.detectChanges();\n }\n\n public widthChanged(elementSize: IElementSize): void {\n if (!elementSize || !elementSize.width) {\n return;\n }\n this._width = elementSize.width;\n this._cd.detectChanges();\n }\n\n private async _scrollToPosition(container: HTMLDivElement, position: number) {\n position = Math.round(position);\n\n if (container.scrollLeft === position) {\n return;\n }\n\n let resolveFn: (value: unknown) => void;\n let scrollListener: () => void;\n let timeoutId: any;\n\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n const finished = () => {\n container.removeEventListener('scroll', scrollListener);\n resolveFn(null);\n };\n\n scrollListener = () => {\n clearTimeout(timeoutId);\n\n // scroll is finished when either the position has been reached, or 100ms have elapsed since the last scroll event\n if (container.scrollLeft === position) {\n finished();\n } else {\n timeoutId = setTimeout(finished, 100);\n }\n };\n\n container.addEventListener('scroll', scrollListener);\n\n container.scrollTo({\n left: position,\n behavior: 'smooth'\n });\n\n return promise;\n }\n\n private _getBackgroundColorForButtons(): void {\n let backgroundColor = this._getBackGroundColor(\n this._hostElementRef.nativeElement\n );\n\n if (!backgroundColor) {\n backgroundColor = this._getAncestorBackgroundColor();\n }\n\n if (this._scrollableBgColor !== backgroundColor) {\n this._scrollableBgColor = backgroundColor;\n this._cd.detectChanges();\n }\n }\n\n private _getAncestorBackgroundColor(): string | null {\n type parentBgResult = {\n parent: HTMLElement | null;\n backgroundColor: string | null;\n };\n\n let result: parentBgResult = {\n parent: this._hostElementRef.nativeElement.parentElement,\n backgroundColor: null\n };\n\n let count = this.GET_ANCESTOR_BG_SEARCH_DEPTH;\n\n function getParentBackgroundColor(\n currentContext: parentBgResult,\n getBackgroundColor: (element: HTMLElement) => string | null\n ): parentBgResult {\n const result: parentBgResult = { parent: null, backgroundColor: null };\n if (currentContext && currentContext.parent) {\n result.backgroundColor = getBackgroundColor(currentContext.parent);\n\n if (!result.backgroundColor) {\n result.parent = currentContext.parent.parentElement;\n }\n }\n\n return result;\n }\n\n while (count > 0) {\n if (result.backgroundColor) {\n break;\n }\n result = getParentBackgroundColor(result, this._getBackGroundColor);\n\n if (!result.parent) {\n break;\n }\n count = count - 1;\n }\n\n return result.backgroundColor;\n }\n\n private _getBackGroundColor(element: HTMLElement): string | null {\n const computedBackgroundColor =\n getComputedStyle(element)['backgroundColor'];\n\n if (computedBackgroundColor !== 'rgba(0, 0, 0, 0)') {\n return computedBackgroundColor;\n }\n\n return element.style.backgroundColor;\n }\n}\n","<div\n class=\"impdc-scrollable\"\n #container\n impdcSizeDetector\n (resized)=\"widthChanged($event)\">\n <a class=\"impdc-scrollable-left\" (click)=\"scroll(-1)\" *ngIf=\"canScrollLeft\">\n <i impdc-icon name=\"chevron-left\" class=\"default\"></i>\n </a>\n <div #content class=\"content-container\">\n <ng-content></ng-content>\n </div>\n <a class=\"impdc-scrollable-right\" (click)=\"scroll(1)\" *ngIf=\"canScrollRight\">\n <i impdc-icon name=\"chevron-right\" class=\"default\"></i>\n </a>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrandingModule } from '../branding';\nimport { SizeDetectionModule } from '../size-detection';\nimport { ScrollableComponent } from './scrollable.component';\n\n@NgModule({\n imports: [CommonModule, SizeDetectionModule, BrandingModule],\n declarations: [ScrollableComponent],\n exports: [ScrollableComponent, BrandingModule]\n})\nexport class ScrollableModule {\n constructor() {}\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n Self,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators\n} from '@angular/forms';\nimport { nanoid } from 'nanoid';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n Observable,\n startWith,\n Subject\n} from 'rxjs';\nimport { FontAwesomeIcons } from '../../constants';\nimport { BooleanInput, coerceBooleanPropertyValue } from '../../utilities';\nimport {\n ErrorStateMatcher,\n ICanUpdateErrorState,\n IHasErrorState,\n ImpdcFormFieldControl,\n ImpdcFormRoot,\n IMPDC_FORM_ROOT,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '../form-field';\n\nexport class ImpdcSelectIconChange {\n constructor(public source: SelectIconComponent, public value: any) {}\n}\n\nconst _SelectIconComponentBase = mixinTabIndex(\n mixinDisabled(\n mixinErrorState(\n class {\n public readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _formRoot: ImpdcFormRoot,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl | null\n ) {}\n }\n )\n )\n);\n\n/**\n * The `SelectIconComponent` (`<impdc-select-icon`) is a select dropdown with search that shows all standard icons from Bootstrap 5.\n * To use, import `SelectIconModule` or another module that imports and exports that module from `@impartner/design-components`.\n */\n@Component({\n selector: 'impdc-select-icon',\n templateUrl: './select-icon.component.html',\n styleUrls: ['./select-icon.component.scss'],\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'tabIndex'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'impdc-select-icon',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.form-select]': 'true',\n '[class.is-invalid]': 'errorState',\n '[class.impdc-form-field-control]': 'true',\n '[class.impdc-select-icon--required]': 'required',\n '[class.impdc-select-icon--disabled]': 'disabled',\n '[class.impdc-select-icon--invalid]': 'errorState',\n '[class.impdc-select-icon--empty]': 'empty',\n '(focus)': '_onFocus(); focus()'\n },\n providers: [\n {\n provide: ImpdcFormFieldControl,\n useExisting: SelectIconComponent\n }\n ]\n})\nexport class SelectIconComponent\n extends _SelectIconComponentBase\n implements\n ControlValueAccessor,\n ImpdcFormFieldControl<string | null>,\n ICanUpdateErrorState,\n IHasErrorState,\n DoCheck,\n OnChanges,\n OnDestroy\n{\n @ViewChild('toggleButton', { static: true, read: ElementRef })\n protected _toggleButtonRef!: ElementRef<HTMLButtonElement>;\n\n protected readonly filteredOptions$: Observable<string[]>;\n protected readonly searchControl = new FormControl<string>('');\n protected readonly _uid = `impdc-select-icon-${nanoid()}`;\n protected _dropdownOpen = false;\n\n private readonly _iconOptionsSubject = new BehaviorSubject<readonly string[]>(\n FontAwesomeIcons\n );\n private _previousControl?: AbstractControl | null;\n private _cvaOnChange: (value: any) => void = () => {};\n private _cvaOnTouched = () => {};\n\n /**\n * Set whether or not an input field will appear for searching and\n * filtering icon options.\n * @default true\n */\n @Input()\n public allowSearch: boolean;\n\n public get iconOptions(): string[] {\n return [...this._iconOptionsSubject.value];\n }\n\n /**\n * Set to override the default set of FontAwesome icon options.\n */\n @Input()\n public set iconOptions(iconOptions: string[]) {\n if (iconOptions) {\n this._iconOptionsSubject.next([...iconOptions]);\n }\n }\n\n /**\n * Set whether or not to show the icon names as labels for icon options.\n * @default true\n */\n @Input()\n public showText: boolean;\n\n /**\n * Set whether or not to show the name of the selected icon inside the control.\n * @default true\n */\n @Input()\n public showSelectedText: boolean;\n\n /**\n * The placeholder text that will be displayed when no selection has been made.\n *\n * @default \\- Select -\n */\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n public set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder = '- Select -';\n\n @Input()\n public override errorStateMatcher!: ErrorStateMatcher;\n\n /** Events fire when selection has been changed by the user. */\n @Output()\n public readonly selectionChange: EventEmitter<ImpdcSelectIconChange> =\n new EventEmitter<ImpdcSelectIconChange>();\n\n /**\n * Events fire when raw value of select changes. Mainly exists to handle\n * two-way binding of `value` input property.\n * @ignore\n */\n @Output()\n public readonly valueChange = new EventEmitter<string | null>();\n\n constructor(\n private readonly _changeDetector: ChangeDetectorRef,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(IMPDC_FORM_ROOT) _formRoot: ImpdcFormRoot,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Self() @Optional() ngControl: NgControl\n ) {\n super(\n _defaultErrorStateMatcher,\n _formRoot,\n _parentForm,\n _parentFormGroup,\n ngControl\n );\n\n this.allowSearch = false;\n this.showText = true;\n this.showSelectedText = true;\n\n const debouncedSearchValues = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(200),\n distinctUntilChanged()\n );\n this.filteredOptions$ = combineLatest([\n debouncedSearchValues,\n this._iconOptionsSubject.asObservable()\n ]).pipe(\n map(([searchTerm, iconOptions]) => {\n if (!searchTerm) {\n return [...iconOptions];\n }\n\n const searchTermLowerCase = searchTerm.toLowerCase();\n return iconOptions.filter(\n option => option.toLowerCase().indexOf(searchTermLowerCase) > -1\n );\n })\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.id = this.id;\n }\n\n public get empty(): boolean {\n return !this.value;\n }\n\n /** @ignore */\n public focus(options?: FocusOptions): void {\n this._toggleButtonRef.nativeElement.focus(options);\n }\n\n /* Lifecycle Hooks */\n\n /** @ignore */\n public ngDoCheck(): void {\n const ngControl = this.ngControl;\n\n if (!ngControl) {\n return;\n }\n\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl?.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n\n /** @ignore */\n public ngOnChanges(changes: SimpleChanges): void {\n // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal\n // to the parent form field so it can run change detection when disabled state is changed.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n /** @ignore */\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* ControlValueAccessor */\n\n /** @ignore */\n public writeValue(value: string): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /** @ignore */\n public registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n /** @ignore */\n public registerOnTouched(fn: () => {}): void {\n this._cvaOnTouched = fn;\n }\n\n /** @ignore */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n\n /* ImpdcFormFieldControl */\n\n @Input()\n public get value(): string | null {\n return this._value;\n }\n public set value(value: string | null) {\n const newValue =\n (value && this.iconOptions.find(opt => opt === value)) || null;\n\n if (newValue !== this._value) {\n this._value = newValue;\n this.stateChanges.next();\n }\n }\n private _value: string | null = null;\n\n @Input()\n public get id(): string {\n return this._id;\n }\n public set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n protected _id!: string;\n\n /**\n * Used to set requiredness of control in a template-based manner;\n * not necessary when using the Angular reactive forms API and `required` validator.\n *\n * @default false\n */\n @Input()\n public get required(): boolean {\n return (\n this._required ??\n this.ngControl?.control?.hasValidator(Validators.required) ??\n false\n );\n }\n public set required(value: BooleanInput) {\n this._required = coerceBooleanPropertyValue(value);\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n public get focused(): boolean {\n return this._focused || this._dropdownOpen;\n }\n protected _focused = false;\n\n public readonly controlType: string = 'impdc-select-icon';\n public readonly supportsAffixes: boolean = true;\n\n /* Internals */\n\n protected handleOpenChange(isOpen: boolean): void {\n this._dropdownOpen = isOpen;\n this.searchControl.reset();\n\n if (isOpen) {\n this._onFocus();\n } else {\n this._onBlur();\n }\n\n this.stateChanges.next();\n }\n\n protected selectIcon(iconName: string): void {\n if (iconName !== this.value) {\n this.value = iconName;\n this.valueChange.emit(this.value);\n this._cvaOnChange(this.value);\n this.selectionChange.emit(this._buildChangeEvent(this.value));\n this._changeDetector.markForCheck();\n }\n\n if (this._dropdownOpen) {\n this.focus();\n }\n }\n\n protected _onFocus(): void {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the CVA touched callback only if the dropdown is closed.\n */\n protected _onBlur(): void {\n this._focused = false;\n\n if (!this.disabled && !this._dropdownOpen) {\n this._cvaOnTouched();\n this._changeDetector.markForCheck();\n this.stateChanges.next();\n }\n }\n\n private _buildChangeEvent(value: string | null): ImpdcSelectIconChange {\n return new ImpdcSelectIconChange(this, value);\n }\n}\n","<div\n ngbDropdown\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select-icon--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select-icon--text impdc-select-icon--placeholder\"\n *ngSwitchCase=\"true\">\n {{ placeholder }}\n </span>\n <div\n class=\"impdc-select-icon--text impdc-select-icon--value-text\"\n *ngSwitchCase=\"false\">\n <i impdc-icon [name]=\"value ?? undefined\"></i>\n <span *ngIf=\"showSelectedText\" class=\"ms-2\">{{ value }}</span>\n </div>\n </ng-container>\n </button>\n <div ngbDropdownMenu class=\"select-icon-dropdown-menu\" tabindex=\"-1\">\n <div *ngIf=\"allowSearch\" class=\"select-icon-search\">\n <impdc-form-field>\n <span impdcTextPrefix><i impdc-icon name=\"search\"></i></span>\n <input\n impdcInput\n [formControl]=\"searchControl\"\n class=\"select-icon-search-input\"\n type=\"search\" />\n </impdc-form-field>\n </div>\n <div class=\"select-icon-grid\">\n <button\n *ngFor=\"let iconName of filteredOptions$ | async\"\n type=\"button\"\n (click)=\"selectIcon(iconName)\"\n class=\"icon-option\"\n [class.selected]=\"value === iconName\"\n [title]=\"iconName\"\n [attr.aria-labelledby]=\"showText ? id + '_' + iconName : null\">\n <div class=\"icon-container\">\n <i impdc-icon [name]=\"iconName\" class=\"fs-2xl\"></i>\n </div>\n <div\n id=\"{{ id }}_{{ iconName }}\"\n class=\"icon-label\"\n [class.sr-only]=\"!showText\">\n {{ iconName }}\n </div>\n </button>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n NgbDropdownModule,\n NgbTypeaheadModule\n} from '@ng-bootstrap/ng-bootstrap';\nimport { ImpdcFormsModule } from '../form-field';\nimport { SelectIconComponent } from './select-icon.component';\nimport { IconModule } from '../icon';\n\n@NgModule({\n declarations: [SelectIconComponent],\n imports: [\n CommonModule,\n ImpdcFormsModule,\n IconModule,\n NgbTypeaheadModule,\n NgbDropdownModule,\n ReactiveFormsModule\n ],\n exports: [SelectIconComponent]\n})\nexport class SelectIconModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostBinding,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { ComponentTheme } from '../../types';\n\n/**\n * The `CardHeadingComponent` (`<impdc-data-card` or `<any impdc-data-card`) is to display data snapshots with support for\n * previous values and differences.\n *\n * To use, import `DataCardModule` or another module that imports and exports that module from `@impartner/design-components`.\n *\n * An icon may be displayed in the card via Angular content projection and the `icon` attribute.\n */\n@Component({\n selector: 'impdc-data-card, [impdc-data-card]',\n templateUrl: './data-card.component.html',\n styleUrls: ['./data-card.component.scss']\n})\nexport class DataCardComponent {\n protected readonly BadgeTheme = ComponentTheme;\n\n @ViewChild('iconContentEl', { static: true, read: ElementRef<HTMLElement> })\n protected iconContentElementRef!: ElementRef<HTMLElement>;\n\n /**\n * The subject text for the Data Card.\n */\n @Input()\n title = '';\n\n /**\n * The current data value. Any number/currency format is supported.\n */\n @Input()\n current = '0';\n\n /**\n * The previous data value. Any number/currency format is supported.\n * Only displayed when an icon is not provided via Angular content projection.\n */\n @Input()\n previous = '';\n\n /**\n * The difference between the current and previous values. A numerical or percentage value is preferred,\n * but any number/currency format is supported.\n */\n @Input()\n difference = '';\n\n /**\n * Text for the link at the bottom of the Data Card. If provided, enables the `linkClicked` event to be emitted.\n */\n @Input()\n linkText = '';\n\n /**\n * When stacking multiple Data Card elements together, it's common to combine their borders.\n */\n @Input()\n sharedBorders = true;\n\n /**\n * Changes the color of the icon.\n */\n @Input()\n iconColor = '';\n\n /**\n * Changes the color of the icon's background.\n */\n @Input()\n iconBgColor = '';\n\n /**\n * Emitted when the link text is clicked.\n */\n @Output()\n linkClicked = new EventEmitter<MouseEvent | Event>();\n\n /**\n * Emitted when the corner content is clicked.\n */\n @Output()\n cornerClicked = new EventEmitter<MouseEvent | Event>();\n\n @HostBinding('class') private get classDataCard(): string {\n return 'card impdc-data-card';\n }\n\n @HostBinding('class.impdc-data-card-shared-borders')\n private get classDataCardSharedBorders(): boolean {\n return this.sharedBorders;\n }\n\n get differenceNumber(): number {\n return Number(this.difference.replace(/[^0-9\\.-]+/g, ''));\n }\n\n get differenceNegative(): boolean {\n return this.differenceNumber < 0;\n }\n\n get differencePositive(): boolean {\n return this.differenceNumber > 0;\n }\n\n get differenceDisplay(): string {\n return this.difference.replace('-', '');\n }\n\n protected get hasIcon(): boolean {\n return !!this.iconContentElementRef.nativeElement.children.length;\n }\n\n protected handleLinkClick(event: MouseEvent | Event): void {\n this.linkClicked.emit(event);\n }\n\n protected handleCornerClick(event: MouseEvent | Event): void {\n this.cornerClicked.emit(event);\n }\n}\n","<div class=\"card-body impdc-data-card-body\">\n <div\n #iconContentEl\n class=\"impdc-data-card-icon\"\n [style.color]=\"iconColor ? iconColor : undefined\"\n [style.background-color]=\"iconBgColor ? iconBgColor : undefined\"\n [class.d-none]=\"!hasIcon\">\n <ng-content select=\"[icon]\"></ng-content>\n </div>\n <div class=\"impdc-data-card-container\">\n <div class=\"impdc-data-card-title\" [class.title-attention]=\"!hasIcon\">\n {{ title }}\n </div>\n <div class=\"impdc-data-card-data\">\n <ng-content></ng-content>\n <span\n *ngIf=\"current\"\n class=\"data-current\"\n [class.data-current-enlarged]=\"!hasIcon && !previous && !difference\"\n [innerText]=\"current\"></span>\n <span class=\"data-other\">\n <span\n *ngIf=\"!hasIcon && previous\"\n class=\"data-previous\"\n [innerText]=\"previous\"></span>\n <impdc-badge\n *ngIf=\"difference\"\n [text]=\"differenceDisplay\"\n [icon]=\"\n differencePositive\n ? 'arrow-up'\n : differenceNegative\n ? 'arrow-down'\n : ''\n \"\n [theme]=\"\n differencePositive\n ? BadgeTheme.Success\n : differenceNegative\n ? BadgeTheme.Danger\n : BadgeTheme.Light\n \"\n [hideBg]=\"hasIcon\"\n [rounded]=\"true\"></impdc-badge>\n </span>\n </div>\n </div>\n <div\n #cornerContentEl\n class=\"impdc-data-card-corner\"\n [class.d-none]=\"!cornerContentEl.children.length\"\n (click)=\"handleCornerClick($event); $event.stopPropagation()\">\n <ng-content select=\"[corner]\"></ng-content>\n </div>\n</div>\n<div\n class=\"card-footer impdc-data-card-footer\"\n [class.d-none]=\"!linkText && !footerContentEl.children.length\">\n <div #footerContentEl [class.d-none]=\"!footerContentEl.children.length\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n <a\n *ngIf=\"linkText\"\n class=\"footer-link\"\n (click)=\"handleLinkClick($event); $event.stopPropagation()\"\n >{{ linkText }}</a\n >\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DataCardComponent } from './data-card.component';\nimport { IconModule } from '../icon';\nimport { BadgeModule } from '../badge';\n\n@NgModule({\n imports: [CommonModule, IconModule, BadgeModule],\n declarations: [DataCardComponent],\n exports: [IconModule, DataCardComponent]\n})\nexport class DataCardModule {\n constructor() {}\n}\n","/*\n * Public API Surface of design-components\n */\n\n// do not export design or utilities\n\nexport * from './constants';\nexport * from './types';\nexport * from './services';\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IconComponent","getNestedValue","i1.CornerHintDirective","i2.ErrorDirective","i3.RootFormGroupDirective","i3.RootNgFormDirective","i4.HintDirective","i5.LabelDirective","i6.PrefixDirective","i7.SuffixDirective","i1","i2.ErrorStateMatcher","i3.IconComponent","i1.IconComponent","i4.IconComponent","i5.FormFieldComponent","i2.ButtonComponent","i4","i6.SelectOptionComponent","i7.SelectComponent","i8.InputDirective","i9.SizeDetectorDirective","i1.ErrorStateMatcher","i3.ToggleComponent","i4.ToggleInputComponent","i1.UniqueSelectionDispatcher","i2.ToggleComponent","i3.ToggleInputComponent","i1.BrandedDirective","i2","i3.ButtonComponent","i4.BrandedDirective","i5.IconComponent","i6","debounceTime","setNestedValue","i2.BrandedDirective","i3.BrandedDirective","i5.CheckboxComponent","i9","i10.SpinnerComponent","i11.BadgeComponent","i12.CollapseMonitorDirective","i13.TableDirective","i14.ColumnHeadingComponent","i15.TableInjectComponentDirective","i16.RowActionsComponent","i1.InteractionService","i3","i4.ButtonComponent","i6.FileDropDirective","i7.HumanReadableByteSizePipe","i3.SelectOptionComponent","i4.SelectComponent","i1.ButtonComponent","i5.RootFormGroupDirective","i6.CheckboxComponent","i2.SizeDetectorDirective","i4.FormFieldComponent","i5.PrefixDirective","i6.InputDirective","i7.IconComponent","i8","i2.BadgeComponent"],"mappings":"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"}
|