@natec/mef-dev-ui-kit 16.4.56 → 19.0.0-beta.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/fesm2022/natec-mef-dev-ui-kit.mjs +10895 -5478
- package/fesm2022/natec-mef-dev-ui-kit.mjs.map +1 -1
- package/index.d.ts +5527 -5
- package/index.d.ts.map +1 -0
- package/package.json +6 -7
- package/src/lib/styles/fonts.scss +3 -3
- package/src/lib/styles/pg/_mixins.scss +2 -523
- package/src/lib/styles/pg/_var.scss +29 -28
- package/src/lib/styles/pg/modules/_buttons.scss +55 -40
- package/src/lib/styles/pg/modules/_form_elements.scss +5 -4
- package/src/lib/styles/pg/modules/_header.scss +2 -2
- package/src/lib/styles/pg/modules/_secondary-sidebar.scss +3 -1
- package/src/lib/styles/pg/modules/_select.scss +59 -60
- package/src/lib/styles/pg/modules/_sidebar.scss +2 -1
- package/src/lib/styles/pg/utils.scss +0 -3
- package/esm2022/lib/markup-kit/card/card/card.component.mjs +0 -116
- package/esm2022/lib/markup-kit/card/card-long/card-long.component.mjs +0 -169
- package/esm2022/lib/markup-kit/card/card-long/cart-type-colors.enum.mjs +0 -7
- package/esm2022/lib/markup-kit/card/card-simple/card-simple.component.mjs +0 -50
- package/esm2022/lib/markup-kit/card/card.module.mjs +0 -35
- package/esm2022/lib/markup-kit/card/index.mjs +0 -6
- package/esm2022/lib/markup-kit/collapse/collapse/collapse.component.mjs +0 -149
- package/esm2022/lib/markup-kit/collapse/collapse-set/collapse-set.component.mjs +0 -102
- package/esm2022/lib/markup-kit/collapse/collapse.module.mjs +0 -25
- package/esm2022/lib/markup-kit/collapse/index.mjs +0 -4
- package/esm2022/lib/markup-kit/executors/index.mjs +0 -5
- package/esm2022/lib/markup-kit/executors/mefdev-executor-page/mefdev-executor-page.component.mjs +0 -112
- package/esm2022/lib/markup-kit/executors/stage/stage.component.mjs +0 -27
- package/esm2022/lib/markup-kit/executors/step-executor/step-executor.component.mjs +0 -289
- package/esm2022/lib/markup-kit/executors/step-executor.module.mjs +0 -42
- package/esm2022/lib/markup-kit/modals/fill/fill.component.mjs +0 -137
- package/esm2022/lib/markup-kit/modals/index.mjs +0 -7
- package/esm2022/lib/markup-kit/modals/markup-kit.module.mjs +0 -39
- package/esm2022/lib/markup-kit/modals/modal-size.enum.mjs +0 -2
- package/esm2022/lib/markup-kit/modals/right-filter/right-filter.component.mjs +0 -48
- package/esm2022/lib/markup-kit/modals/slide-right/slide-right.component.mjs +0 -134
- package/esm2022/lib/markup-kit/modals/slide-up/slide-up.component.mjs +0 -118
- package/esm2022/lib/markup-kit/page-layouts/central-page/central-page.component.mjs +0 -59
- package/esm2022/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.mjs +0 -27
- package/esm2022/lib/markup-kit/page-layouts/index.mjs +0 -7
- package/esm2022/lib/markup-kit/page-layouts/manage-page/manage-page.component.mjs +0 -73
- package/esm2022/lib/markup-kit/page-layouts/page-layouts.module.mjs +0 -41
- package/esm2022/lib/markup-kit/page-layouts/profile/profile.component.mjs +0 -137
- package/esm2022/lib/markup-kit/page-layouts/table-page/table-page.component.mjs +0 -42
- package/esm2022/lib/markup-kit/slider/index.mjs +0 -3
- package/esm2022/lib/markup-kit/slider/slider/slider.component.mjs +0 -120
- package/esm2022/lib/markup-kit/slider/slider.module.mjs +0 -28
- package/esm2022/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.mjs +0 -607
- package/esm2022/lib/markup-kit/utils/datepicker/datepicker.module.mjs +0 -21
- package/esm2022/lib/markup-kit/utils/datepicker/index.mjs +0 -3
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.mjs +0 -72
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.mjs +0 -71
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field.module.mjs +0 -29
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field.service.mjs +0 -43
- package/esm2022/lib/markup-kit/utils/filtered-field/filtred-item.model.mjs +0 -13
- package/esm2022/lib/markup-kit/utils/filtered-field/index.mjs +0 -6
- package/esm2022/lib/markup-kit/utils/help-block/help-block.component.mjs +0 -72
- package/esm2022/lib/markup-kit/utils/help-block/hepl-block.module.mjs +0 -24
- package/esm2022/lib/markup-kit/utils/help-block/index.mjs +0 -3
- package/esm2022/lib/pg-components/card/card.components.mjs +0 -442
- package/esm2022/lib/pg-components/card/card.module.mjs +0 -24
- package/esm2022/lib/pg-components/card/index.mjs +0 -3
- package/esm2022/lib/pg-components/progress/index.mjs +0 -4
- package/esm2022/lib/pg-components/progress/progress.component.mjs +0 -80
- package/esm2022/lib/pg-components/progress/progress.config.mjs +0 -12
- package/esm2022/lib/pg-components/progress/progress.module.mjs +0 -22
- package/esm2022/lib/pg-components/select/index.mjs +0 -5
- package/esm2022/lib/pg-components/select/option.component.mjs +0 -93
- package/esm2022/lib/pg-components/select/option.pipe.mjs +0 -42
- package/esm2022/lib/pg-components/select/select.component.mjs +0 -782
- package/esm2022/lib/pg-components/select/select.module.mjs +0 -22
- package/esm2022/lib/pg-components/spec-flow-test/index.mjs +0 -3
- package/esm2022/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.mjs +0 -36
- package/esm2022/lib/pg-components/spec-flow-test/spec-flow-test.module.mjs +0 -25
- package/esm2022/lib/pg-components/switch/index.mjs +0 -3
- package/esm2022/lib/pg-components/switch/switch.component.mjs +0 -293
- package/esm2022/lib/pg-components/switch/switch.module.mjs +0 -18
- package/esm2022/lib/pg-components/tabs/index.mjs +0 -8
- package/esm2022/lib/pg-components/tabs/tab-body.component.mjs +0 -21
- package/esm2022/lib/pg-components/tabs/tab-label.directive.mjs +0 -45
- package/esm2022/lib/pg-components/tabs/tab.component.mjs +0 -102
- package/esm2022/lib/pg-components/tabs/tabs-ink-bar.directive.mjs +0 -81
- package/esm2022/lib/pg-components/tabs/tabs-nav.component.mjs +0 -298
- package/esm2022/lib/pg-components/tabs/tabs.module.mjs +0 -23
- package/esm2022/lib/pg-components/tabs/tabset.component.mjs +0 -252
- package/esm2022/lib/pg-components/util/convert.mjs +0 -4
- package/esm2022/lib/pg-components/util/request-animation.mjs +0 -26
- package/esm2022/natec-mef-dev-ui-kit.mjs +0 -5
- package/esm2022/public-api.mjs +0 -17
- package/lib/markup-kit/card/card/card.component.d.ts +0 -90
- package/lib/markup-kit/card/card-long/card-long.component.d.ts +0 -135
- package/lib/markup-kit/card/card-long/cart-type-colors.enum.d.ts +0 -5
- package/lib/markup-kit/card/card-simple/card-simple.component.d.ts +0 -37
- package/lib/markup-kit/card/card.module.d.ts +0 -17
- package/lib/markup-kit/card/index.d.ts +0 -5
- package/lib/markup-kit/collapse/collapse/collapse.component.d.ts +0 -74
- package/lib/markup-kit/collapse/collapse-set/collapse-set.component.d.ts +0 -68
- package/lib/markup-kit/collapse/collapse.module.d.ts +0 -14
- package/lib/markup-kit/collapse/index.d.ts +0 -3
- package/lib/markup-kit/executors/index.d.ts +0 -4
- package/lib/markup-kit/executors/mefdev-executor-page/mefdev-executor-page.component.d.ts +0 -84
- package/lib/markup-kit/executors/stage/stage.component.d.ts +0 -12
- package/lib/markup-kit/executors/step-executor/step-executor.component.d.ts +0 -186
- package/lib/markup-kit/executors/step-executor.module.d.ts +0 -12
- package/lib/markup-kit/modals/fill/fill.component.d.ts +0 -80
- package/lib/markup-kit/modals/index.d.ts +0 -6
- package/lib/markup-kit/modals/markup-kit.module.d.ts +0 -12
- package/lib/markup-kit/modals/modal-size.enum.d.ts +0 -5
- package/lib/markup-kit/modals/right-filter/right-filter.component.d.ts +0 -27
- package/lib/markup-kit/modals/slide-right/slide-right.component.d.ts +0 -76
- package/lib/markup-kit/modals/slide-up/slide-up.component.d.ts +0 -64
- package/lib/markup-kit/page-layouts/central-page/central-page.component.d.ts +0 -37
- package/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.d.ts +0 -21
- package/lib/markup-kit/page-layouts/index.d.ts +0 -6
- package/lib/markup-kit/page-layouts/manage-page/manage-page.component.d.ts +0 -58
- package/lib/markup-kit/page-layouts/page-layouts.module.d.ts +0 -12
- package/lib/markup-kit/page-layouts/profile/profile.component.d.ts +0 -107
- package/lib/markup-kit/page-layouts/table-page/table-page.component.d.ts +0 -32
- package/lib/markup-kit/slider/index.d.ts +0 -2
- package/lib/markup-kit/slider/slider/slider.component.d.ts +0 -93
- package/lib/markup-kit/slider/slider.module.d.ts +0 -9
- package/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.d.ts +0 -421
- package/lib/markup-kit/utils/datepicker/datepicker.module.d.ts +0 -10
- package/lib/markup-kit/utils/datepicker/index.d.ts +0 -2
- package/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.d.ts +0 -42
- package/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.d.ts +0 -56
- package/lib/markup-kit/utils/filtered-field/filtered-field.module.d.ts +0 -9
- package/lib/markup-kit/utils/filtered-field/filtered-field.service.d.ts +0 -28
- package/lib/markup-kit/utils/filtered-field/filtred-item.model.d.ts +0 -7
- package/lib/markup-kit/utils/filtered-field/index.d.ts +0 -5
- package/lib/markup-kit/utils/help-block/help-block.component.d.ts +0 -37
- package/lib/markup-kit/utils/help-block/hepl-block.module.d.ts +0 -9
- package/lib/markup-kit/utils/help-block/index.d.ts +0 -2
- package/lib/pg-components/card/card.components.d.ts +0 -241
- package/lib/pg-components/card/card.module.d.ts +0 -11
- package/lib/pg-components/card/index.d.ts +0 -2
- package/lib/pg-components/progress/index.d.ts +0 -3
- package/lib/pg-components/progress/progress.component.d.ts +0 -50
- package/lib/pg-components/progress/progress.config.d.ts +0 -7
- package/lib/pg-components/progress/progress.module.d.ts +0 -10
- package/lib/pg-components/select/index.d.ts +0 -4
- package/lib/pg-components/select/option.component.d.ts +0 -54
- package/lib/pg-components/select/option.pipe.d.ts +0 -8
- package/lib/pg-components/select/select.component.d.ts +0 -139
- package/lib/pg-components/select/select.module.d.ts +0 -12
- package/lib/pg-components/spec-flow-test/index.d.ts +0 -2
- package/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.d.ts +0 -22
- package/lib/pg-components/spec-flow-test/spec-flow-test.module.d.ts +0 -10
- package/lib/pg-components/switch/index.d.ts +0 -2
- package/lib/pg-components/switch/switch.component.d.ts +0 -185
- package/lib/pg-components/switch/switch.module.d.ts +0 -8
- package/lib/pg-components/tabs/index.d.ts +0 -7
- package/lib/pg-components/tabs/tab-body.component.d.ts +0 -13
- package/lib/pg-components/tabs/tab-label.directive.d.ts +0 -15
- package/lib/pg-components/tabs/tab.component.d.ts +0 -67
- package/lib/pg-components/tabs/tabs-ink-bar.directive.d.ts +0 -23
- package/lib/pg-components/tabs/tabs-nav.component.d.ts +0 -79
- package/lib/pg-components/tabs/tabs.module.d.ts +0 -13
- package/lib/pg-components/tabs/tabset.component.d.ts +0 -137
- package/lib/pg-components/util/convert.d.ts +0 -1
- package/lib/pg-components/util/request-animation.d.ts +0 -1
- package/public-api.d.ts +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"natec-mef-dev-ui-kit.mjs","sources":["../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse-set/collapse-set.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse-set/collapse-set.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse/collapse.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse/collapse.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field.service.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtred-item.model.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/help-block/help-block.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/help-block/help-block.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/help-block/hepl-block.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/util/convert.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.pipe.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/datepicker/datepicker.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/card/card.components.ts","../../../projects/ui-kit-lib/src/lib/pg-components/card/card.components.html","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card/card.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card/card.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-long/cart-type-colors.enum.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-long/card-long.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-long/card-long.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-simple/card-simple.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-simple/card-simple.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.config.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/fill/fill.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/fill/fill.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-up/slide-up.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-up/slide-up.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-right/slide-right.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-right/slide-right.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/right-filter/right-filter.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/right-filter/right-filter.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/markup-kit.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/profile/profile.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/profile/profile.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page/central-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page/central-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/table-page/table-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/table-page/table-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/manage-page/manage-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/manage-page/manage-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/page-layouts.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/stage/stage.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/stage/stage.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor/step-executor.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor/step-executor.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/mefdev-executor-page/mefdev-executor-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/slider/slider/slider.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/slider/slider/slider.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/slider/slider.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/spec-flow-test/spec-flow-test.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-body.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-body.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-label.directive.ts","../../../projects/ui-kit-lib/src/lib/pg-components/util/request-animation.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-ink-bar.directive.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-nav.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-nav.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabset.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabset.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs.module.ts","../../../projects/ui-kit-lib/src/natec-mef-dev-ui-kit.ts"],"sourcesContent":["import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CollapseComponent } from '../collapse/collapse.component';\r\n\r\n\r\n/**\r\n* Component representing a set of collapsible panels.\r\n*\r\n* Example of usage:\r\n*\r\n*```\r\n* <mefdev-collapse-set [Accordion]=\"true\" [Horizontal]=\"true\" [expandAny]=\"false\">\r\n* <mefdev-collapse [Disabled]=\"false\" [Active]=\"true\">\r\n* <!-- Content for the collapse panel -->\r\n* <h3>Panel 1</h3>\r\n* <p>Panel 1 content...</p>\r\n* </mefdev-collapse>\r\n\r\n* <mefdev-collapse [Disabled]=\"false\" [Active]=\"false\">\r\n* <!-- Content for the collapse panel -->\r\n* <h3>Panel 2</h3>\r\n* <p>Panel 2 content...</p>\r\n* </mefdev-collapse>\r\n\r\n* <mefdev-collapse [Disabled]=\"false\" [Active]=\"false\">\r\n* <!-- Content for the collapse panel -->\r\n* <h3>Panel 3</h3>\r\n* <p>Panel 3 content...</p>\r\n* </mefdev-collapse>\r\n* </mefdev-collapse-set>\r\n*```\r\n*/\r\n@Component({\r\n selector: 'mefdev-collapse-set',\r\n templateUrl: './collapse-set.component.html',\r\n styleUrls: ['./collapse-set.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CollapseSetComponent {\r\n \r\n private _accordion = false;\r\n private _horizontal = true;\r\n private _expandAny = true;\r\n panels: CollapseComponent[] = [];\r\n\r\n /**\r\n * Indicates whether multiple panels can be expanded simultaneously.\r\n * Set this to `true` to allow multiple panels to be expanded. Defaults to `false`.\r\n */\r\n @Input()\r\n set expandAny(value: boolean) {\r\n this._accordion = value;\r\n }\r\n\r\n get expandAny(): boolean {\r\n return this._accordion;\r\n }\r\n\r\n /**\r\n * Indicates whether the collapse set operates as an accordion.\r\n * Set this to `true` to enable accordion behavior. Defaults to `false`.\r\n */\r\n @Input()\r\n set Accordion(value: boolean) {\r\n this._accordion = value;\r\n }\r\n\r\n get Accordion(): boolean {\r\n return this._accordion;\r\n }\r\n\r\n /**\r\n * Indicates whether the collapse set is displayed horizontally or vertically.\r\n * Set this to `true` for horizontal display and `false` for vertical display. Defaults to `true`.\r\n */\r\n @Input()\r\n set Horizontal(value: boolean) {\r\n this._horizontal = value;\r\n }\r\n\r\n get Horizontal(): boolean {\r\n return this._horizontal;\r\n }\r\n\r\n /**\r\n * Event handler for the click event on a collapse panel.\r\n * Closes other panels if the collapse set is an accordion and does not allow multiple expansions.\r\n *\r\n * @param collapse The clicked collapse component.\r\n */\r\n pgClick(collapse: CollapseComponent): void {\r\n if (this.Accordion && !this.expandAny) {\r\n this.panels.map((item, index) => {\r\n const curIndex = this.panels.indexOf(collapse);\r\n if (index !== curIndex) {\r\n item.Active = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Adds a collapse panel to the collapse set.\r\n *\r\n * @param collapse The collapse component to be added.\r\n */\r\n addTab(collapse: CollapseComponent): void {\r\n this.panels.push(collapse);\r\n }\r\n}\r\n","<div class=\"card-group\" [class.horizontal]=\"Horizontal\">\r\n <ng-content></ng-content>\r\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, ContentChild, ElementRef, EventEmitter, Host, HostBinding, Input, Output, TemplateRef } from '@angular/core';\r\nimport { CollapseSetComponent } from '../collapse-set/collapse-set.component';\r\n\r\n\r\n/**\r\n * Component for displaying a collapsible content.\r\n *\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-collapse [Disabled]=\"false\" [Active]=\"true\" (stateChange)=\"onStateChange($event)\">\r\n * <ng-template #CardTitle>\r\n * <!-- Content for the card title -->\r\n * <h3>Card Title</h3>\r\n * </ng-template>\r\n * \r\n * <!-- Content for the collapsible section -->\r\n * <div>\r\n Content inside collapse\r\n * </div>\r\n * </mefdev-collapse>\r\n *\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/collapse</example-url>\r\n\r\n */\r\n@Component({\r\n selector: 'mefdev-collapse',\r\n templateUrl: './collapse.component.html',\r\n styleUrls: ['./collapse.component.scss'],\r\n animations: [\r\n trigger('collapseState', [\r\n state(\r\n 'inactive',\r\n style({\r\n opacity: '0',\r\n height: 0\r\n })\r\n ),\r\n state(\r\n 'active',\r\n style({\r\n opacity: '1',\r\n height: '*'\r\n })\r\n ),\r\n transition('inactive => active', animate('125ms ease-in')),\r\n transition('active => inactive', animate('125ms ease-out'))\r\n ])\r\n ],\r\n host: {\r\n '[class.card]': 'true',\r\n '[class.card-default]': 'true',\r\n '[class.m-b-0]': 'true'\r\n }\r\n})\r\nexport class CollapseComponent {\r\n\r\n private _disabled = false;\r\n _active = false;\r\n _el;\r\n\r\n /**\r\n * ContentChild for the template of the card title.\r\n *\r\n * Example:\r\n * ```\r\n * <ng-template #CardTitle>\r\n * <h3>Card Title</h3>\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild(\"CardTitle\") CardTitle: TemplateRef<void>;\r\n\r\n /**\r\n * Indicates whether the collapse is disabled.\r\n * Set this to `true` to disable the collapse. Defaults to `false`.\r\n */\r\n @Input()\r\n @HostBinding('class.disabled')\r\n set Disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n\r\n get Disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Indicates whether the collapse is active or not.\r\n */\r\n @Input()\r\n set Active(value: boolean) {\r\n const active = value;\r\n if (this._active === active) {\r\n return;\r\n }\r\n if (!this.Disabled) {\r\n this._active = active;\r\n }\r\n }\r\n \r\n get Active(): boolean {\r\n return this._active;\r\n }\r\n\r\n /**\r\n * Event emitter for the state change of the collapse.\r\n * Emits a boolean value indicating whether the collapse is active or not.\r\n *\r\n * Example:\r\n * ```\r\n * <mefdev-collapse (stateChange)=\"onStateChange($event)\"></mefdev-collapse>\r\n * ```\r\n */\r\n @Output() stateChange = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Event handler for the header click event.\r\n * Toggles the active state of the collapse and emits the state change event.\r\n *\r\n * @param $event The mouse event object.\r\n */\r\n clickHeader($event: MouseEvent): void {\r\n this.Active = !this.Active;\r\n this.stateChange.next(this.Active);\r\n /** trigger host collapseSet click event */\r\n this._collapseSet.pgClick(this);\r\n }\r\n\r\n constructor(@Host() private _collapseSet: CollapseSetComponent, private _elementRef: ElementRef) {\r\n this._el = this._elementRef.nativeElement;\r\n this._collapseSet.addTab(this);\r\n }\r\n}\r\n","<div class=\"row w-100 mt-2 card-title\" [attr.aria-expanded]=\"_active\" (click)=\"clickHeader($event)\" role=\"tab\"\r\nhref=\"javascript:;\" [ngClass]=\"{'collapsed':!_active}\">\r\n <div class=\"col\">\r\n <ng-template [ngTemplateOutlet]=\"CardTitle\"></ng-template>\r\n </div>\r\n <div class=\"col\">\r\n <i class=\"fa fa-angle-down float-end \" aria-hidden=\"true\" *ngIf=\"!_active\"></i>\r\n <i class=\"fa fa-angle-up float-end \" aria-hidden=\"true\" *ngIf=\"_active\"></i>\r\n </div>\r\n</div>\r\n\r\n<div class=\"collapse\" [ngClass]=\"{'show':true,'active':_active,'inactive':!_active}\" [@collapseState]=\"_active?'active':'inactive'\">\r\n <div *ngIf=\"_active\"\r\n class=\"card-body mb-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule,ModuleWithProviders } from '@angular/core';\r\nimport { CollapseSetComponent } from './collapse-set/collapse-set.component';\r\nimport { CollapseComponent } from './collapse/collapse.component';\r\n\r\nexport const mefDevCollapseModuleComponents = [CollapseSetComponent, CollapseComponent];\r\n\r\n@NgModule({\r\n declarations: mefDevCollapseModuleComponents,\r\n exports : mefDevCollapseModuleComponents,\r\n imports : [ CommonModule ]\r\n})\r\n\r\nexport class MefDevCollapseModule {\r\n static forRoot(): ModuleWithProviders<MefDevCollapseModule> {\r\n return {\r\n ngModule: MefDevCollapseModule\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FiltredItemModel } from './filtred-item.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FilteredFieldService {\r\n\r\n private newFilterItem: Subject<FiltredItemModel> = new Subject<FiltredItemModel>();\r\n private openFilter: Subject<FiltredItemModel> = new Subject<FiltredItemModel>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Returns an observable that emits the open filter events.\r\n */\r\n public getOpenFilter(): Observable<FiltredItemModel>{\r\n return this.openFilter;\r\n }\r\n\r\n /**\r\n * Sends an open filter event with the specified item.\r\n * @param item The filtered item model.\r\n */\r\n public sendOpenFilter(item: FiltredItemModel){\r\n this.openFilter.next(item);\r\n }\r\n\r\n /**\r\n * Returns an observable that emits the new filter item events.\r\n */\r\n public getNewFilterItem(): Observable<FiltredItemModel>{\r\n return this.newFilterItem;\r\n }\r\n\r\n /**\r\n * Sends a new filter item event with the specified item.\r\n * @param item The filtered item model.\r\n */\r\n public sendNewFilterItem(item: FiltredItemModel){\r\n this.newFilterItem.next(item);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FiltredItemModel } from '../filtred-item.model';\r\n\r\n/**\r\n * Component representing a filtered field item.\r\n * \r\n * Example of usage:\r\n * ```\r\n * <mefdev-filtered-field-item [item]=\"filterItem\" (discard)=\"onDiscardFilter($event)\" (openFilter)=\"onOpenFilter()\">\r\n * </mefdev-filtered-field-item>\r\n *``` \r\n *\r\n*/\r\n@Component({\r\n selector: 'mefdev-filtered-field-item',\r\n templateUrl: './filtered-field-item.component.html',\r\n styleUrls: ['./filtered-field-item.component.scss']\r\n})\r\nexport class FilteredFieldItemComponent implements OnInit {\r\n\r\n /**\r\n * The filtered item model.\r\n * ```\r\n * <mefdev-filtered-field-item [item]=\"filterItem\">\r\n * Content goes here...\r\n * </mefdev-filtered-field-item>\r\n * ```\r\n */\r\n @Input() item: FiltredItemModel;\r\n\r\n /**\r\n * Event emitted when the filter is discarded.\r\n * ```\r\n * <mefdev-filtered-field-item (discard)=\"onDiscardFilter($event)\">\r\n * Content goes here...\r\n * </mefdev-filtered-field-item>\r\n * ```\r\n */\r\n @Output() discard = new EventEmitter<FiltredItemModel>();\r\n\r\n /**\r\n * Event emitted when the filter is opened.\r\n * ```\r\n * <mefdev-filtered-field-item (openFilter)=\"onOpenFilter()\">\r\n * Content goes here...\r\n * </mefdev-filtered-field-item>\r\n * ```\r\n */\r\n @Output() openFilter = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n \r\n /**\r\n * Event handler for opening the filter.\r\n * Emits the `openFilter` event.\r\n */\r\n onOpenFilter(){\r\n this.openFilter.next({});\r\n }\r\n\r\n\r\n /**\r\n * Event handler for discarding the filter.\r\n * Emits the `discard` event with the `item` as the payload.\r\n */\r\n onDiscard(){\r\n this.discard.next(this.item);\r\n }\r\n\r\n}\r\n","<div class=\"item\">\r\n <i class=\"fa fa-times\" (click)=\"onDiscard()\" style=\"margin-right: 3px; cursor: pointer;\"></i> \r\n <span (click)=\"onOpenFilter()\">{{item.newValue}}</span>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FilteredFieldService } from '../filtered-field.service';\r\nimport { FiltredItemModel } from '../filtred-item.model';\r\n\r\n /**\r\n * A container component for filtered fields.\r\n *\r\n * Example of usage:\r\n * ```\r\n * <mefdev-filtered-field-container>\r\n * \r\n * <mefdev-filtered-field-item [item]=\"filterItem\" (discard)=\"onDiscardFilter($event)\" (openFilter)=\"onOpenFilter()\">\r\n * </mefdev-filtered-field-item>\r\n *\r\n * </mefdev-filtered-field-container>\r\n * ```\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/filtered_field</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-filtered-field-container',\r\n templateUrl: './filtered-field-container.component.html',\r\n styleUrls: ['./filtered-field-container.component.scss']\r\n})\r\nexport class FilteredFieldContainerComponent implements OnInit {\r\n\r\n /**\r\n * An array of filtered item models.\r\n */\r\n items: FiltredItemModel[] = [];\r\n\r\n constructor(\r\n private service: FilteredFieldService\r\n ) { }\r\n\r\n /**\r\n * Event handler for opening the filter.\r\n *\r\n * @param item The filtered item model.\r\n */\r\n onOpenFilter(item: FiltredItemModel){\r\n this.service.sendOpenFilter(item);\r\n }\r\n\r\n /**\r\n * Event handler for discarding the filter.\r\n *\r\n * @param item The filtered item model.\r\n */\r\n onDiscard(item: FiltredItemModel){\r\n item.discard(item.standartValue);\r\n this.items.splice(this.items.findIndex(x => x.id == item.id), 1);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.service.getNewFilterItem().subscribe(item => {\r\n let i = this.items.findIndex(x => x.id == item.id)\r\n\r\n if(i != -1 && item.newValue == item.standartValue){\r\n this.items[i] = item;\r\n this.items.splice(i, 1);\r\n return;\r\n }\r\n\r\n if(i == -1 && (item.newValue == item.standartValue || item.newValue == '') ){\r\n return;\r\n }\r\n\r\n if(i != -1){\r\n this.items[i] = item;\r\n return;\r\n }\r\n\r\n this.items.push(item);\r\n\r\n })\r\n }\r\n}\r\n","<div class=\"item-container\">\r\n <mefdev-filtered-field-item *ngFor=\"let item of items\" [item]=\"item\" (discard)=\"onDiscard(item)\" (openFilter)=\"onOpenFilter(item)\"></mefdev-filtered-field-item>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilteredFieldContainerComponent } from './filtered-field-container/filtered-field-container.component';\r\nimport { FilteredFieldItemComponent } from './filtered-field-item/filtered-field-item.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n FilteredFieldContainerComponent,\r\n FilteredFieldItemComponent,\r\n ],\r\n exports:[\r\n FilteredFieldItemComponent,\r\n FilteredFieldContainerComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class MefDevFilteredFieldModule { }\r\n","export class FiltredItemModel{\r\n\r\n\r\n constructor(id:string, newValue: string, standartValue: string, discard: (standartValue: string) => any){\r\n this.id = id;\r\n this.newValue = newValue;\r\n this.standartValue = standartValue;\r\n this.discard = discard;\r\n }\r\n\r\n id:string;\r\n newValue: string;\r\n standartValue: string;\r\n discard: (standartValue: string) => any;\r\n}","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from '@angular/animations';\r\n\r\n\r\n /**\r\n * A component representing a help block with smooth expand animation.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-help-block [title]=\"'Help'\">\r\n * Content goes here...\r\n * <ng-content></ng-content>\r\n * </mefdev-help-block>\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/help_block</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-help-block',\r\n templateUrl: './help-block.component.html',\r\n styleUrls: ['./help-block.component.scss'],\r\n animations:[\r\n trigger('smothExpand',[\r\n state('close', style({\r\n height: '0',\r\n margin: '0',\r\n padding: '0',\r\n opacity: '0',\r\n visibility: 'hidden',\r\n })),\r\n state('open', style({})),\r\n transition('close<=>open', animate(200))\r\n ])\r\n ]\r\n})\r\nexport class HelpBlockComponent implements OnInit {\r\n\r\n /**\r\n * Indicates whether the help block is visible.\r\n */\r\n isVisible:boolean = true;\r\n\r\n /**\r\n * Indicates whether the help block is expanded.\r\n */\r\n expanded:boolean = false;\r\n\r\n\r\n /**\r\n * The title of the help block.\r\n *```\r\n * <mefdev-help-block [title]=\"'Help Block'\">\r\n * Content goes here...\r\n * </mefdev-help-block>\r\n *```\r\n */\r\n @Input('title') title:string = \"Help\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"card-simple\" *ngIf=\"isVisible\">\r\n <div class=\"row m-1 body-1\" (click)=\"expanded = !expanded\" style=\"cursor: pointer;\">\r\n <div class=\"col-10\" style=\"color: white;\">\r\n {{ title }}\r\n </div>\r\n <div class=\"col-2\">\r\n <i class=\"fa fa-window-close\" aria-hidden=\"true\" style=\"float: right; margin-left: 20px;\" (click)=\"isVisible = !isVisible;\"></i>\r\n \r\n <i class=\"fa fa-angle-down \" *ngIf=\"!expanded\" aria-hidden=\"true\" style=\"float: right;\"></i>\r\n <i class=\"fa fa-angle-up\" *ngIf=\"expanded\" aria-hidden=\"true\" style=\"float: right;\"></i> \r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body row\" [@smothExpand]=\"expanded ? 'open' : 'close'\">\r\n <div class=\"col-12\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HelpBlockComponent } from './help-block.component';\r\nimport { MefDevCollapseModule } from '../../collapse/collapse.module';\r\n\r\n@NgModule({\r\n declarations: [HelpBlockComponent],\r\n exports: [HelpBlockComponent],\r\n imports: [\r\n CommonModule,\r\n MefDevCollapseModule\r\n ]\r\n})\r\nexport class MefDevHelpBlockModule { }\r\n","export function toBoolean(value: any): boolean {\r\n return value === '' || (value && value !== 'false');\r\n}\r\n","/* tslint:disable:no-any */\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\n\r\n@Pipe({ name: \"OptionPipe\" })\r\nexport class OptionPipe implements PipeTransform {\r\n // TODO: enable type checking for this method\r\n transform(options: MefDevOptionComponent[], value: any): any {\r\n if (value.searchText) {\r\n let _options = options.filter(\r\n option =>\r\n option.Label &&\r\n option.Label.toLowerCase().indexOf(value.searchText.toLowerCase()) !==\r\n -1\r\n );\r\n if (value.tags) {\r\n _options = options.filter(\r\n option =>\r\n option.Label &&\r\n option.Label.toLowerCase() === value.searchText.toLowerCase()\r\n );\r\n }\r\n if (_options.length) {\r\n return _options;\r\n } else {\r\n return [\r\n ({\r\n Value: value.value,\r\n _value: value.value,\r\n Disabled: value.disabled,\r\n _disabled: value.disabled,\r\n Label: value.notFoundContent,\r\n _label: value.notFoundContent\r\n } as any) as MefDevOptionComponent\r\n ];\r\n }\r\n } else {\r\n return options;\r\n }\r\n }\r\n}\r\n","/**\r\n * complex but work well\r\n * TODO: rebuild latter\r\n */\r\nimport { DOWN_ARROW, ENTER, TAB } from \"@angular/cdk/keycodes\";\r\nimport {\r\n CdkConnectedOverlay,\r\n ConnectedOverlayPositionChange\r\n} from \"@angular/cdk/overlay\";\r\nimport {\r\n forwardRef,\r\n AfterContentChecked,\r\n AfterContentInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation,\r\n ChangeDetectorRef\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\nimport { OptionPipe } from \"./option.pipe\";\r\nimport { toBoolean } from '../util/convert';\r\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\n\r\n/**\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/select</example-url>\r\n */\r\n@Component({\r\n selector: \"mefdev-select\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./select.component.html\",\r\n\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MefDevSelectComponent),\r\n multi: true\r\n }\r\n ],\r\n animations: [trigger('dropDownAnimation', [\r\n state('bottom', style({\r\n opacity : 1,\r\n transform : 'scaleY(1)',\r\n transformOrigin: '0% 0%'\r\n })),\r\n transition('void => bottom', [\r\n style({\r\n opacity : 0,\r\n transform : 'scaleY(0)',\r\n transformOrigin: '0% 0%'\r\n }),\r\n animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n ]),\r\n state('top', style({\r\n opacity : 1,\r\n transform : 'scaleY(1)',\r\n transformOrigin: '0% 100%'\r\n })),\r\n transition('void => top', [\r\n style({\r\n opacity : 0,\r\n transform : 'scaleY(0)',\r\n transformOrigin: '0% 100%'\r\n }),\r\n animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n ]),\r\n transition('* => void', [\r\n animate('250ms 100ms linear', style({ opacity: 0 }))\r\n ])\r\n ]),\r\n\r\n trigger('tagAnimation', [\r\n state('*', style({ opacity: 1, transform: 'scale(1)' })),\r\n transition('void => *', [\r\n style({ opacity: 0, transform: 'scale(0)' }),\r\n animate('150ms linear')\r\n ]),\r\n state('void', style({ opacity: 0, transform: 'scale(0)' })),\r\n transition('* => void', [\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n animate('150ms linear')\r\n ])])]\r\n})\r\nexport class MefDevSelectComponent\r\n implements\r\n OnInit,\r\n AfterContentInit,\r\n AfterContentChecked,\r\n ControlValueAccessor {\r\n private _allowClear = false;\r\n private _disabled = false;\r\n private _isTags = false;\r\n private _isMultiple = false;\r\n private _keepUnListOptions = false;\r\n private _showSearch = false;\r\n _el: HTMLElement;\r\n _isOpen = false;\r\n _prefixCls = \"pg-select\";\r\n _classList: string[] = [];\r\n _dropDownClassMap: any;\r\n _dropDownPrefixCls = `${this._prefixCls}-dropdown`;\r\n _selectionClassMap: any;\r\n _selectionPrefixCls = `${this._prefixCls}-selection`;\r\n _size: string;\r\n _value: string[] | string;\r\n _placeholder = \"placeholder\";\r\n _notFoundContent = \"No Content\";\r\n _searchText = \"\";\r\n _triggerWidth = 0;\r\n _selectedOption: MefDevOptionComponent;\r\n _operatingMultipleOption: MefDevOptionComponent;\r\n _selectedOptions: Set<MefDevOptionComponent> = new Set();\r\n _options: MefDevOptionComponent[] = [];\r\n _cacheOptions: MefDevOptionComponent[] = [];\r\n _filterOptions: MefDevOptionComponent[] = [];\r\n _tagsOptions: MefDevOptionComponent[] = [];\r\n _activeFilterOption: MefDevOptionComponent;\r\n _isMultiInit = false;\r\n _dropDownPosition: \"top\" | \"center\" | \"bottom\" = \"bottom\";\r\n _composing = false;\r\n _mode: any;\r\n // ngModel Access\r\n onChange: (value: string | string[]) => void = () => null;\r\n onTouched: () => void = () => null;\r\n @ViewChild(\"searchInput\") searchInputElementRef: any;\r\n @ViewChild(\"trigger\") trigger: ElementRef;\r\n @ViewChild(\"dropdownUl\") dropdownUl: ElementRef;\r\n @Output() SearchChange: EventEmitter<string> = new EventEmitter();\r\n @Output() change: EventEmitter<string> = new EventEmitter();\r\n @Output() OpenChange: EventEmitter<boolean> = new EventEmitter();\r\n @Output() ScrollToBottom: EventEmitter<boolean> = new EventEmitter();\r\n @Input() Filter = true;\r\n @Input() MaxMultiple = Infinity;\r\n @Input() FirstDefault: boolean = false;\r\n @ViewChild(CdkConnectedOverlay) _cdkOverlay: CdkConnectedOverlay;\r\n\r\n @Input()\r\n set AllowClear(value: boolean) {\r\n this._allowClear = toBoolean(value);\r\n }\r\n\r\n get AllowClear(): boolean {\r\n return this._allowClear;\r\n }\r\n\r\n @Input()\r\n set KeepUnListOptions(value: boolean) {\r\n this._keepUnListOptions = toBoolean(value);\r\n }\r\n\r\n get KeepUnListOptions(): boolean {\r\n return this._keepUnListOptions;\r\n }\r\n\r\n @Input()\r\n set Mode(value: string) {\r\n this._mode = value;\r\n if (this._mode === \"multiple\") {\r\n this.Multiple = true;\r\n } else if (this._mode === \"tags\") {\r\n this.Tags = true;\r\n } else if (this._mode === \"combobox\") {\r\n this.ShowSearch = true;\r\n }\r\n }\r\n\r\n @Input()\r\n set Multiple(value: boolean) {\r\n this._isMultiple = toBoolean(value);\r\n if (this._isMultiple) {\r\n this.ShowSearch = true;\r\n }\r\n }\r\n\r\n get Multiple(): boolean {\r\n return this._isMultiple;\r\n }\r\n\r\n @Input()\r\n set PlaceHolder(value: string) {\r\n this._placeholder = value;\r\n }\r\n\r\n get PlaceHolder(): string {\r\n return this._placeholder;\r\n }\r\n\r\n @Input()\r\n set NotFoundContent(value: string) {\r\n this._notFoundContent = value;\r\n }\r\n\r\n get NotFoundContent(): string {\r\n return this._notFoundContent;\r\n }\r\n\r\n @Input()\r\n set Size(value: string) {\r\n // @ts-ignore\r\n this._size = { large: \"lg\", small: \"sm\" }[value];\r\n this.setClassMap();\r\n }\r\n\r\n get Size(): string {\r\n return this._size;\r\n }\r\n\r\n @Input()\r\n set ShowSearch(value: boolean) {\r\n this._showSearch = toBoolean(value);\r\n }\r\n\r\n get ShowSearch(): boolean {\r\n return this._showSearch;\r\n }\r\n\r\n @Input()\r\n set Tags(value: boolean) {\r\n const isTags = toBoolean(value);\r\n this._isTags = isTags;\r\n this.Multiple = isTags;\r\n }\r\n\r\n get Tags(): boolean {\r\n return this._isTags;\r\n }\r\n\r\n @Input()\r\n set Disabled(value: boolean) {\r\n this._disabled = toBoolean(value);\r\n this.closeDropDown();\r\n this.setClassMap();\r\n }\r\n\r\n get Disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set Open(value: boolean) {\r\n const isOpen = toBoolean(value);\r\n if (this._isOpen === isOpen) {\r\n return;\r\n }\r\n if (isOpen) {\r\n this.scrollToActive();\r\n this._setTriggerWidth();\r\n }\r\n this._isOpen = isOpen;\r\n this.OpenChange.emit(this._isOpen);\r\n this.setClassMap();\r\n if (this._isOpen) {\r\n setTimeout(() => {\r\n this.checkDropDownScroll();\r\n });\r\n }\r\n }\r\n\r\n get Open(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n /** new -option insert or new tags insert */\r\n // @ts-ignore\r\n addOption = option => {\r\n this._options.push(option);\r\n if (!this._isTags) {\r\n if (option.Value) {\r\n this.updateSelectedOption(this._value);\r\n } else {\r\n this.forceUpdateSelectedOption(this._value);\r\n }\r\n }\r\n };\r\n\r\n /** -option remove or tags remove */\r\n removeOption(option: MefDevOptionComponent): void {\r\n this._options.splice(this._options.indexOf(option), 1);\r\n if (!this._isTags) {\r\n this.forceUpdateSelectedOption(this._value);\r\n }\r\n }\r\n\r\n /** dropdown position changed */\r\n onPositionChange(position: ConnectedOverlayPositionChange): void {\r\n this._dropDownPosition = position.connectionPair.originY;\r\n }\r\n\r\n compositionStart(): void {\r\n this._composing = true;\r\n }\r\n\r\n compositionEnd(): void {\r\n this._composing = false;\r\n }\r\n\r\n /** clear single selected option */\r\n clearSelect($event?: MouseEvent): void {\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n } // @ts-ignore\r\n this._selectedOption = null; // @ts-ignore\r\n this.Value = null; // @ts-ignore\r\n this.onChange(null);\r\n }\r\n\r\n /** click dropdown option by user */\r\n clickOption(option: MefDevOptionComponent, $event?: MouseEvent): void {\r\n if (!option) {\r\n return;\r\n }\r\n this.chooseOption(option, true, $event);\r\n this.clearSearchText();\r\n if (!this._isMultiple) {\r\n this.Open = false;\r\n }\r\n }\r\n\r\n /** choose option */\r\n chooseOption(\r\n option: MefDevOptionComponent,\r\n isUserClick: boolean = false,\r\n $event?: MouseEvent\r\n ): void {\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n this._activeFilterOption = option;\r\n if (option && !option.Disabled) {\r\n if (!this.Multiple) {\r\n this._selectedOption = option;\r\n this._value = option.Value;\r\n if (isUserClick) {\r\n this.change.next(this._value);\r\n this.onChange(option.Value);\r\n }\r\n } else {\r\n if (isUserClick) {\r\n this.isInSet(this._selectedOptions, option)\r\n ? this.unSelectMultipleOption(option)\r\n : this.selectMultipleOption(option);\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateWidth(element: HTMLInputElement, text: string): void {\r\n if (text) {\r\n /** wait for scroll width change */ // @ts-ignore\r\n setTimeout(_ => {\r\n this._renderer.setStyle(element, \"width\", `${element.scrollWidth}px`);\r\n });\r\n } else {\r\n this._renderer.removeStyle(element, \"width\");\r\n }\r\n }\r\n\r\n /** determine if option in set */\r\n isInSet(\r\n set: Set<MefDevOptionComponent>,\r\n option: MefDevOptionComponent\r\n ): MefDevOptionComponent { // @ts-ignore\r\n return (Array.from(set) as MefDevOptionComponent[]).find(\r\n (data: MefDevOptionComponent) => data.Value === option.Value\r\n );\r\n }\r\n\r\n /** cancel select multiple option */ // @ts-ignore\r\n unSelectMultipleOption = (option, $event?, emitChange = true) => {\r\n this._operatingMultipleOption = option;\r\n this._selectedOptions.delete(option);\r\n if (emitChange) {\r\n this.emitMultipleOptions();\r\n }\r\n\r\n // 对Tag进行特殊处理\r\n if (\r\n this._isTags &&\r\n this._options.indexOf(option) !== -1 &&\r\n this._tagsOptions.indexOf(option) !== -1\r\n ) {\r\n this.removeOption(option);\r\n this._tagsOptions.splice(this._tagsOptions.indexOf(option), 1);\r\n }\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n };\r\n\r\n /** select multiple option */\r\n selectMultipleOption(option: MefDevOptionComponent, $event?: MouseEvent): void {\r\n /** if tags do push to tag option */\r\n if (\r\n this._isTags &&\r\n this._options.indexOf(option) === -1 &&\r\n this._tagsOptions.indexOf(option) === -1\r\n ) {\r\n this.addOption(option);\r\n this._tagsOptions.push(option);\r\n }\r\n this._operatingMultipleOption = option;\r\n if (this._selectedOptions.size < this.MaxMultiple) {\r\n this._selectedOptions.add(option);\r\n }\r\n this.emitMultipleOptions();\r\n\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n /** emit multiple options */\r\n emitMultipleOptions(): void {\r\n if (this._isMultiInit) {\r\n return;\r\n }\r\n const arrayOptions = Array.from(this._selectedOptions);\r\n this._value = arrayOptions.map(item => item.Value);\r\n this.onChange(this._value);\r\n }\r\n\r\n /** update selected option when add remove option etc */\r\n updateSelectedOption(\r\n currentModelValue: string | string[],\r\n triggerByNgModel: boolean = false\r\n ): void {\r\n if (currentModelValue == null) {\r\n return;\r\n }\r\n if (this.Multiple) {\r\n const selectedOptions = this._options.filter(item => {\r\n return item != null && currentModelValue.indexOf(item.Value) !== -1;\r\n });\r\n if ((this.KeepUnListOptions || this.Tags) && !triggerByNgModel) {\r\n const _selectedOptions = Array.from(this._selectedOptions);\r\n selectedOptions.forEach(option => {\r\n const _exist = _selectedOptions.some(\r\n item => item._value == option._value\r\n );\r\n if (!_exist) {\r\n this._selectedOptions.add(option);\r\n }\r\n });\r\n } else {\r\n this._selectedOptions = new Set();\r\n selectedOptions.forEach(option => {\r\n this._selectedOptions.add(option);\r\n });\r\n }\r\n } else {\r\n const selectedOption = this._options.filter(item => {\r\n return item != null && item.Value == currentModelValue;\r\n });\r\n this.chooseOption(selectedOption[0]);\r\n }\r\n }\r\n\r\n forceUpdateSelectedOption(value: string | string[]): void {\r\n /** trigger dirty check */ // @ts-ignore\r\n setTimeout(_ => {\r\n this.updateSelectedOption(value);\r\n });\r\n }\r\n\r\n get Value(): string | string[] {\r\n return this._value;\r\n }\r\n\r\n set Value(value: string | string[]) {\r\n this._updateValue(value);\r\n }\r\n\r\n clearAllSelectedOption(emitChange: boolean = true): void {\r\n this._selectedOptions.forEach(item => {\r\n this.unSelectMultipleOption(item, null, emitChange);\r\n });\r\n }\r\n\r\n handleKeyEnterEvent(event: KeyboardEvent): void {\r\n /** when composing end */\r\n if (!this._composing && this._isOpen) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.updateFilterOption(false);\r\n this.clickOption(this._activeFilterOption);\r\n }\r\n }\r\n\r\n handleKeyBackspaceEvent(event: KeyboardEvent): void {\r\n if (!this._searchText && !this._composing && this._isMultiple) {\r\n event.preventDefault();\r\n const lastOption = Array.from(this._selectedOptions).pop();\r\n this.unSelectMultipleOption(lastOption);\r\n }\r\n }\r\n\r\n handleKeyDownEvent($event: MouseEvent): void {\r\n if (this._isOpen) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n this._activeFilterOption = this.nextOption(\r\n this._activeFilterOption,\r\n this._filterOptions.filter(w => !w.Disabled)\r\n );\r\n this.scrollToActive();\r\n }\r\n }\r\n\r\n handleKeyUpEvent($event: MouseEvent): void {\r\n if (this._isOpen) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n this._activeFilterOption = this.preOption(\r\n this._activeFilterOption,\r\n this._filterOptions.filter(w => !w.Disabled)\r\n );\r\n this.scrollToActive();\r\n }\r\n }\r\n\r\n preOption(\r\n option: MefDevOptionComponent,\r\n options: MefDevOptionComponent[]\r\n ): MefDevOptionComponent {\r\n return options[options.indexOf(option) - 1] || options[options.length - 1];\r\n }\r\n\r\n nextOption(\r\n option: MefDevOptionComponent,\r\n options: MefDevOptionComponent[]\r\n ): MefDevOptionComponent {\r\n return options[options.indexOf(option) + 1] || options[0];\r\n }\r\n\r\n clearSearchText(): void {\r\n this._searchText = \"\";\r\n this.updateFilterOption();\r\n }\r\n\r\n updateFilterOption(updateActiveFilter: boolean = true): void {\r\n if (this.Filter) {\r\n this._filterOptions = new OptionPipe().transform(this._options, {\r\n searchText: this._searchText,\r\n tags: this._isTags,\r\n notFoundContent: this._isTags\r\n ? this._searchText\r\n : this._notFoundContent,\r\n disabled: !this._isTags,\r\n value: this._isTags ? this._searchText : \"disabled\"\r\n });\r\n } else {\r\n this._filterOptions = this._options;\r\n }\r\n\r\n /** TODO: cause pre & next key selection not work */\r\n if (updateActiveFilter && !this._selectedOption) {\r\n this._activeFilterOption = this._filterOptions[0];\r\n }\r\n }\r\n\r\n onSearchChange(searchValue: string): void {\r\n this.SearchChange.emit(searchValue);\r\n }\r\n\r\n @HostListener(\"click\", [\"$event\"])\r\n onClick(e: MouseEvent): void {\r\n e.preventDefault();\r\n if (!this._disabled) {\r\n this.Open = !this.Open;\r\n if (this.ShowSearch) {\r\n /** wait for search display */ // @ts-ignore\r\n setTimeout(_ => {\r\n this.searchInputElementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n onKeyDown(e: KeyboardEvent): void {\r\n const keyCode = e.keyCode;\r\n if (keyCode === TAB && this.Open) {\r\n this.Open = false;\r\n return;\r\n }\r\n if ((keyCode !== DOWN_ARROW && keyCode !== ENTER) || this.Open) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (!this._disabled) {\r\n this.Open = true;\r\n if (this.ShowSearch) {\r\n /** wait for search display */ // @ts-ignore\r\n setTimeout(_ => {\r\n this.searchInputElementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n\r\n closeDropDown(): void {\r\n if (!this.Open) {\r\n return;\r\n }\r\n this.onTouched();\r\n if (this.Multiple) {\r\n this._renderer.removeStyle(\r\n this.searchInputElementRef.nativeElement,\r\n \"width\"\r\n );\r\n }\r\n this.clearSearchText();\r\n this.Open = false;\r\n }\r\n\r\n setClassMap(): void {\r\n this._classList.forEach(_className => {\r\n this._renderer.removeClass(this._el, _className);\r\n }); // @ts-ignore\r\n this._classList = [\r\n this._prefixCls,\r\n this._mode === \"combobox\" && `${this._prefixCls}-combobox`,\r\n !this._disabled && `${this._prefixCls}-enabled`,\r\n this._disabled && `${this._prefixCls}-disabled`,\r\n this._isOpen && `${this._prefixCls}-open`,\r\n this._showSearch && `${this._prefixCls}-show-search`,\r\n this._size && `${this._prefixCls}-${this._size}`\r\n ].filter(item => {\r\n return !!item;\r\n });\r\n this._classList.forEach(_className => {\r\n this._renderer.addClass(this._el, _className);\r\n });\r\n this._selectionClassMap = {\r\n [this._selectionPrefixCls]: true,\r\n [`${this._selectionPrefixCls}--single`]: !this.Multiple,\r\n [`${this._selectionPrefixCls}--multiple`]: this.Multiple\r\n };\r\n }\r\n\r\n setDropDownClassMap(): void {\r\n this._dropDownClassMap = {\r\n [this._dropDownPrefixCls]: true,\r\n [\"component-select\"]: this._mode === \"combobox\",\r\n [`${this._dropDownPrefixCls}--single`]: !this.Multiple,\r\n [`${this._dropDownPrefixCls}--multiple`]: this.Multiple,\r\n [`${this._dropDownPrefixCls}-placement-bottomLeft`]:\r\n this._dropDownPosition === \"bottom\",\r\n [`${this._dropDownPrefixCls}-placement-topLeft`]:\r\n this._dropDownPosition === \"top\"\r\n };\r\n }\r\n\r\n scrollToActive(): void {\r\n /** wait for dropdown display */ // @ts-ignore\r\n setTimeout(_ => {\r\n if (this._activeFilterOption && this._activeFilterOption.Value) {\r\n const index = this._filterOptions.findIndex(\r\n option => option.Value === this._activeFilterOption.Value\r\n );\r\n try {\r\n const scrollPane = this.dropdownUl.nativeElement.children[\r\n index\r\n ] as HTMLLIElement;\r\n // TODO: scrollIntoViewIfNeeded is not a standard API, why doing so?\r\n /* tslint:disable-next-line:no-any */\r\n (scrollPane as any).scrollIntoViewIfNeeded(false);\r\n } catch (e) {}\r\n }\r\n });\r\n }\r\n\r\n flushComponentState(): void {\r\n this.updateFilterOption();\r\n if (!this.Multiple) {\r\n this.updateSelectedOption(this._value);\r\n } else {\r\n if (this._value) {\r\n this.updateSelectedOption(this._value);\r\n }\r\n }\r\n }\r\n\r\n _setTriggerWidth(): void {\r\n this._triggerWidth = this._getTriggerRect().width;\r\n /** should remove after after https://github.com/angular/material2/pull/8765 merged **/\r\n if (this._cdkOverlay && this._cdkOverlay.overlayRef) {\r\n this._cdkOverlay.overlayRef.updateSize({\r\n width: this._triggerWidth\r\n });\r\n }\r\n }\r\n\r\n _getTriggerRect(): ClientRect {\r\n return this.trigger.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(value: string | string[]): void {\r\n this._updateValue(value, false);\r\n }\r\n\r\n registerOnChange(fn: (value: string | string[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.Disabled = isDisabled;\r\n }\r\n\r\n dropDownScroll(ul: HTMLUListElement): void {\r\n if (ul && ul.scrollHeight - ul.scrollTop === ul.clientHeight) {\r\n this.ScrollToBottom.emit(true);\r\n }\r\n }\r\n\r\n checkDropDownScroll(): void {\r\n if (\r\n this.dropdownUl &&\r\n this.dropdownUl.nativeElement.scrollHeight ===\r\n this.dropdownUl.nativeElement.clientHeight\r\n ) {\r\n this.ScrollToBottom.emit(true);\r\n }\r\n }\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n private _renderer: Renderer2,\r\n private cDRef: ChangeDetectorRef\r\n ) {\r\n this._el = this._elementRef.nativeElement;\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this._value != null) {\r\n this.flushComponentState();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.updateFilterOption();\r\n this.setClassMap();\r\n this.setDropDownClassMap();\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n if (this._cacheOptions !== this._options) {\r\n /** update filter option after every content check cycle */\r\n this.updateFilterOption();\r\n this._cacheOptions = this._options;\r\n } else {\r\n this.updateFilterOption(false);\r\n }\r\n\r\n if (this.FirstDefault) {\r\n if (!this._value && this._options) {\r\n if (this._options[0] !== undefined && this._options[0].Value) {\r\n this.chooseOption(this._options[0], false);\r\n setTimeout(() => {\r\n this.onChange(this._options[0].Value);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _updateValue(\r\n value: string[] | string,\r\n emitChange: boolean = true\r\n ): void {\r\n if (this._value === value) {\r\n return;\r\n }\r\n if (value == null && this.Multiple) {\r\n this._value = [];\r\n } else {\r\n this._value = value;\r\n }\r\n if (!this.Multiple) {\r\n if (value == null) { // @ts-ignore\r\n this._selectedOption = null;\r\n } else {\r\n this.updateSelectedOption(value);\r\n }\r\n } else {\r\n if (value) {\r\n if (value.length === 0) {\r\n this.clearAllSelectedOption(emitChange);\r\n } else {\r\n this.updateSelectedOption(value, true);\r\n }\r\n } else if (value == null) {\r\n this.clearAllSelectedOption(emitChange);\r\n }\r\n }\r\n }\r\n}\r\n","<div tabindex=\"0\" #trigger cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" [ngClass]=\"_selectionClassMap\"\r\n (keydown.Enter)=\"handleKeyEnterEvent($event)\" (keydown.Backspace)=\"handleKeyBackspaceEvent($event)\"\r\n (keydown.ArrowUp)=\"handleKeyUpEvent($event)\" (keydown.ArrowDown)=\"handleKeyDownEvent($event)\">\r\n\r\n <!-- Увесь селект-->\r\n <div class=\"pg-select-selection__rendered\" *ngIf=\"!ShowSearch\">\r\n <div class=\"pg-select-selection__placeholder\">\r\n <ng-template [ngIf]=\"!_selectedOption\">\r\n {{ PlaceHolder }}\r\n </ng-template>\r\n </div>\r\n <div class=\"pg-select-selection-selected-value\">\r\n {{ _selectedOption?.Label }}\r\n </div>\r\n </div>\r\n <!--Cписок options-->\r\n <div class=\"pg-select-selection__rendered\" *ngIf=\"ShowSearch\">\r\n <div [hidden]=\"_searchText||(!Open&&_selectedOption)||_selectedOptions.size\"\r\n class=\"pg-select-selection__placeholder\">\r\n <ng-template [ngIf]=\"(!_composing)&&_selectedOption\">\r\n {{ _selectedOption.Label }}\r\n </ng-template>\r\n <ng-template [ngIf]=\"(!_composing)&&(!_selectedOption)\">\r\n {{ PlaceHolder }}\r\n </ng-template>\r\n </div>\r\n\r\n\r\n <!--Мультиселект-->\r\n <ul *ngIf=\"Multiple\"> \r\n <li *ngFor=\"let option of _selectedOptions\" [@tagAnimation] [attr.title]=\"option?.Label || option?.Value\"\r\n class=\"pg-select-selection__choice\" style=\"-webkit-user-select: none;\">\r\n <span class=\"pg-select-selection__choice__remove\" (click)=\"unSelectMultipleOption(option,$event)\"></span>\r\n <div class=\"pg-select-selection__choice__content\">{{ option?.Label }}</div>\r\n </li>\r\n <li class=\"pg-select-search pg-select-search--inline\">\r\n <div class=\"pg-select-search__field__wrap\">\r\n <input class=\"pg-select-search__field\" (compositionstart)=\"compositionStart()\"\r\n (compositionend)=\"compositionEnd();updateWidth(searchInput,_searchText);\" [(ngModel)]=\"_searchText\"\r\n (ngModelChange)=\"updateFilterOption();onSearchChange($event);\"\r\n (keydown)=\"updateWidth(searchInput,_searchText)\" (input)=\"updateWidth(searchInput,_searchText)\"\r\n (blur)=\"onTouched()\" #searchInput>\r\n <span class=\"pg-select-search__field__mirror\"></span></div>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"!Multiple\" class=\"pg-select-selection-selected-value\" [hidden]=\"!(_selectedOption?.Label)||Open\">\r\n {{ _selectedOption?.Label }}\r\n </div>\r\n <div *ngIf=\"!Multiple\" [hidden]=\"!Open\" class=\"pg-select-search pg-select-search--inline\">\r\n <div class=\"pg-select-search__field__wrap\">\r\n <input class=\"pg-select-search__field\" (blur)=\"onTouched()\" (compositionstart)=\"compositionStart()\"\r\n (compositionend)=\"compositionEnd()\" [(ngModel)]=\"_searchText\"\r\n (ngModelChange)=\"updateFilterOption();onSearchChange($event);\" #searchInput>\r\n <span class=\"pg-select-search__field__mirror\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <span (click)=\"onTouched();clearSelect($event)\" class=\"pg-select-selection__clear\" style=\"-webkit-user-select: none;\"\r\n *ngIf=\"_selectedOption?.Label&&AllowClear&&!Multiple\">\r\n </span>\r\n <span class=\"pg-select-arrow\"><b></b></span>\r\n</div>\r\n<ng-template cdkConnectedOverlay cdkConnectedOverlayHasBackdrop [cdkConnectedOverlayOrigin]=\"origin\"\r\n (backdropClick)=\"closeDropDown()\" (detach)=\"closeDropDown();\" (positionChange)=\"onPositionChange($event)\"\r\n [cdkConnectedOverlayWidth]=\"_triggerWidth\" [cdkConnectedOverlayOpen]=\"_isOpen\">\r\n <div [ngClass]=\"_dropDownClassMap\" [@dropDownAnimation]=\"_dropDownPosition\">\r\n <div style=\"overflow: auto;\">\r\n <ul class=\"pg-select-dropdown-menu pg-select-dropdown-menu-vertical pg-select-dropdown-menu-root\" #dropdownUl\r\n (scroll)=\"dropDownScroll(dropdownUl)\">\r\n <li *ngFor=\"let option of _filterOptions\" [class.pg-select-dropdown-menu-item-disabled]=\"option.Disabled\"\r\n [class.pg-select-dropdown-menu-item-active]=\"option.Value == _activeFilterOption?.Value\"\r\n [class.pg-select-dropdown-menu-item-selected]=\"(option.Value==(_selectedOption?.Value))||(isInSet(_selectedOptions,option))\"\r\n class=\"pg-select-dropdown-menu-item\" (click)=\"clickOption(option,$event)\">\r\n <ng-template *ngIf=\"option.OptionTemplate\" [ngTemplateOutlet]=\"option.OptionTemplate\">\r\n </ng-template>\r\n <ng-template [ngIf]=\"!option.OptionTemplate\">\r\n {{ option.Label }}\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</ng-template>","import {\r\n\tComponent,\r\n\tContentChild,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewEncapsulation\r\n} from \"@angular/core\";\r\n\r\n//import { toBoolean } from \"@shared/utils/convert\";\r\nimport { MefDevSelectComponent } from \"./select.component\";\r\nimport { toBoolean } from \"./../util/convert\";\r\n\r\n\r\n/**\r\n * @skipTemplateDoc true\r\n * Component for representing an option in a dropdown list.\r\n *\r\n *```\r\n * <mefdev-select>\r\n * <mefdev-option Value=\"1\" Label=\"Option 1\"></mefdev-option>\r\n * <mefdev-option Value=\"2\" Label=\"Option 2\"></mefdev-option>\r\n * <mefdev-option Value=\"3\" Label=\"Option 3\"></mefdev-option>\r\n * </mefdev-select>\r\n *```\r\n *\r\n */\r\n@Component({\r\n\tselector: \"mefdev-option\",\r\n\tencapsulation: ViewEncapsulation.None,\r\n\ttemplateUrl: \"./option.component.html\",\r\n\tstyleUrls: []\r\n})\r\nexport class MefDevOptionComponent implements OnDestroy, OnInit {\r\n\tprivate _disabled = false;\r\n\r\n\t_value: string;\r\n\t_label: string;\r\n\r\n\t/**\r\n \t* Template for the content of the option.\r\n \t*/\r\n\t@ContentChild(\"OptionTemplate\") OptionTemplate: any;\r\n\r\n\t /**\r\n * The value of the option.\r\n */\r\n\t@Input()\r\n\tset Value(value: string) {\r\n\t\tif (this._value === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._value = value;\r\n\t}\r\n\r\n\tget Value(): string {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t/**\r\n * The label of the option.\r\n */\r\n\t@Input()\r\n\tset Label(value: string) {\r\n\t\tif (this._label === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._label = value;\r\n\t}\r\n\r\n\tget Label(): string {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n * Indicates whether the option is disabled.\r\n */\r\n\t@Input()\r\n\tset Disabled(value: boolean) {\r\n\t\tthis._disabled = toBoolean(value);\r\n\t}\r\n\r\n\tget Disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\tconstructor(private _Select: MefDevSelectComponent) {}\r\n\r\n\t/**\r\n * Initialization lifecycle hook.\r\n * Adds the option to the dropdown list.\r\n */\r\n\tngOnInit(): void {\r\n\t\tthis._Select.addOption(this);\r\n\t}\r\n\r\n\t/**\r\n * Destruction lifecycle hook.\r\n * Removes the option from the dropdown list.\r\n */\r\n\tngOnDestroy(): void {\r\n\t\tthis._Select.removeOption(this);\r\n\t}\r\n}\r\n","<ng-content></ng-content>","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n/**\r\n * Datepicker Component for selecting dates.\r\n *\r\n * This component allows users to pick a date from a calendar interface.\r\n * It supports various configuration options such as language, date format, and date range.\r\n *\r\n * @example\r\n * <mefdev-datepicker\r\n * [labelContentText]=\"'Select your date'\"\r\n * [lang]=\"'uk'\"\r\n * [dateFormat]=\"'dd/MM/yyyy'\"\r\n * [range]=\"{startYear: 1900, toYear: 300}\"\r\n * [disabled]=\"false\"\r\n * (dateChanged)=\"onDateChanged($event)\"\r\n * [topOffset]=\"'20'\"\r\n * [leftOffset]=\"'10'\">\r\n * </mefdev-datepicker>\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/datepicker</example-url>\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-datepicker',\r\n templateUrl: './datepicker.component.html',\r\n styleUrls: ['./datepicker.component.scss']\r\n})\r\n\r\nexport class DatepickerComponent implements OnChanges, OnInit {\r\n\r\n /**\r\n * A flag that checks whether a valid date has been entered and whether the entered date exists.\r\n * If the two previous conditions are not true, the datepicker will be highlighted in red\r\n */\r\n isUserDateValid: boolean = true;\r\n\r\n /**\r\n * Flag to determine if the calendar is open or closed.\r\n * Default value: false (closed).\r\n */\r\n isCalendarOpen: boolean = false;\r\n\r\n /**\r\n * The currently selected date.\r\n * Default value: Today's date.\r\n */\r\n selectedDate: Date = new Date();\r\n\r\n /**\r\n * The formatted date for display in the input.\r\n * Default value: Formatted representation of the selected date.\r\n */\r\n formattedDate: any ;\r\n\r\n /**\r\n * Track the edited date separately when in editing mode.\r\n * Default value: An empty string.\r\n */\r\n editedDate: string = '';\r\n\r\n /**\r\n * Flag to determine if the month dropdown is open or closed.\r\n * Default value: true (open).\r\n */\r\n isMonthDropdownOpen: boolean = true;\r\n\r\n /**\r\n * Flag to determine if the year dropdown is open or closed.\r\n * Default value: true (open).\r\n */\r\n isYearDropdownOpen: boolean = true;\r\n\r\n /**\r\n * The selected month (0-11).\r\n * Default value: The month of the selected date.\r\n */\r\n selectedDateMonth: number = this.selectedDate.getMonth();\r\n\r\n /**\r\n * The selected year.\r\n * Default value: The year of the selected date.\r\n */\r\n selectedDateYear: number = this.selectedDate.getFullYear();\r\n\r\n /**\r\n * An array of years for the year dropdown.\r\n * Default value: An array of years within the specified range.\r\n */\r\n years: number[]\r\n\r\n /**\r\n * Label text for the datepicker.\r\n * Default value: 'en' (English).\r\n * @example\r\n * <mefdev-datepicker\r\n * [labelContentText] = \"'Chose your date'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() labelContentText: string;\r\n\r\n /**\r\n * The language/locale for the datepicker.\r\n * Default value: 'en' (English).\r\n * @example\r\n * <mefdev-datepicker\r\n * [lang] = \"'uk'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() lang: string = 'en';\r\n\r\n /**\r\n * The date format for displaying the selected date.\r\n * Default value: 'EEE MMM dd yyyy'.\r\n * @example\r\n * <mefdev-datepicker\r\n * [dateFormat]=\"'dd/MM/yyyy'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() dateFormat: string = 'EEE MMM dd yyyy';\r\n\r\n /**\r\n * The range of years available in the year dropdown.\r\n * Default value: { startYear: 1900, toYear: 300 }.\r\n * @example\r\n * <mefdev-datepicker\r\n * [range]=\"{startYear: 1900, toYear: 300}\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input('range') yearsRange:{startYear:number, toYear:number} = {startYear:1900, toYear:300};\r\n\r\n /**\r\n * Whether the datepicker is disabled or not.\r\n * Default value: false (enabled).\r\n * @example\r\n * <mefdev-datepicker\r\n * [disabled]=\"false\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * The top offset for positioning the datepicker.\r\n * Default value: '20'.\r\n * @example\r\n * <mefdev-datepicker\r\n * [topOffset]=\"'20'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() topOffset: string = '20';\r\n\r\n /**\r\n * The left offset for positioning the datepicker.\r\n * Default value: '10'.\r\n * @example\r\n * <mefdev-datepicker\r\n * [leftOffset]=\"'10'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() leftOffset: string = '10'; //Default value\r\n\r\n /**\r\n * Event emitted when the selected date in the datepicker changes.\r\n * It emits a `Date` object representing the selected date.\r\n * @example\r\n * <mefdev-datepicker\r\n * (dateChanged)=\"onDateChanged($event)\">\r\n * </mefdev-datepicker>\r\n */\r\n @Output() dateChanged: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n /**\r\n * Regular expression to validate user input for date in the format \"dd/MM/yyyy\".\r\n * - The day (dd) should be between 01 and 31.\r\n * - The month (MM) should be between 01 and 12.\r\n * - The year (yyyy) should be a 4-digit number.\r\n */\r\n private dateRegExp: RegExp = /^(0[1-9]|[12][0-9]|3[01])\\/(0[1-9]|1[0-2])\\/\\d{4}$/;\r\n\r\n /**\r\n * The string entered by the user for date input.\r\n * This variable stores the user's input as they type in the date field.\r\n */\r\n userInput: string = '';\r\n\r\n /**\r\n * Host listener for document click events to handle calendar interaction.\r\n * This function checks if a click event occurred within the calendar or input elements.\r\n * - If the click occurred within the calendar, no action is taken.\r\n * - If the click occurred within the input element and the component is not in editing mode,\r\n * it opens the calendar.\r\n * @param event The MouseEvent object representing the click event.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const targetElement = event.target as HTMLElement;\r\n const datepickerContainer = this.elementRef.nativeElement.querySelector('.datepicker-container');\r\n const calendar = this.elementRef.nativeElement.querySelector('.calendar');\r\n const monthDropdown = this.elementRef.nativeElement.querySelector('.monthDropdown');\r\n const yearDropdown = this.elementRef.nativeElement.querySelector('.yearDropdown');\r\n const inputElement = this.elementRef.nativeElement.querySelector('input');\r\n\r\n if (datepickerContainer && datepickerContainer.contains(calendar)) {\r\n if (calendar && calendar.contains(targetElement)) return;\r\n if (this.isMonthDropdownOpen && !calendar.contains(targetElement)) return;\r\n if (this.isYearDropdownOpen && !calendar.contains(targetElement)) return;\r\n if ((monthDropdown && monthDropdown.contains(targetElement)) && (yearDropdown && yearDropdown.contains(targetElement))) {\r\n this.toggleMonthDropdown(event)\r\n this.toggleYearDropdown(event)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Constructor for the DatepickerComponent class.\r\n * @param datePipe A service for formatting and parsing dates.\r\n * @param elementRef A reference to the element on which this component is attached.\r\n * It is used to access DOM elements.\r\n */\r\n constructor(private datePipe: DatePipe, private elementRef: ElementRef) {\r\n this.updateInputValue()\r\n }\r\n\r\n /**\r\n * Lifecycle hook called after the component is initialized.\r\n * It initializes the years for the year select dropdown.\r\n */\r\n ngOnInit(){\r\n this.initializeYears();\r\n }\r\n\r\n /**\r\n * Lifecycle hook called whenever the input properties of the component change.\r\n * It updates the input value.\r\n */\r\n ngOnChanges() {\r\n this.updateInputValue();\r\n }\r\n\r\n /**\r\n * An array of month names based on the selected language.\r\n * It provides localized month names for display in the datepicker.\r\n */\r\n private get months(){\r\n return this.getMonthList(this.lang);\r\n }\r\n\r\n /**\r\n * An array of weekday names based on the selected language.\r\n * It provides localized weekday names for display in the datepicker.\r\n */\r\n private get weekdays() {\r\n return this.getWeekdayList(this.lang);\r\n }\r\n\r\n /**\r\n * Initialize the list of years to be displayed in the year dropdown.\r\n * This method populates the 'years' array with a range of years based on the provided 'yearsRange' configuration.\r\n * @example\r\n * ```\r\n * // Assuming 'yearsRange' is { startYear: 1900, toYear: 300 }\r\n * // After calling initializeYears(), 'years' might contain [1900, 1901, ..., 300]\r\n * this.initializeYears();\r\n * ```\r\n */\r\n private initializeYears() {\r\n this.years = Array.from({ length: this.yearsRange.toYear }, (_, index) => index + this.yearsRange.startYear);\r\n }\r\n\r\n /**\r\n * Toggle the editing mode for the date input. When enabled, the user can edit the date directly in the input field.\r\n */\r\n toggleEdit() {\r\n this.editedDate = this.formatSelectedDate(); // Store the current formatted date for editing\r\n this.isCalendarOpen = false;\r\n }\r\n\r\n /**\r\n * Get a list of month names in the specified language and format.\r\n * @param locales - An optional parameter specifying the locale or locales to use for formatting.\r\n * @param format - The format for month names, either \"long\" (default) or \"short\".\r\n * @returns An array of month names based on the provided format and locale.\r\n * ```\r\n * // Get a list of month names in the default language and long format\r\n * const months = this.getMonthList(this.lang);\r\n * ```\r\n */\r\n private getMonthList( locales?: string | string[], format: \"long\" | \"short\" = \"long\"): string[] {\r\n const year = new Date().getFullYear();\r\n const monthList = [...Array(12).keys()];\r\n const formatter = new Intl.DateTimeFormat(locales, { month: format });\r\n const getMonthName = (monthIndex: number) => formatter.format(new Date(year, monthIndex));\r\n return monthList.map(getMonthName);\r\n }\r\n\r\n /**\r\n * Get a list of weekday names in the specified language and format.\r\n * @param locales - An optional parameter specifying the locale or locales to use for formatting.\r\n * @param format - The format for weekday names, either \"short\" (default) or \"long\".\r\n * @returns An array of weekday names based on the provided format and locale.\r\n * ```\r\n * // Get a list of weekday names in the default language and short format\r\n * const weekdays = this.getWeekdayList();\r\n * ```\r\n */\r\n private getWeekdayList(locales?: string | string[], format: \"short\" | \"long\" = \"short\"): string[] {\r\n const weekdays = [...Array(7).keys()];\r\n const mondayIndex = weekdays.indexOf(0);\r\n weekdays.splice(mondayIndex, 1);\r\n weekdays.push(0);\r\n const formatter = new Intl.DateTimeFormat(locales, { weekday: format });\r\n const getWeekdayName = (weekdayIndex: number) => {\r\n return formatter.format(new Date(2023, 9, weekdayIndex + 1));\r\n };\r\n return weekdays.map(getWeekdayName);\r\n }\r\n\r\n /**\r\n * Save the edited date input by the user, provided it matches the specified date format.\r\n * This method checks if the entered date is in a valid format, disables the editing mode, and applies\r\n * the edited date to the 'selectedDate'. It then reformats the selected date and closes the calendar.\r\n * ```\r\n * // Save the edited date and update the selected date\r\n * this.saveEditedDate();\r\n * ```\r\n */\r\n private saveEditedDate() {\r\n if (this.isDateValid(this.editedDate)) {\r\n const [day, month, year] = this.editedDate.split('/');\r\n this.selectedDate = new Date(+year, +month - 1, +day);\r\n this.formatDate();\r\n }\r\n }\r\n\r\n /**\r\n * Handle user input in the editable input field for date editing. This method captures the input value\r\n * and stores it in the 'editedDate' variable. If the input matches the valid date format, it updates\r\n * 'selectedDateMonth' and 'selectedDateYear' accordingly.\r\n * @param event - The input event containing the user's input.\r\n * ```\r\n * // Handle user input in the editable input field\r\n * this.onDateInput(event);\r\n * ```\r\n */\r\n public onDateInput(event: any) {\r\n const inputDate: string = event.target.value;\r\n if (this.isDateValid(inputDate)) {\r\n this.editedDate = inputDate;\r\n const parsedDate = inputDate.split('/');\r\n this.selectedDateMonth = +parsedDate[1] - 1;\r\n this.selectedDateYear = +parsedDate[2];\r\n this.selectedDate = new Date(+parsedDate[2], +parsedDate[1] - 1, +parsedDate[0]);\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n this.isUserDateValid = this.isDateValid(inputDate);\r\n }\r\n\r\n /**\r\n * Toggle the visibility of the month dropdown in the calendar interface.\r\n * This method is used to open or close the dropdown for selecting months.\r\n * @param event - The event triggering the toggle action (e.g., a click event).\r\n * ```\r\n * // Toggle the visibility of the month dropdown\r\n * this.toggleMonthDropdown(event);\r\n * ```\r\n */\r\n private toggleMonthDropdown(event: Event) {\r\n this.isMonthDropdownOpen = !this.isMonthDropdownOpen;\r\n }\r\n\r\n /**\r\n * Toggle the visibility of the year dropdown in the calendar interface.\r\n * This method is used to open or close the dropdown for selecting years.\r\n * @param event - The event triggering the toggle action (e.g., a click event).\r\n * ```\r\n * // Toggle the visibility of the year dropdown\r\n * this.toggleYearDropdown(event);\r\n * ```\r\n */\r\n private toggleYearDropdown(event: Event) {\r\n this.isYearDropdownOpen = !this.isYearDropdownOpen;\r\n }\r\n\r\n /**\r\n * Handle the change of the selected month in the calendar interface.\r\n * This method updates the input value, sets the selected date to the first day of the chosen month,\r\n * and recalculates the calendar display accordingly.\r\n * ```\r\n * // Handle the change of the selected month\r\n * this.onMonthChange();\r\n * ```\r\n */\r\n private onMonthChange() {\r\n this.updateInputValue();\r\n this.selectedDate = new Date(this.selectedDateYear, this.selectedDateMonth, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n /**\r\n * Handle the change of the selected year in the calendar interface.\r\n * This method updates the input value, sets the selected date to the first day of the chosen year,\r\n * reformats the selected date, and recalculates the calendar display.\r\n * ```\r\n * // Handle the change of the selected year\r\n * this.onYearChange();\r\n * ```\r\n */\r\n private onYearChange() {\r\n this.updateInputValue();\r\n this.selectedDate = new Date(this.selectedDateYear, this.selectedDateMonth, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n\r\n /**\r\n * Select a date in the calendar interface and perform necessary updates.\r\n * This method sets the selected date, formats it, closes the calendar, and emits a dateChanged event.\r\n * It also updates the selected month and year dropdown values.\r\n * @param date - The date to be selected in the calendar.\r\n */\r\n selectDate(date: Date) {\r\n this.selectedDate = date;\r\n this.formatDate();\r\n this.isCalendarOpen = false;\r\n this.dateChanged.next(this.selectedDate);\r\n this.selectedDateMonth = this.selectedDate.getMonth();\r\n this.selectedDateYear = this.selectedDate.getFullYear();\r\n }\r\n\r\n /**\r\n * Format the selected date based on the chosen date format and language.\r\n * This method uses the Angular DatePipe to format the selected date and updates the formattedDate variable.\r\n * ```\r\n * // Format the selected date\r\n * this.formatDate();\r\n * ```\r\n */\r\n private formatDate() {\r\n this.formattedDate = this.datePipe.transform(this.selectedDate, this.dateFormat) || '';\r\n }\r\n\r\n /**\r\n * Format the selected date based on the chosen date format, language, and locale.\r\n * This method uses the Angular DatePipe to format the selected date with the specified language and updates the formatted date as a string.\r\n * @returns A formatted date string.\r\n * ```\r\n * // Format the selected date with language\r\n * const formatted = this.formatSelectedDate();\r\n * ```\r\n */\r\n private formatSelectedDate(): string {\r\n return this.datePipe.transform(this.selectedDate, this.dateFormat, this.lang) || '';\r\n }\r\n\r\n /**\r\n * Update the input value displayed in the calendar interface.\r\n * This method updates the input value to either the edited date or the formatted selected date,\r\n * depending on whether the user is in edit mode or not.\r\n * ```\r\n * // Update the input value\r\n * this.updateInputValue();\r\n * ```\r\n */\r\n private updateInputValue() {\r\n this.formattedDate = this.isCalendarOpen ? this.editedDate : this.formatSelectedDate();\r\n }\r\n\r\n /**\r\n * Get an array of arrays representing the days of the current month.\r\n * Each sub-array contains the day data for a week, and each day data object includes the date and whether it belongs to the current month.\r\n * @returns An array of arrays representing the days of the current month.\r\n * ```\r\n * // Get an array of arrays representing the days of the current month\r\n * const calendar = this.calendarDays;\r\n * ```\r\n */\r\n private get calendarDays() {\r\n return this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n /**\r\n * Get the date of the previous month to display in empty cells of the current month.\r\n * This method returns the date of the previous month if the provided date is not in the current month.\r\n * If the provided date is in the current month, it returns the date's day as a string.\r\n * @param date - The date to evaluate.\r\n * @returns The date of the previous month or a day string.\r\n * ```\r\n * // Get the previous month's date to display in empty cells\r\n * const previousMonthDate = this.getPreviousMonthDate(new Date(2023, 8, 1));\r\n * ```\r\n */\r\n private getPreviousMonthDate(date: Date): any {\r\n if (!date) {\r\n return '';\r\n }\r\n const currentDate = new Date();\r\n if (date.getMonth() === currentDate.getMonth() && date.getFullYear() === currentDate.getFullYear()) {\r\n return date.getDate().toString();\r\n } else {\r\n return this.datePipe.transform(date, 'dd');\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Navigate to the previous month in the calendar interface.\r\n * This method updates the selectedDate, formats it, and recalculates the first day of the calendar.\r\n * ```\r\n * // Navigate to the previous month\r\n * this.getPreviousMonth();\r\n * ```\r\n */\r\n private getPreviousMonth() {\r\n const currentMonth = this.selectedDate.getMonth();\r\n this.selectedDate = new Date(this.selectedDate.getFullYear(), currentMonth - 1, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n /**\r\n * Navigate to the next month in the calendar interface.\r\n * This method updates the selectedDate, formats it, and recalculates the first day of the calendar.\r\n * ```\r\n * // Navigate to the next month\r\n * this.getNextMonth();\r\n * ```\r\n */\r\n private getNextMonth() {\r\n const currentMonth = this.selectedDate.getMonth();\r\n this.selectedDate = new Date(this.selectedDate.getFullYear(), currentMonth + 1, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n\r\n /**\r\n * Get the number of days in a given month of a specific year.\r\n * @param year - The year for which you want to determine the number of days.\r\n * @param month - The month (0-based index) for which you want to determine the number of days.\r\n * @returns The number of days in the specified month of the given year.\r\n */\r\n private daysInMonth(year: number, month: number): number {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n\r\n /**\r\n * Calculate the structure of days in a month for the calendar display.\r\n * This method generates a matrix of day data objects representing the days in the calendar.\r\n * Each day data object contains the date and whether it belongs to the current month.\r\n * @returns A matrix of day data objects for the calendar display.\r\n */\r\n private calculateFirstDayOfCalendar() {\r\n const year = this.selectedDate.getFullYear();\r\n const month = this.selectedDate.getMonth();\r\n const firstDayOfMonth = new Date(year, month, 1);\r\n const firstWeekday = firstDayOfMonth.getDay();\r\n const startDay = firstWeekday === 0 ? -5 : 2 - firstWeekday;\r\n const calendarDays = [];\r\n let currentDay = startDay;\r\n for (let i = 0; i < 6; i++) {\r\n const week = [];\r\n for (let j = 0; j < 7; j++) {\r\n const day = new Date(year, month, currentDay);\r\n const dayData = {\r\n date: day,\r\n isCurrentMonth: currentDay >= 1 && currentDay <= this.daysInMonth(year, month),\r\n };\r\n week.push(dayData);\r\n currentDay++;\r\n }\r\n calendarDays.push(week);\r\n }\r\n return calendarDays;\r\n }\r\n\r\n /**\r\n * Check if a given date is the currently selected date in the calendar.\r\n * @param date - The date to check.\r\n * @returns `true` if the provided date matches the selected date, otherwise `false`.\r\n * ```\r\n * // Check if a date is selected\r\n * const isSelected = this.isDateSelected(someDate);\r\n * ```\r\n */\r\n private isDateSelected(date: Date) {\r\n return date.toDateString() === this.selectedDate.toDateString();\r\n }\r\n\r\n /**\r\n * Check if a date string is valid based on the specified date format.\r\n * It also checks whether the specified number, month is correct and whether the specified one exists among calendar years\r\n * @param inputDate - The date string to validate.\r\n * @returns `true` if the input date string is valid, otherwise `false`.\r\n * ```\r\n * // Check if a date string is valid\r\n * const isValidDate = this.isDateValid('05/25/2023');\r\n * ```\r\n */\r\n private isDateValid(inputDate: string) {\r\n if (!this.dateRegExp.test(inputDate)) {\r\n return false;\r\n }\r\n\r\n const parts = inputDate.split('/');\r\n const day = parseInt(parts[0], 10);\r\n const month = parseInt(parts[1], 10);\r\n const year = parseInt(parts[2], 10);\r\n\r\n if (year > this.years[this.years.length - 1] || year < this.years[0]) {\r\n return false\r\n }\r\n\r\n const daysInMonth = new Date(year, month, 0).getDate();\r\n return day <= daysInMonth;\r\n }\r\n\r\n /**\r\n * Check if a given date is today's date.\r\n * @param date - The date to check.\r\n * @returns `true` if the provided date is today's date, otherwise `false`.\r\n * ```\r\n * // Check if a date is today's date\r\n * const isToday = this.isDateToday(someDate);\r\n * ```\r\n */\r\n private isDateToday(date: Date) {\r\n const today = new Date();\r\n return date.toDateString() === today.toDateString();\r\n }\r\n}\r\n","<div class=\"datepicker-container\" [class.disabled]=\"disabled\">\r\n\r\n <!-- Input, save & edit buttons -->\r\n <div class=\"input-container form-group\">\r\n <label *ngIf=\"labelContentText\" class=\"form-label\"> {{ labelContentText }} </label>\r\n <input\r\n [ngClass]=\"{ 'calendarNotOpened': !isCalendarOpen }\"\r\n [ngStyle]=\"{ 'border-color': isUserDateValid ? '' : 'red' }\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n (input)=\"onDateInput($event)\"\r\n (click)=\"isCalendarOpen = true\"\r\n [value]=\"formattedDate\"\r\n [readOnly]=\"!isCalendarOpen\"\r\n >\r\n </div>\r\n\r\n <!-- Calendar(Dropdowns, dates) -->\r\n <div *ngIf=\"isCalendarOpen\" class=\"calendar\" #calendarContainer\r\n [style.top]=\"topOffset\"\r\n [style.left]=\"leftOffset\">\r\n <div class=\"calendar-header\">\r\n <div class=\"monthButtonContainer\">\r\n <!-- Month dropdown -->\r\n <ng-container *ngIf=\"isMonthDropdownOpen; else monthLabel\">\r\n <mefdev-select\r\n class=\"monthDropdown\"\r\n [(ngModel)]=\"selectedDateMonth\"\r\n (ngModelChange)=\"onMonthChange()\"\r\n [PlaceHolder]=\"'month'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let month of months; let i = index\"\r\n [Value]=\"i\"\r\n [Label]=\"month\"\r\n style=\"z-index: 1\"\r\n >{{ month }}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #monthLabel>\r\n <span (click)=\"toggleMonthDropdown($event)\"></span>\r\n </ng-template>\r\n\r\n <!-- Year dropdown -->\r\n <ng-container *ngIf=\"isYearDropdownOpen; else yearLabel\">\r\n <mefdev-select\r\n class=\"yearDropdown\"\r\n [(ngModel)]=\"selectedDateYear\"\r\n (ngModelChange)=\"onYearChange()\"\r\n [PlaceHolder]=\"'year'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let year of years\"\r\n [Label]=\"year\"\r\n [Value]=\"year\"\r\n >{{year}}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #yearLabel>\r\n <span (click)=\"toggleYearDropdown($event)\">{{ selectedDateYear }}</span>\r\n </ng-template>\r\n </div>\r\n <!-- Calendar exit button -->\r\n <div>\r\n <i class=\"fa fa-times toggleCalendarButton\" (click)=\"isCalendarOpen = false\" aria-hidden=\"true\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n <table>\r\n <tr>\r\n <th class=\"text-center\" *ngFor=\"let weekday of weekdays\">{{ weekday }}</th>\r\n </tr>\r\n <tr *ngFor=\"let week of calendarDays\">\r\n <td *ngFor=\"let dayData of week\"\r\n (click)=\"selectDate(dayData.date)\"\r\n [ngClass]=\"{ 'selected': isDateSelected(dayData.date), 'prev-month': !dayData.isCurrentMonth }\">\r\n\r\n <span class=\"date\" [class.prev-month]=\"!dayData.isCurrentMonth\">\r\n {{ dayData.date.getDate() }}\r\n </span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</div>\r\n","import { OverlayModule } from \"@angular/cdk/overlay\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\nimport { OptionPipe } from \"./option.pipe\";\r\nimport { MefDevSelectComponent } from \"./select.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, OverlayModule],\r\n declarations: [OptionPipe, MefDevOptionComponent, MefDevSelectComponent],\r\n exports: [OptionPipe, MefDevOptionComponent, MefDevSelectComponent]\r\n})\r\nexport class MefDevSelectModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { DatepickerComponent } from './datepicker/datepicker.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MefDevSelectModule } from '../../../pg-components/select';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [DatepickerComponent],\r\n exports: [DatepickerComponent],\r\n imports: [CommonModule, FormsModule, DatePipe, MefDevSelectModule],\r\n providers:[DatePipe]\r\n})\r\nexport class MefDevDatepickerModule { }\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Component representing a progress bar.\r\n * \r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-progress type=\"linear\" color=\"blue\" [thick]=\"true\"></mefdev-progress>\r\n * <mefdev-progress type=\"circle\" color=\"red\" [indeterminate]=\"true\"></mefdev-progress>\r\n * ```\r\n */\r\n@Component({\r\n selector: \"mefdev-progress\",\r\n templateUrl: \"./progress.component.html\"\r\n})\r\nexport class MefDevProgressComponent {\r\n _value: number;\r\n _value2: any;\r\n\r\n /**\r\n * The type of progress bar.\r\n * Possible values: \"linear\" | \"circle\".\r\n * Default value: \"linear\".\r\n */\r\n @Input() type: string;\r\n\r\n /**\r\n * The color of the progress bar.\r\n * Possible values: any valid CSS color value.\r\n * Default value: none.\r\n */\r\n\r\n @Input() color: string;\r\n\r\n /**\r\n * Determines whether the progress bar is thick.\r\n * Default value: false.\r\n */\r\n @Input() thick: boolean;\r\n\r\n /**\r\n * Determines whether the progress bar is indeterminate.\r\n * Default value: false.\r\n */\r\n @Input() indeterminate: boolean;\r\n\r\n\r\n /**\r\n * The value of the progress bar.\r\n * For the \"circle\" type, it should be a number between 0 and 100.\r\n */\r\n @Input() set value(value: number) {\r\n if (this.type == \"circle\") {\r\n this._value = (value / 100) * 360;\r\n if (this.value >= 50) {\r\n this._value2 = true;\r\n }\r\n } else this._value = value;\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * Additional value property.\r\n */\r\n get value2() {\r\n return this._value2;\r\n }\r\n constructor() {}\r\n}\r\n","<div *ngIf=\"type === 'bar'; else circleBlock\">\r\n <div *ngIf=\"indeterminate; else determineBarBlock\">\r\n <div class=\"progress\" [class.progress-small]=\"!thick\">\r\n <div class=\"progress-bar-{{ color }}\" [class.progress-bar-indeterminate]=\"indeterminate\"></div>\r\n </div>\r\n </div>\r\n <ng-template #determineBarBlock>\r\n <div class=\"progress\" [class.progress-small]=\"!thick\">\r\n <div class=\"progress-bar progress-bar-{{ color }}\" [ngStyle]=\"{ width: value + '%' }\"></div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n<ng-template #circleBlock>\r\n <div class=\"progress-circle-{{ color }}\" [class.progress-circle-indeterminate]=\"indeterminate\"\r\n [class.progress-circle]=\"!indeterminate\" [class.progress-circle-thick]=\"thick\">\r\n <div *ngIf=\"indeterminate; else determineBlock\"></div>\r\n <ng-template #determineBlock>\r\n <div class=\"pie\" [ngStyle]=\"_value2 && { clip: 'rect(auto, auto, auto, auto)' }\">\r\n <div class=\"left-side half-circle\" [ngStyle]=\"_value2 && { transform: 'rotate(' + value + 'deg)' }\"></div>\r\n <div class=\"right-side half-circle\" [ngStyle]=\"{\r\n transform:\r\n _value2 === true ? 'rotate(180deg)' : 'rotate(' + value + 'deg)'\r\n }\"></div>\r\n </div>\r\n <div class=\"shadow\"></div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import {\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ViewChild,\r\n TemplateRef,\r\n ContentChild,\r\n EventEmitter,\r\n Output\r\n} from \"@angular/core\";\r\n\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from \"@angular/animations\";\r\n\r\n/**\r\n * Component representing a custom card.\r\n * It provides various styling and animation options for the card layout.\r\n *\r\n * Example usage:\r\n * ```\r\n * <mefdev-inner-card [Title]=\"'Card Title'\" [Type]=\"'default'\" [MinimalHeader]=\"false\" [ProgressType]=\"'circle'\">\r\n * Card content goes here...\r\n * </mefdev-inner-card>\r\n * ```\r\n */\r\n@Component({\r\n selector: \"mefdev-inner-card\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./card.components.html\",\r\n animations: [\r\n trigger(\"collapseState\", [\r\n state(\r\n \"inactive\",\r\n style({\r\n opacity: \"0\",\r\n height: 0,\r\n paddingBottom: \"0\"\r\n })\r\n ),\r\n state(\r\n \"active\",\r\n style({\r\n opacity: \"1\",\r\n height: \"*\",\r\n paddingBottom: \"*\"\r\n })\r\n ),\r\n transition(\"inactive => active\", animate(\"125ms ease-in\")),\r\n transition(\"active => inactive\", animate(\"125ms ease-out\"))\r\n ]),\r\n trigger(\"fadeAnimation\", [\r\n state(\r\n \"false\",\r\n style({\r\n opacity: \"0\",\r\n visibility: \"hidden\"\r\n })\r\n ),\r\n state(\r\n \"true\",\r\n style({\r\n opacity: \"1\",\r\n visibility: \"visible\"\r\n })\r\n ),\r\n transition(\"false => true\", animate(\"500ms ease-in\")),\r\n transition(\"true => false\", animate(\"500ms ease-out\"))\r\n ])\r\n ]\r\n})\r\nexport class MefdevInnerCard {\r\n\r\n // constructor() {\r\n // console.log('1')\r\n // }\r\n\r\n /**\r\n * Indicates whether the card is collapsed or not.\r\n * Default: false\r\n */\r\n _isCollapsed: boolean = false;\r\n\r\n /**\r\n * Indicates whether the card is maximized or not.\r\n * Default: false\r\n */\r\n _isMaximixed: boolean = false;\r\n\r\n /**\r\n * Indicates whether the card is in loading state or not.\r\n * Default: false\r\n */\r\n _isLoading: boolean = false;\r\n\r\n /**\r\n * Indicates whether the card has a minimal header or not.\r\n * Default: false\r\n */\r\n _minimalHeader: boolean = false;\r\n\r\n /**\r\n * The message to be displayed in the card.\r\n */\r\n _message: string = \"\";\r\n\r\n /**\r\n * The type of message to be displayed in the card (e.g., success, danger, warning).\r\n * Default: \"danger\"\r\n */\r\n _messageType: string = \"danger\";\r\n\r\n /**\r\n * Indicates whether the message in the card is visible or not.\r\n * Default: false\r\n */\r\n _messageVisible: boolean = false;\r\n\r\n /**\r\n * The type of progress indicator to be displayed in the card (e.g., circle, bar, none).\r\n * Default: \"circle\"\r\n */\r\n _progressType: string = \"circle\";\r\n\r\n /**\r\n * The color of the progress indicator in the card.\r\n */\r\n _progressColor: string = \"\";\r\n\r\n /**\r\n * Indicates whether the tools (e.g., refresh, close, maximize) are shown in the card header or not.\r\n * Default: true\r\n */\r\n _showTools: boolean = true;\r\n\r\n\r\n _close_card: boolean = false;\r\n _refresh: boolean = false;\r\n _refreshColor: string = \"light\";\r\n\r\n /**\r\n * Indicates whether the close button in the card is visible or not.\r\n * Default: true\r\n */\r\n _close: boolean = true;\r\n\r\n /**\r\n * Indicates whether the toggle button in the card is visible or not.\r\n * Default: true\r\n */\r\n _toggle: boolean = true;\r\n\r\n /**\r\n * Indicates whether the maximize button in the card is visible or not.\r\n * Default: true\r\n */\r\n _maximize: boolean = true;\r\n\r\n /**\r\n * The timeout value in milliseconds for the loading state of the card.\r\n * If set to 0, the loading state will not automatically turn off.\r\n * Default: 0\r\n */\r\n _timeout: number = 0;\r\n\r\n /**\r\n * The title text to be displayed in the card header.\r\n */\r\n _titleText: string = \"\";\r\n\r\n /**\r\n * The border style of the card.\r\n */\r\n _card_border_style: string = \"\";\r\n\r\n /**\r\n * The type of the card (e.g., default, bordered, minimal).\r\n * Default: \"default\"\r\n */\r\n _type: string = \"default\";\r\n\r\n\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card header.\r\n */\r\n _extraHeaderClass = \"\";\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card body.\r\n */\r\n _extraBodyClass = \"\";\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card.\r\n */\r\n _additionalClasses = \"\";\r\n\r\n /**\r\n * ViewChild reference to the host content element.\r\n */\r\n @ViewChild(\"hostContent\") _hostContent: ElementRef;\r\n /**\r\n * ViewChild reference to the minimal circle loading element.\r\n */\r\n @ViewChild(\"minimalCircleLoading\") minimalCircleLoading: ElementRef;\r\n /**\r\n * ViewChild reference to the minimal circle loading trigger element.\r\n */\r\n @ViewChild(\"minimalCircleLoadingTrigger\")\r\n minimalCircleLoadingTrigger: ElementRef;\r\n /**\r\n * ContentChild reference to the CardTitle template.\r\n */\r\n @ContentChild(\"CardTitle\") CardTitle: TemplateRef<void>;\r\n /**\r\n * ContentChild reference to the CardExtraControls template.\r\n */\r\n @ContentChild(\"CardExtraControls\") CardExtraControls: TemplateRef<void>;\r\n\r\n\r\n // Input properties\r\n\r\n /**\r\n * The title text to be displayed in the card header.\r\n */\r\n @Input()\r\n set Title(value: string) {\r\n this._titleText = value;\r\n }\r\n get Title() {\r\n return this._titleText;\r\n }\r\n\r\n /**\r\n * The type of the card (e.g., default, bordered, minimal).\r\n * Default: \"default\"\r\n */\r\n @Input()\r\n set Type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card has a minimal header or not.\r\n * Default: false\r\n */\r\n @Input()\r\n set MinimalHeader(value: boolean) {\r\n this._minimalHeader = value;\r\n }\r\n\r\n /**\r\n * The type of progress indicator to be displayed in the card (e.g., circle, bar, none).\r\n * Default: \"circle\"\r\n */\r\n @Input()\r\n set ProgressType(value: string) {\r\n this._progressType = value;\r\n }\r\n\r\n /**\r\n * The color of the progress indicator in the card.\r\n */\r\n @Input()\r\n set ProgressColor(value: string) {\r\n this._progressColor = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a refresh button or not.\r\n */\r\n @Input()\r\n set Refresh(value: boolean) {\r\n this._refresh = value;\r\n }\r\n\r\n /**\r\n * The color of the refresh button in the card (e.g., light, dark).\r\n * Default: \"light\"\r\n */\r\n @Input()\r\n set RefreshColor(value: string) {\r\n this._refreshColor = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a maximize button or not.\r\n */\r\n @Input()\r\n set Maximize(value: boolean) {\r\n this._maximize = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a close button or not.\r\n */\r\n @Input()\r\n set Close(value: boolean) {\r\n this._close = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a toggle button or not.\r\n */\r\n @Input()\r\n set Toggle(value: boolean) {\r\n this._toggle = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card header.\r\n */\r\n @Input()\r\n set HeaderClass(value: string) {\r\n this._extraHeaderClass = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card body.\r\n */\r\n @Input()\r\n set BodyClass(value: string) {\r\n this._extraBodyClass = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card.\r\n */\r\n @Input()\r\n set AdditionalClasses(value: string) {\r\n this._additionalClasses = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the tools (e.g., refresh, close, maximize) are shown in the card header or not.\r\n */\r\n @Input()\r\n set Controls(value: boolean) {\r\n this._showTools = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the message in the card is visible or not.\r\n */\r\n @Input()\r\n set ShowMessage(value: boolean) {\r\n this._messageVisible = value;\r\n }\r\n\r\n /**\r\n * The message text to be displayed in the card.\r\n */\r\n @Input()\r\n set Message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the loading indicator is shown in the card or not.\r\n */\r\n @Input()\r\n set Loading(value: boolean) {\r\n this._isLoading = value;\r\n }\r\n\r\n /**\r\n * The timeout duration for the loading indicator (in milliseconds).\r\n * If set to 0, the loading indicator will be displayed indefinitely until manually dismissed.\r\n * Default: 0\r\n */\r\n @Input()\r\n set TimeOut(value: number) {\r\n this._timeout = value;\r\n }\r\n\r\n /**\r\n * The border style of the card.\r\n */\r\n @Input()\r\n set CardBorderStyle(value: string) {\r\n this._card_border_style = value;\r\n }\r\n\r\n\r\n // Output properties\r\n\r\n /**\r\n * Event emitted when the refresh button is clicked.\r\n */\r\n @Output() onRefresh: EventEmitter<void> = new EventEmitter();\r\n\r\n // Other methods and lifecycle hooks\r\n\r\n /**\r\n * Toggles the collapsed state of the card.\r\n */\r\n toggle(): void {\r\n this._isCollapsed = this._isCollapsed === true ? false : true;\r\n }\r\n\r\n /**\r\n * Maximizes or restores the card to its original position.\r\n */\r\n maximize(): void {\r\n let nativeElement = this._hostContent.nativeElement;\r\n if (this._isMaximixed) {\r\n this._isMaximixed = false;\r\n nativeElement.style.left = null;\r\n nativeElement.style.top = null;\r\n } else {\r\n this._isMaximixed = true;\r\n let pagecontainer: Element = document.querySelector(\".content\") ?? new Element();\r\n console.log(pagecontainer);\r\n let rect = pagecontainer.getBoundingClientRect();\r\n let elementRect = nativeElement.getBoundingClientRect();\r\n let style = window.getComputedStyle(pagecontainer);\r\n\r\n nativeElement.style.left =\r\n parseFloat(style[\"marginLeft\"]) +\r\n parseFloat(style[\"paddingLeft\"]) +\r\n rect.left +\r\n \"px\";\r\n nativeElement.style.top =\r\n parseFloat(style[\"padding-top\"]) + rect.top + \"px\";\r\n }\r\n }\r\n\r\n /**\r\n * Dismisses the message in the card.\r\n */\r\n alertDismiss(): void {\r\n this._messageVisible = false;\r\n }\r\n\r\n /**\r\n * Triggers the refresh action of the card.\r\n */\r\n refresh(): void {\r\n if (!this._isLoading) {\r\n this._isLoading = true;\r\n this.onRefresh.emit();\r\n }\r\n if (this._timeout > 0) {\r\n setTimeout(() => {\r\n this._isLoading = false;\r\n }, this._timeout);\r\n }\r\n }\r\n\r\n /**\r\n * Closes the card.\r\n */\r\n close(): void {\r\n this._close_card = true;\r\n }\r\n}\r\n","<div class=\"card card-{{ _type }} {{ _additionalClasses }}\" *ngIf=\"!_close_card\" [class.card-collapsed]=\"_isCollapsed\"\r\n [class.card-maximized]=\"_isMaximixed\" #hostContent class=\"col-sm-12 col-md-6 col-lg-4\"\r\n [ngStyle]=\"{'border': _card_border_style}\">\r\n <div class=\"card-header {{ _extraHeaderClass }}\">\r\n <div class=\"card-title\">\r\n <ng-template [ngTemplateOutlet]=\"CardTitle\"></ng-template>\r\n </div>\r\n <div class=\"card-controls\" *ngIf=\"_showTools == true\">\r\n <ng-template [ngTemplateOutlet]=\"CardExtraControls\"></ng-template>\r\n <ul *ngIf=\"_minimalHeader == false; else minimalBlock\">\r\n <li *ngIf=\"_toggle == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-collapse\" (click)=\"toggle()\"><i\r\n class=\"pg pg-arrow_maximize\" [class.pg-arrow_minimize]=\"_isCollapsed\"></i></a>\r\n </li>\r\n <li *ngIf=\"_refresh == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-refresh\" (click)=\"refresh()\"><i\r\n class=\"card-icon card-icon-refresh\"></i></a>\r\n </li>\r\n <li *ngIf=\"_maximize == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-maximize\" (click)=\"maximize()\"><i\r\n class=\"card-icon card-icon-maximize\"></i></a>\r\n </li>\r\n <li *ngIf=\"_close == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-close\" (click)=\"close()\"><i\r\n class=\"card-icon card-icon-close\"></i></a>\r\n </li>\r\n </ul>\r\n <!-- <ng-template #minimalBlock>\r\n <ul>\r\n <li>\r\n <a href=\"javascript:void(0);\" (click)=\"refresh()\" class=\"card-refresh minimal\"\r\n [class.refreshing]=\"_isLoading\">\r\n <i #minimalCircleLoadingTrigger class=\"card-icon card-icon-refresh-lg-{{\r\n _refreshColor == 'light' ? 'white' : 'master'\r\n }}\" [class.fade]=\"_isLoading\"></i>\r\n <i #minimalCircleLoading class=\"card-icon-refresh-lg-white-animated\"\r\n style=\"position: absolute;top:0;left:0\" [class.active]=\"_isLoading\"\r\n [class.hide]=\"_isLoading != true\"></i>\r\n </a>\r\n </li>\r\n </ul>\r\n </ng-template> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body {{ _extraBodyClass }}\" [@collapseState]=\"_isCollapsed == true ? 'inactive' : 'active'\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"_messageVisible == true\" class=\"pgn-wrapper\" data-position=\"top\">\r\n <div class=\"pgn pgn-bar push-on-sidebar-open\">\r\n <div class=\"alert alert-danger\">\r\n <span>{{ _message }}</span><button class=\"close\" (click)=\"alertDismiss()\" type=\"button\">\r\n <span aria-hidden=\"true\">×</span><span class=\"sr-only\">{{ 'Close' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"_messageVisible == true\" class=\"card-progress\" [style.backgroundColor]=\"\r\n _minimalHeader ? 'rgba(0,0,0, 0.6)' : 'rgba(255, 255, 255, 0.8)'\r\n \" style=\" display: block;\"></div>\r\n <div [@fadeAnimation]=\"_isLoading\" class=\"card-progress\" [style.backgroundColor]=\"\r\n _minimalHeader ? 'rgba(0,0,0, 0.6)' : 'rgba(255, 255, 255, 0.8)'\r\n \" style=\"display: block;pointer-events: none\">\r\n <mefdev-progress *ngIf=\"_minimalHeader == false\" type=\"{{ _progressType }}\" color=\"{{ _progressColor }}\"\r\n indeterminate=\"true\" class=\"\"></mefdev-progress>\r\n </div>\r\n</div>","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/**\r\n * Component for displaying a card with a title, image, and description.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-card>\r\n * <ng-template #card_title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * <ng-template #card_footer>\r\n * <!-- Content for the card footer -->\r\n * </ng-template>\r\n * </mefdev-card>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class CardComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the content of the card title.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card>\r\n * <ng-template #card_title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * </mefdev-card>\r\n * ```\r\n */\r\n @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the content of the card footer.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card>\r\n * <ng-template #card_footer>\r\n * <!-- Content for the card footer -->\r\n * </ng-template>\r\n * </mefdev-card>\r\n * ```\r\n */\r\n @ContentChild(\"card_footer\") card_footer: TemplateRef<void>;\r\n\r\n /**\r\n * The type of the card.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [card_type] = \"'type'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() card_type: string;\r\n\r\n /**\r\n * The path to the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [img] = \"'img/path/img.png'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() img: string;\r\n\r\n /**\r\n * The path, where user goes after click at the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [imgUrl] = \"'Img.url'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() imgUrl: string;\r\n\r\n /**\r\n * The description of the card.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [description] = \"'description'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() description: string;\r\n\r\n\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Event handler for image click.\r\n * Navigates to the specified URL.\r\n */\r\n public imgClick(){\r\n this.router.navigate(['/', this.imgUrl.toString()])\r\n }\r\n\r\n}\r\n","<mefdev-inner-card\r\n MinimalHeader=\"true\"\r\n TimeOut=\"2500\"\r\n [Refresh]=\"false\"\r\n [Close]=\"false\">\r\n\r\n <ng-template #CardTitle>\r\n <ng-template class=\"card-title body-1\" [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n </ng-template>\r\n\r\n <div class=\"plugin-type\">\r\n {{ card_type }}\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"m-l-2 card-description\">\r\n <div *ngIf=\"!description || description == ''\" class=\"card-no-description\"> {{'No plugin description'}}</div>\r\n <p>\r\n {{description}}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"col-12 mt-3 text-center card-img\"\r\n [ngStyle]=\"{'background-color': img ? 'transparent' : '#fff'}\">\r\n <div *ngIf=\"!img || img == ''\">\r\n <img src=\"assets/images/md_icon.png\"\r\n style=\"max-width: 110px; max-height: 110px;\"/>\r\n </div>\r\n <div *ngIf=\"img\">\r\n <img src=\"{{img}}\" alt=\"\" class=\"image-responsive-height img-middle\"\r\n style=\"max-width: 260px; max-height: 150px;\"\r\n onclick=\"imgClick()\"\r\n />\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row mb-3 mt-3\">\r\n <div class=\"col-12\">\r\n <ng-template [ngTemplateOutlet]=\"card_footer\"></ng-template>\r\n </div>\r\n </div>\r\n</mefdev-inner-card>\r\n","export enum CartTypeColors {\r\n UNSET = 'UNSET',\r\n RED = 'RED',\r\n GREEN = 'GREEN'\r\n }","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { CartTypeColors } from './cart-type-colors.enum';\r\n\r\n /**\r\n * Component for displaying a long card with a title, parameters, and description.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-card-long\r\n * [type_text]=\"'Type Text'\"\r\n * [type_color]=\"CartTypeColors.RED\"\r\n * [img]=\"'path/to/image.jpg'\"\r\n * [imgUrl]=\"'path/to/image'\"\r\n * [description]=\"'Card description'\">\r\n *\r\n * <ng-template #title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n\r\n * <ng-template #params>\r\n * <!-- Content for the card parameters -->\r\n * </ng-template>\r\n\r\n * <ng-template #second_col>\r\n * <!-- Content for the second column -->\r\n * </ng-template>\r\n\r\n * <ng-template #third_col>\r\n * <!-- Content for the third column -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card_long</example-url>\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-card-long',\r\n templateUrl: './card-long.component.html',\r\n styleUrls: ['./card-long.component.scss']\r\n})\r\nexport class CardLongComponent implements OnInit {\r\n\r\n /**\r\n * Template for displaying the title of the card.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"title\") title: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the parameters of the card.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #params>\r\n * <!-- Content for the card params -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"params\") params: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the second column.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #second_col>\r\n * <!-- Content for the card second column -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"second_col\") second_col: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the third column.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #third_col>\r\n * <!-- Content for the card third column -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"third_col\") third_col: TemplateRef<void>;\r\n\r\n\r\n /**\r\n * The text for the card type.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long type_text = \"'Type'\"></<mefdev-card-long>\r\n * ```\r\n */\r\n @Input() type_text: string;\r\n\r\n /**\r\n * The color of the card type.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long type_color = \"'RED'\"></<mefdev-card-long>\r\n * ```\r\n * Colors: RED, UNSET, GREEN\r\n\r\n */\r\n @Input() type_color: CartTypeColors = CartTypeColors.UNSET;\r\n\r\n /**\r\n * The path to the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long [img] = \"'img/path/img.png'\"></mefdev-card-long>\r\n * ```\r\n */\r\n @Input() img: string;\r\n\r\n /**\r\n * The path, where user goes after click at the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long [imgUrl] = \"'Img.url'\"></mefdev-card-long>\r\n * ```\r\n */\r\n @Input() imgUrl: string;\r\n\r\n /**\r\n * The description of the card.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long [description] = \"'description'\"></mefdev-card-long>\r\n * ```\r\n */\r\n @Input() description: string;\r\n\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Event handler for image click.\r\n * Navigates to the specified URL.\r\n */\r\n public imgClick(){\r\n this.router.navigate(['/', this.imgUrl.toString()])\r\n }\r\n\r\n}\r\n","<mefdev-inner-card\r\n MinimalHeader=\"true\"\r\n TimeOut=\"2500\"\r\n [Refresh]=\"false\"\r\n [Close]=\"false\"\r\n>\r\n\r\n <ng-template #CardTitle>\r\n <ng-template class=\"card-title\" [ngTemplateOutlet]=\"title\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #CardExtraControls>\r\n <div class=\"plugin-type\"\r\n [ngClass]=\"{\r\n 'b-color-Light-Gray-1': type_color === 'UNSET',\r\n 'b-color-Red': type_color === 'RED',\r\n 'b-color-Green': type_color === 'GREEN'}\">\r\n {{type_text}}\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"row h-100 m-b-10\">\r\n <div class=\"col-lg-3 col-12 card-col\">\r\n <div class=\"row\">\r\n <div class=\"col-12 card-img m-b-10\">\r\n <div *ngIf=\"!img || img == ''\">\r\n <img src=\"assets/images/md_icon.png\"\r\n style=\"max-width: 110px; max-height: 110px;\"/>\r\n </div>\r\n <div *ngIf=\"img\">\r\n <img src=\"{{img}}\" alt=\"\" class=\"image-responsive-height img-middle\"\r\n height=\"110px\"\r\n style=\"max-width: 110px; max-height: 110px;\"\r\n onclick=\"imgClick()\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 m-t-2 body-6 text-dark params-block\">\r\n <ng-template [ngTemplateOutlet]=\"params\"></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-5 col-12 card-col\">\r\n <ng-template [ngTemplateOutlet]=\"second_col\"></ng-template>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-12 card-col mt-lg-0 mt-5\">\r\n <ng-template [ngTemplateOutlet]=\"third_col\"></ng-template>\r\n </div>\r\n\r\n </div>\r\n</mefdev-inner-card>\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n/**\r\n * Component for displaying a simple card with a title.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-card-simple [disabled]=\"true\">\r\n * <ng-template #card_title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * </mefdev-card-simple>\r\n *```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card_simple</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-card-simple',\r\n templateUrl: './card-simple.component.html',\r\n styleUrls: ['./card-simple.component.scss']\r\n})\r\nexport class CardSimpleComponent implements OnInit {\r\n\r\n /**\r\n * Determines whether the card is disabled or not.\r\n */\r\n @Input(\"disabled\") isDisabled: boolean = false;\r\n\r\n /**\r\n * Template for displaying the title of the card.\r\n *```\r\n * <mefdev-card-simple>\r\n * <ng-template #card_title>\r\n * <h3>Card Title</h3>\r\n * </ng-template>\r\n * </mefdev-card-simple>\r\n *```\r\n */\r\n @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"card-simple\" [ngClass]=\"{ 'unused-block':isDisabled }\">\r\n <div class=\"row m-2 body-1\" *ngIf=\"card_title\">\r\n <div class=\"col-12\">\r\n <ng-template [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row m-2\">\r\n <div class=\"col-12\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class ProgressConfig {\r\n color = \"primary\";\r\n thickness = 1;\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\r\n\r\nimport { MefDevProgressComponent } from \"./progress.component\";\r\nimport { ProgressConfig } from \"./progress.config\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [MefDevProgressComponent],\r\n exports: [MefDevProgressComponent]\r\n})\r\nexport class MefDevProgressModule {\r\n static forRoot(): ModuleWithProviders<MefDevProgressModule> {\r\n return { ngModule: MefDevProgressModule, providers: [ProgressConfig] };\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\r\nimport { MefdevInnerCard } from \"./card.components\";\r\nimport { MefDevProgressModule } from \"../progress/progress.module\";\r\n\r\n@NgModule({\r\n declarations: [MefdevInnerCard],\r\n exports: [MefdevInnerCard],\r\n imports: [CommonModule, MefDevProgressModule]\r\n})\r\nexport class MefdevInnerCardModule {\r\n static forRoot(): ModuleWithProviders<MefdevInnerCardModule> {\r\n return {\r\n ngModule: MefdevInnerCardModule\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CardComponent } from './card/card.component';\r\nimport { MefDevSelectModule } from '../../pg-components/select/select.module';\r\nimport { MefdevInnerCardModule } from \"./../../pg-components/card/card.module\";\r\nimport { MefDevCollapseModule } from '../collapse/collapse.module';\r\nimport { CardLongComponent } from './card-long/card-long.component';\r\nimport { CardSimpleComponent } from './card-simple/card-simple.component';\r\n\r\nexport const mefDevCardComponents = [CardComponent, CardLongComponent, CardSimpleComponent];\r\n@NgModule({\r\n declarations: mefDevCardComponents,\r\n exports: mefDevCardComponents,\r\n imports: [\r\n CommonModule,\r\n MefDevCollapseModule,\r\n\t\tMefDevSelectModule,\r\n MefdevInnerCardModule,\r\n ]\r\n})\r\nexport class MefDevCardModule { }\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n/**\r\n * Fill Component for a modal window.\r\n *\r\n * Example of usage:\r\n * ```\r\n * <mefdev-fill-modal #pin_modal>\r\n * <!-- Modal header content -->\r\n * <ng-template #modal_header>\r\n * <!-- Header content goes here -->\r\n * </ng-template>\r\n *\r\n * <!-- Modal footer content -->\r\n * <ng-template #modal_footer>\r\n * <!-- Footer content goes here -->\r\n * </ng-template>\r\n * </mefdev-fill-modal>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/fill</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-fill-modal',\r\n templateUrl: './fill.component.html',\r\n styleUrls: ['./fill.component.scss'],\r\n animations: [\r\n trigger('dialog', [\r\n transition('void => *', [\r\n style({ transform: 'scale3d(.3, .3, .3)' }),\r\n animate(100)\r\n ]),\r\n transition('* => void', [\r\n animate(100, style({ transform: 'scale3d(.0, .0, .0)' }))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class FillComponent implements OnInit {\r\n protected visible: boolean = false;\r\n\r\n @ViewChild('dialog', { static: false }) protected dialog?: ElementRef;\r\n\r\n\r\n /**\r\n * The header template of the modal window.\r\n * ```\r\n * <mefdev-fill-modal #pin_modal>\r\n * <ng-template #modal_header>\r\n * <!-- Header content goes here -->\r\n * </ng-template>\r\n * </mefdev-fill-modal>\r\n * ```\r\n */\r\n @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n /**\r\n * The footer template of the modal window.\r\n * ```\r\n * <mefdev-fill-modal #pin_modal>\r\n * <ng-template #modal_footer>\r\n * <!-- Footer content goes here -->\r\n * </ng-template>\r\n * </mefdev-fill-modal>\r\n * ```\r\n */\r\n @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n\r\n /**\r\n * Input parameter that determines whether to show the modal window.\r\n */\r\n @Input() set show(val: boolean){\r\n if(val){\r\n this.showModal();\r\n }\r\n else{\r\n this.hideModal();\r\n }\r\n };\r\n\r\n /**\r\n * Event emitted when the modal is change state.\r\n * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n * Example:\r\n * ```\r\n * <mefdev-fill-modal (visibleChange)=\"onModalClosed($event)\"></mefdev-fill-modal>\r\n * ```\r\n */\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Shows the modal state.\r\n * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n */\r\n getModalState(): boolean{\r\n return this.visible;\r\n }\r\n\r\n /**\r\n * Shows the modal.\r\n * Call this method to open the modal window.\r\n */\r\n public showModal(){\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n /**\r\n * Hides the modal.\r\n * Call this method to close the modal window.\r\n */\r\n public hideModal(){\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","<button *ngIf=\"visible\" (click)=\"hideModal()\" aria-label=\"Close\" class=\"dialog__close-btn\">X</button>\r\n<div [@dialog] *ngIf=\"visible\" class=\"dialog\" #dialog>\r\n\t<div class=\"modal-content\">\r\n <div class=\"modal-header clearfix text-left\">\r\n <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ModalSize } from '../modal-size.enum';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n /**\r\n * A component representing a slide-up modal window.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-slide-up-modal [show]=\"showModal\">\r\n * <ng-template #modal_header>\r\n * <h4>Modal Header</h4>\r\n * </ng-template>\r\n * <ng-template #modal_footer>\r\n * <button (click)=\"closeModal()\">Close</button>\r\n * </ng-template>\r\n * <div class=\"modal-body\">\r\n * Content goes here...\r\n * </div>\r\n * </mefdev-slide-up-modal>\r\n * ```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/slide_up</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-slide-up-modal',\r\n templateUrl: './slide-up.component.html',\r\n styleUrls: ['./slide-up.component.scss'],\r\n animations: [\r\n trigger('dialog', [\r\n transition('void => *', [\r\n style({ transform: 'scale3d(.3, .3, .3)' }),\r\n animate(100)\r\n ]),\r\n transition('* => void', [\r\n animate(100, style({ transform: 'scale3d(.0, .0, .0)' }))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class SlideUpComponent implements OnInit {\r\n protected visible: boolean = false;\r\n /**\r\n * Reference to the template for the modal header.\r\n * Use this template to customize the header of the modal.\r\n */\r\n @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n /**\r\n * Reference to the template for the modal footer.\r\n * Use this template to customize the footer of the modal.\r\n */\r\n @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n /**\r\n * Flag indicating whether the modal should be shown or hidden.\r\n * Set it to `true` to show the modal and `false` to hide it.\r\n */\r\n @Input() set show(val: boolean){\r\n if(val){\r\n this.showModal();\r\n }\r\n else{\r\n this.hideModal();\r\n }\r\n };\r\n\r\n /**\r\n * Event emitted when the modal is change state.\r\n * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n */\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Shows the modal state.\r\n * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n */\r\n getModalState(): boolean{\r\n return this.visible;\r\n }\r\n\r\n /**\r\n * Shows the modal.\r\n * Call this method to open the modal window.\r\n */\r\n public showModal(){\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n /**\r\n * Hides the modal.\r\n * Call this method to close the modal window.\r\n */\r\n public hideModal(){\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","<div [@dialog] *ngIf=\"visible\" class=\"dialog\">\r\n\t<button (click)=\"hideModal()\" aria-label=\"Close\" class=\"dialog__close-btn\">X</button>\r\n\t<div class=\"modal-content\">\r\n <div class=\"modal-header clearfix text-left\">\r\n <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ModalSize } from '../modal-size.enum';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n/**\r\n * A component representing a slide-right modal window.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-slide-right-modal [size]=\"ModalSize.lg\" [show]=\"showModal\">\r\n * <ng-template #modal_header>\r\n * <h4>Modal Header</h4>\r\n * </ng-template>\r\n * <ng-template #modal_footer>\r\n * <button (click)=\"closeModal()\">Close</button>\r\n * </ng-template>\r\n * <div class=\"modal-body\">\r\n * Content goes here...\r\n * </div>\r\n * </mefdev-slide-right-modal>\r\n * ```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/slide_right</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-slide-right-modal',\r\n templateUrl: './slide-right.component.html',\r\n styleUrls: ['./slide-right.component.scss'],\r\n animations: [\r\n trigger('dialog', [\r\n transition('void => *', [\r\n style({ transform: 'translate3d(100%,0,0)' }),\r\n animate(100)\r\n ]),\r\n transition('* => void', [\r\n animate(100, style({ transform: 'translate3d(100%, 0, 0)' }))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class SlideRightComponent implements OnInit {\r\n protected visible: boolean = false;\r\n\r\n @ViewChild('dialog') protected dialog: ElementRef;\r\n\r\n /**\r\n * Reference to the template for the modal header.\r\n * Use this template to customize the header of the modal.\r\n */\r\n @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n /**\r\n * Reference to the template for the modal footer.\r\n * Use this template to customize the footer of the modal.\r\n */\r\n @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n\r\n /**\r\n * Size of the modal.\r\n * Defaults to `ModalSize.md`.\r\n * Possible values: `ModalSize.sm`, `ModalSize.md`, `ModalSize.lg`, `ModalSize.xl`.\r\n */\r\n @Input() size:ModalSize = ModalSize.md;\r\n\r\n /**\r\n * Flag indicating whether the modal should be shown or hidden.\r\n * Set it to `true` to show the modal and `false` to hide it.\r\n */\r\n @Input() set show(val: boolean){\r\n if(val){\r\n this.showModal();\r\n }\r\n else{\r\n this.hideModal();\r\n }\r\n };\r\n\r\n /**\r\n * Event emitted when the modal is change state.\r\n * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n * Example:\r\n * ```\r\n * <mefdev-fill-modal (visibleChange)=\"onModalClosed($event)\"></mefdev-fill-modal>\r\n * ```\r\n */\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Shows the modal state.\r\n * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n */\r\n getModalState(): boolean{\r\n return this.visible;\r\n }\r\n\r\n /**\r\n * Shows the modal.\r\n * Call this method to open the modal window.\r\n */\r\n public showModal(){\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n /**\r\n * Hides the modal.\r\n * Call this method to close the modal window.\r\n */\r\n public hideModal(){\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","<div [@dialog] *ngIf=\"visible\" class=\"dialog\" #dialog>\r\n\r\n <div *ngIf=\"modal_header\" class=\"header\">\r\n <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n </div>\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"modal_footer\" class=\"footer\">\r\n <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FilteredFieldService } from '../../utils/filtered-field/filtered-field.service';\r\n\r\n\r\n/**\r\n * Component representing the right filter.\r\n */\r\n@Component({\r\n selector: 'mefdev-right-filter',\r\n templateUrl: './right-filter.component.html',\r\n styleUrls: ['./right-filter.component.scss']\r\n})\r\nexport class RightFilterComponent implements OnInit {\r\n\r\n /**\r\n * Flag indicating whether the right filter is open or closed.\r\n */\r\n isOpen: boolean = false;\r\n \r\n @Input() showStandartOpenButton: boolean = true;\r\n\r\n constructor(\r\n private filteredFieldService: FilteredFieldService,) { }\r\n\r\n ngOnInit(): void {\r\n // Subscribe to the open filter event from the FilteredFieldService\r\n // and update the isOpen flag accordingly.\r\n this.filteredFieldService.getOpenFilter().subscribe(() => {\r\n this.isOpen = true;\r\n });\r\n }\r\n\r\n /**\r\n * Opens or closes the right filter modal.\r\n */\r\n openModal(){\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n /**\r\n * Event handler for when the modal is closed.\r\n * Sets the isOpen flag to false.\r\n */\r\n modalIsCloused(){\r\n this.isOpen = false;\r\n }\r\n \r\n}\r\n","<div \r\n*ngIf=\"showStandartOpenButton\"\r\nclass=\"filter-btn\" \r\n(click)=\"openModal()\"\r\n>\r\n <i class=\"fa fa-filter\" aria-hidden=\"true\"></i>\r\n</div>\r\n\r\n<mefdev-slide-right-modal [show]=\"isOpen\" (isClouse)=\"modalIsCloused()\">\r\n <ng-content></ng-content>\r\n</mefdev-slide-right-modal>","import { NgModule } from \"@angular/core\";\r\nimport { FillComponent } from './fill/fill.component';\r\nimport { SlideUpComponent } from './slide-up/slide-up.component';\r\nimport { SlideRightComponent } from './slide-right/slide-right.component';\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { RightFilterComponent } from \"./right-filter/right-filter.component\";\r\nimport { MefDevSelectModule } from '../../pg-components/select/select.module';\r\n\r\n\r\nlet mefDevModalModuleComponents = [\r\n FillComponent,\r\n SlideUpComponent,\r\n SlideRightComponent,\r\n RightFilterComponent\r\n];\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MefDevSelectModule\r\n ],\r\n exports: mefDevModalModuleComponents,\r\n declarations: mefDevModalModuleComponents\r\n})\r\nexport class MefDevModalModule {}\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n/**\r\n * A component representing a user profile.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-profile\r\n * [name]=\"'John Doe'\"\r\n * [img]=\"'assets/profile.png'\"\r\n * [shortDescription]=\"'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'\"\r\n * [header]=\"'User Profile'\"\r\n * [circleImg]=\"'true'\">\r\n * <ng-template #first_colum>\r\n * <!-- Content for the first column -->\r\n * </ng-template>\r\n * <ng-template #second_colum>\r\n * <!-- Content for the second column -->\r\n * </ng-template>\r\n * <ng-template #footer>\r\n * <!-- Content for the footer -->\r\n * </ng-template>\r\n * </mefdev-profile>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/profile</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.scss']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the content of the first column.\r\n *```\r\n * <ng-template #first_colum>\r\n * <!-- Content for the first column -->\r\n * </ng-template>\r\n *```\r\n */\r\n @ContentChild(\"first_colum\") first_colum: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the content of the second column.\r\n *```\r\n * <ng-template #second_colum>\r\n * <!-- Content for the second column -->\r\n * </ng-template>\r\n *```\r\n */\r\n @ContentChild(\"second_colum\") second_colum: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the content of the footer.\r\n *```\r\n * <ng-template #footer>\r\n * <!-- Content for the footer -->\r\n * </ng-template>\r\n *```\r\n */\r\n @ContentChild(\"footer\") footer: TemplateRef<void>;\r\n\r\n /**\r\n * The name of the user.\r\n * ```\r\n * <mefdev-profile [name]=\"'John Doe'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() name:string;\r\n\r\n /**\r\n * The URL of the user's profile image.\r\n * ```\r\n * <mefdev-profile [img]=\"'assets/profile.png'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() img: string = '';\r\n\r\n /**\r\n * A short description of the user.\r\n * ```\r\n * <mefdev-profile [shortDescription]=\"'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() shortDescription: string;\r\n\r\n /**\r\n * The header title of the profile component.\r\n * ```\r\n * <mefdev-profile [header]=\"'User Profile'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() header: string;\r\n\r\n /**\r\n * A flag indicating whether to display the profile image as a circle. Default \"false\".\r\n * ```\r\n * <mefdev-profile [circleImg]=\"'true'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() circleImg: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n get sizeStyle(){\r\n // return { 'width.px': this.width, 'height.px': this.height };\r\n /**\r\n * Returns the CSS style for the profile image size and shape.\r\n */\r\n if(!this.circleImg){\r\n return {};\r\n }\r\n\r\n return {\r\n 'border-top-left-radius': `50%`,\r\n 'border-top-right-radius': `50%`,\r\n 'border-bottom-right-radius': `50%`,\r\n 'border-bottom-left-radius': `50%`,\r\n };\r\n }\r\n}\r\n","<div class=\"row profile-page\">\r\n <div class=\"col-12 h3 mt-3\">\r\n {{header}}\r\n </div>\r\n <div class=\"col-xl-3 col-lg-3 col-md-4 col-sm-12\">\r\n <div *ngIf=\"!img || img == ''\" >\r\n <img src=\"assets/images/md_icon.png\" height=\"124\" width=\"220\" />\r\n </div>\r\n <div *ngIf=\"img\" >\r\n <img src=\"{{img}}\" alt=\"\" class=\"custom-img\" [ngStyle]=\"sizeStyle\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-xl-3 col-lg-4 col-md-5 col-sm-12 mt-4 mt-md-0\" >\r\n <div class=\"row profile-name\">\r\n <div class=\"col\">\r\n {{name}}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col profile-description\">\r\n {{shortDescription}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-xl-3 col-lg-4 col-md-5 col-sm-12 body-6 mt-4 mt-md-0\">\r\n <ng-template [ngTemplateOutlet]=\"first_colum\"></ng-template>\r\n </div>\r\n\r\n <div class=\"col-xl-3 col-lg-4 col-md-5 col-sm-12 body-6 mt-4 mt-md-0\" >\r\n <ng-template [ngTemplateOutlet]=\"second_colum\"></ng-template>\r\n </div>\r\n\r\n</div>\r\n<div style=\"position: relative;\">\r\n <div class=\"row profile-page-tabs\">\r\n <ng-template [ngTemplateOutlet]=\"footer\">\r\n </ng-template>\r\n </div>\r\n</div>\r\n","import { AfterViewChecked, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\n\r\n/**\r\n * A component representing a central page layout.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-central-page [width]=\"'80%'\">\r\n * Content goes here...\r\n * </mefdev-central-page>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/central_page</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-central-page',\r\n templateUrl: './central-page.component.html',\r\n styleUrls: ['./central-page.component.scss']\r\n})\r\nexport class CentralPageComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n /**\r\n * The width of the central page.\r\n * Defaults to '100%'.\r\n * You can specify the width using CSS units (e.g., '80%', '500px').\r\n */\r\n @Input() width: string = '100%';\r\n\r\n /**\r\n * Lifecycle hook called just before the component is destroyed.\r\n * Removes the height style from the main content element.\r\n */\r\n ngOnDestroy(): void {\r\n try{\r\n document.getElementById('dataMainContent')!.style.height = '';\r\n }catch(ex){};\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Lifecycle hook called after the component's view has been checked.\r\n * Sets the height of the main content element to '100%'.\r\n */\r\n ngAfterViewChecked(): void {\r\n try{\r\n document.getElementById('dataMainContent')!.style.height = '100%'\r\n }catch(ex){};\r\n }\r\n\r\n}\r\n","<div class=\"row align-items-center\" style=\"height: 100%;\" [ngStyle]=\"{'width': width}\">\r\n <div class=\"col\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n ","import { Component, OnInit } from '@angular/core';\r\n\r\n\r\n/**\r\n * A component representing a central page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-central-page>\r\n * <mefdev-central-page-row>\r\n * Content goes here...\r\n * </mefdev-central-page-row>\r\n * </mefdev-central-page>\r\n * ```\r\n*/\r\n@Component({\r\n selector: 'mefdev-central-page-row',\r\n templateUrl: './central-page-row.component.html',\r\n styleUrls: ['./central-page-row.component.scss']\r\n})\r\nexport class CentralPageRowComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"row justify-content-center\">\r\n <ng-content></ng-content>\r\n</div>","import { Component, ContentChild, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n /**\r\n * A component representing a table page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-table-page>\r\n * <ng-template #filter_colum>\r\n * <!-- Content for the filter column -->\r\n * </ng-template>\r\n * </mefdev-table-page>\r\n * ```\r\n * \r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/table_page</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-table-page',\r\n templateUrl: './table-page.component.html',\r\n styleUrls: ['./table-page.component.scss']\r\n})\r\nexport class TablePageComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the content of the filter column.\r\n * ```\r\n * <ng-template #filter_colum>\r\n * <!-- Content for the filter column -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild(\"filter_colum\") filter_colum: TemplateRef<void>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12 filter-colum\">\r\n <ng-template [ngTemplateOutlet]=\"filter_colum\"></ng-template> \r\n </div>\r\n</div>\r\n\r\n<div class=\"table-responsive\" >\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n /**\r\n * A component representing a manage page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-manage-page [startTabInd]=\"0\">\r\n * <ng-template #card_title>\r\n * Title of the card\r\n * </ng-template>\r\n * <ng-template #tabs_block>\r\n * Content of the tabs block\r\n * </ng-template>\r\n * </mefdev-manage-page>\r\n * ```\r\n *\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/manage_page</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-manage-page',\r\n templateUrl: './manage-page.component.html',\r\n styleUrls: ['./manage-page.component.scss']\r\n})\r\nexport class ManagePageComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the card title.\r\n * ```\r\n * <mefdev-manage-page>\r\n * <ng-template #card_title>\r\n * Title of the card\r\n * </ng-template>\r\n * </mefdev-manage-page>\r\n * ```\r\n */\r\n @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the tabs block.\r\n * ```\r\n * <mefdev-manage-page>\r\n * <ng-template #tabs_block>\r\n * Content of the tabs block\r\n * </ng-template>\r\n * </mefdev-manage-page>\r\n * ```\r\n */\r\n @ContentChild(\"tabs_block\") tabs_block: TemplateRef<void>;\r\n\r\n /**\r\n * The index of the starting tab.\r\n * ```\r\n * <mefdev-manage-page [startTabInd]=\"0\">\r\n * Content goes here...\r\n * </mefdev-manage-page>\r\n * ```\r\n */\r\n @Input() startTabInd = 0;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"card-tabs\">\r\n <div class=\"row body-1 card-header\" *ngIf=\"card_title\">\r\n <div class=\"m-2\">\r\n <ng-template [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row profile-page-tabs\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ProfileComponent } from './profile/profile.component';\r\n// import { pgTabsModule } from '../../pg-components/tabs/tabs.module';\r\nimport { CentralPageComponent } from './central-page/central-page.component';\r\nimport { CentralPageRowComponent } from './central-page-row/central-page-row.component';\r\nimport { TablePageComponent } from './table-page/table-page.component';\r\nimport { ManagePageComponent } from './manage-page/manage-page.component';\r\n\r\nlet mefDevPageLayoutsModuleComponents = [\r\n ProfileComponent,\r\n CentralPageComponent,\r\n CentralPageRowComponent,\r\n TablePageComponent,\r\n ManagePageComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: mefDevPageLayoutsModuleComponents,\r\n exports: mefDevPageLayoutsModuleComponents,\r\n imports: [\r\n CommonModule,\r\n\t\t// pgTabsModule,\r\n ],\r\n})\r\nexport class MefDevPageLayoutsModule { }\r\n","import { Component, Input } from '@angular/core';\r\n\r\n/**\r\n * @ignore\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-stage',\r\n templateUrl: './stage.component.html',\r\n styleUrls: ['./stage.component.scss'],\r\n})\r\n\r\nexport class StageComponent {\r\n\r\n @Input() currentExecutorStep: number;\r\n @Input() isRightModal: boolean;\r\n @Input() isCompleted: boolean;\r\n @Input() title: string;\r\n\r\n}\r\n","<div class=\"step\">\r\n <ng-container *ngIf=\"!isCompleted else done\">\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" [ngStyle]=\"isRightModal ? { 'fill': '#FFFFFF' } : { 'fill': '#F3F3F3' }\">\r\n <rect width=\"36\" height=\"36\" rx=\"18\" />\r\n <text class=\"body-3\" x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" font-size=\"16\" fill=\"black\">\r\n {{ currentExecutorStep }}\r\n </text>\r\n </svg>\r\n <div class=\"body-6 descriptionStepText\" *ngIf=\"!isRightModal\">\r\n {{ title }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n<ng-template #done>\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.5\" y=\"0.5\" width=\"35\" height=\"35\" rx=\"17.5\" stroke=\"#929292\"/>\r\n <path d=\"M24.7373 10L14.5466 20.3769L11.2415 17.0114L8 20.3122L11.3051 23.6777L14.5678 27L17.8093 23.6992L28 13.3224L24.7373 10Z\"\r\n fill=\"#28B446\"/>\r\n </svg>\r\n <span class=\"body-6 descriptionStepText\" *ngIf=\"!isRightModal\">\r\n {{ title }}\r\n </span>\r\n</ng-template>\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component,\r\n ContentChild, ElementRef, EventEmitter,\r\n Input, Output, Renderer2,\r\n TemplateRef, ViewChild\r\n} from '@angular/core';\r\nimport { MefdevExecutorPageComponent } from '../mefdev-executor-page/mefdev-executor-page.component';\r\n\r\n/**\r\n * Wrapper component that represents a specific encapsulated executor.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-step-executor #mainExecutor [view]=\"'regular'\">\r\n *\r\n * <ng-template #title>\r\n * <!-- Content for the executor title -->\r\n * </ng-template>\r\n * <ng-template #description>\r\n * <!-- Content for the executor description -->\r\n * </ng-template>\r\n *\r\n * <mefdev-executor-page\r\n * [title]=\"'Description of situation 1'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 0\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 0\">\r\n * <!-- Content of the first executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Description of situation 2'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 1\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 1\">\r\n * <!-- Content of the second executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Description of situation 3'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 2\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 2\">\r\n * <!-- Content of the third executor step -->\r\n * </mefdev-executor-page>\r\n *\r\n * <ng-template #footer>\r\n * <!-- Content for the executor footer -->\r\n * <ng-template>\r\n *\r\n * </mefdev-step-executor>\r\n *\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/main_executor</example-url>\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-step-executor',\r\n templateUrl: './step-executor.component.html',\r\n styleUrls: ['./step-executor.component.scss']\r\n})\r\n\r\nexport class StepExecutorComponent implements AfterViewInit {\r\n\r\n /**\r\n * Mandatory input parameter that specifies the type of the step-by-step wizard.\r\n * It can have three options: regular, modal, right.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor #mainExecutor [view]=\"'regular'\"></mefdev-step-executor>\r\n * ```\r\n */\r\n @Input({required: true}) view: string;\r\n\r\n\r\n /**\r\n * An optional input parameter that specifies whether to show your executor.\r\n * Usually used when you have a slideup or right executor view\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor [show]=\"true\" [view]=\"'right'\" #mainExecutor></mefdev-step-executor>\r\n * ```\r\n */\r\n @Input() show: boolean;\r\n\r\n\r\n /**\r\n * ViewChild reference to the host executor content.\r\n */\r\n @ViewChild('container') container: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Template for displaying the content of the executor title.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <ng-template #title>\r\n * <!-- Content for the executor title -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild('title') title: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the executor description.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <ng-template #description>\r\n * <!-- Content for the executor description -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild('description') description: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the executor footer.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <ng-template #footer>\r\n * <!-- Content for the executor footer -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild('footer') footer: TemplateRef<void>;\r\n\r\n /**\r\n * The output parameter that emits the class of the active page - active step.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor #mainExecutor (onActivePageChange)=\"getActiveStep($event)\"></mefdev-step-executor>\r\n * ```\r\n */\r\n @Output() onActivePageChange: EventEmitter<MefdevExecutorPageComponent> = new EventEmitter<MefdevExecutorPageComponent>();\r\n\r\n /**\r\n * An output parameter that conveys the current state of the stepper in modal view\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor [view]=\"'modal'\" (modalStepExecutorStateChange)=\"getModalExecutorStateValue($event)\" #modalExecutor></mefdev-step-executor>\r\n * ```\r\n */\r\n @Output() modalStepExecutorStateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /**\r\n * An output parameter that conveys the current state of the stepper in right view\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor [view]=\"'right'\" (modalStepExecutorStateChange)=\"getModalExecutorStateValue($event)\" #rightExecutor></mefdev-step-executor>\r\n * ```\r\n */\r\n @Output() rightStepExecutorStateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public _activePageInd: number = 0;\r\n public pages: MefdevExecutorPageComponent[] = [];\r\n\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n public set activePageInd(activePageNumber: number) {\r\n this._activePageInd = activePageNumber;\r\n if (activePageNumber >= 0 && this.container) {\r\n if (this.container.nativeElement.innerHTML != '') {\r\n this.container.nativeElement.innerHTML = '';\r\n }\r\n this.renderer.appendChild(this.container.nativeElement, this.activePage?.elRef.nativeElement);\r\n this.onActivePageChange.emit(this.pages.find((el: MefdevExecutorPageComponent) => el.isActive));\r\n }\r\n }\r\n\r\n public get activePageInd(): number {\r\n return this._activePageInd;\r\n }\r\n\r\n get activePage(): MefdevExecutorPageComponent | null {\r\n return this.activePageInd == -1 ? null : this.pages[this.activePageInd];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer?.appendChild(this.container.nativeElement, this.activePage?.elRef.nativeElement);\r\n this.onActivePageChange.emit(this.pages.find((el: MefdevExecutorPageComponent) => el.isActive));\r\n }\r\n\r\n /**\r\n * A function that is allows to track the status of your executor in the modal view\r\n */\r\n modalStepExecutorVisibleChange(value: boolean) {\r\n if (this.view === 'modal') {\r\n this.show = value;\r\n this.modalStepExecutorStateChange.emit(value);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * A function that is allows to track the status of your executor in the right view\r\n */\r\n rightStepExecutorVisibleChange(value: boolean) {\r\n if (this.view === 'right') {\r\n this.show = value;\r\n this.rightStepExecutorStateChange.emit(value);\r\n }\r\n }\r\n\r\n /**\r\n * A function that allows you to close your executor\r\n */\r\n closeExecutor() {\r\n this.show = false;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Check whether there is a next step of the executor. If we are at the last step - disable the 'next' button\r\n */\r\n nextBtnIsDisabled(): boolean {\r\n return this._activePageInd === this.pages.length - 1;\r\n }\r\n\r\n /**\r\n * Check whether there is a next step of the executor. If we are at the last step - disable the 'next' button\r\n */\r\n prev(): void {\r\n const newPageInd = this.activePageInd - 1;\r\n if (newPageInd >= 0) {\r\n this.activePageInd = newPageInd;\r\n }\r\n }\r\n\r\n /**\r\n * Go back to the previous step\r\n */\r\n cancel(): void {\r\n this.activePageInd = 0;\r\n const newPageInd = this.activePageInd - 1;\r\n if (newPageInd >= 0) {\r\n this.activePageInd = newPageInd;\r\n }\r\n }\r\n\r\n /**\r\n * Go to the next step\r\n */\r\n next(): void {\r\n const newPageInd = this.activePageInd + 1;\r\n if (newPageInd < this.pages.length) {\r\n this.activePageInd = newPageInd;\r\n }\r\n }\r\n\r\n /**\r\n * Set a specific active page\r\n */\r\n setActivePage(pageNumber: number): void {\r\n pageNumber -= 1;\r\n if (pageNumber < this.pages.length && pageNumber >= 0) {\r\n this.activePageInd = pageNumber;\r\n }\r\n }\r\n\r\n /**\r\n * Add new page\r\n */\r\n addPage(page: MefdevExecutorPageComponent): void {\r\n this.pages.push(page);\r\n }\r\n\r\n /**\r\n * Delete a specific page\r\n */\r\n removeSpecificPage(page: MefdevExecutorPageComponent): void {\r\n const index: number = this.pages.indexOf(page);\r\n if (index !== -1) {\r\n this.pages.splice(index, 1);\r\n if (index === this.activePageInd) {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Delete a page by its index\r\n */\r\n removePageByIndex(index: number): void {\r\n if (index >= 0 && index < this.pages.length) {\r\n this.pages.splice(index, 1);\r\n if (index === this.activePageInd) {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<!--view == regular-->\r\n\r\n<div class=\"stepExecutorBlock\" *ngIf=\"view === 'regular'\">\r\n <header class=\"stepExecutorHeader\">\r\n <div class=\"stepExecutorHeaderText\">\r\n <h1 class=\"title\">\r\n <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n </h1>\r\n <p class=\"body-5\">\r\n <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n </p>\r\n </div>\r\n <div class=\"steps\">\r\n <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n [isRightModal]=\"false\"\r\n [title]=\"page.title\"\r\n [currentExecutorStep]=\"pageIndex + 1\"\r\n [isCompleted]=\"page.isCompleted\">\r\n </mefdev-stage>\r\n </div>\r\n </header>\r\n\r\n <div *ngIf=\"activePage\" class=\"executorChangeContent\">\r\n <div #container></div>\r\n </div>\r\n\r\n <div class=\"footerButtons\">\r\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n </div>\r\n</div>\r\n\r\n\r\n<!--view == modal-->\r\n\r\n<mefdev-slide-up-modal [show]=\"show\" (visibleChange)=\"modalStepExecutorVisibleChange($event)\" *ngIf=\"view === 'modal'\">\r\n <div class=\"modalStepExecutor\">\r\n\r\n <header class=\"modalHeader\">\r\n <div class=\"headerModalText\">\r\n <div class=\"textAndCloseButton\">\r\n <h1 class=\"title\">\r\n <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n </h1>\r\n <p class=\"body-5\">\r\n <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n </p>\r\n </div>\r\n <article class=\"closeBtn\" (click)=\"closeExecutor()\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6.26735 7.68135L0.610352 2.02435L2.02435 0.610352L7.68135 6.26735L13.3384 0.610352L14.7524 2.02435L9.09535 7.68135L14.7524 13.3384L13.3384 14.7524L7.68135 9.09535L2.02435 14.7524L0.610352 13.3384L6.26735 7.68135Z\"\r\n fill=\"#4D4D4D\"/>\r\n </svg>\r\n </article>\r\n </div>\r\n <div class=\"modalSteps\">\r\n <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n [isRightModal]=\"false\"\r\n [title]=\"page.title\"\r\n [currentExecutorStep]=\"pageIndex + 1\"\r\n [isCompleted]=\"page.isCompleted\">\r\n </mefdev-stage>\r\n </div>\r\n </header>\r\n\r\n <main *ngIf=\"activePage\" class=\"modalExecutorMainContent\">\r\n <div #container></div>\r\n </main>\r\n\r\n <footer class=\"modalFooter\">\r\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n </footer>\r\n\r\n </div>\r\n</mefdev-slide-up-modal>\r\n\r\n<!--view == right-->\r\n\r\n<mefdev-slide-right-modal [show]=\"show\" (visibleChange)=\"rightStepExecutorVisibleChange($event)\" *ngIf=\"view === 'right'\">\r\n <div class=\"rightExecutorBlock\">\r\n\r\n <header class=\"rightExecutorHeader\">\r\n <div class=\"rightExecutorTextAndCloseButton\">\r\n <span class=\"body-1\">\r\n <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n </span>\r\n <p class=\"body-5\">\r\n <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n </p>\r\n </div>\r\n <div class=\"closeButton\" (click)=\"closeExecutor()\">\r\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M16.0566 1.59971L14.6566 0.199707L8.05664 6.79971L1.45664 0.199707L0.0566406 1.59971L6.65664 8.19971L0.0566406 14.7997L1.45664 16.1997L8.05664 9.59971L14.6566 16.1997L16.0566 14.7997L9.45664 8.19971L16.0566 1.59971Z\"\r\n fill=\"#525252\"/>\r\n </svg>\r\n </div>\r\n </header>\r\n\r\n <div class=\"line\">\r\n <svg width=\"100%\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"100%\" height=\"1\" fill=\"#4D4D4D\"></rect>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"contentExecutor\">\r\n <div class=\"rightChangeContent\">\r\n <div *ngIf=\"activePage\" class=\"executorChangeContent\">\r\n <div #container></div>\r\n </div>\r\n <div class=\"rightSteps\">\r\n <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n [isRightModal]=\"true\"\r\n [title]=\"page.title\"\r\n [currentExecutorStep]=\"pageIndex + 1\"\r\n [isCompleted]=\"page.isCompleted\">\r\n </mefdev-stage>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"rightFooter\">\r\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n </footer>\r\n\r\n </div>\r\n</mefdev-slide-right-modal>\r\n","import {\r\n Component, ElementRef, EventEmitter, Host,\r\n Input, OnChanges, Output, SimpleChanges\r\n} from '@angular/core';\r\nimport { StepExecutorComponent } from '../step-executor/step-executor.component';\r\n\r\n/**\r\n * A component that allows us to create a content page - a step in our executor.\r\n * Each individual step can have different styles, content and settings.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-executor-page\r\n * [title]=\"'Executor title 1'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 0\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 0\"\r\n * class=\"yourClass\">\r\n * <!-- Content of the first executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Executor title 2'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 1\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 1\"\r\n * class=\"yourClass\">\r\n * <!-- Content of the second executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Executor title 3'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 2\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 2\"\r\n * class=\"yourClass\">\r\n * <!-- Content of the third executor step -->\r\n * </mefdev-executor-page>\r\n * ```\r\n *\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-executor-page',\r\n template: '<ng-content></ng-content>',\r\n})\r\n\r\nexport class MefdevExecutorPageComponent implements OnChanges {\r\n\r\n /**\r\n * The title of the step\r\n * @usageNotes\r\n * ```\r\n * <mefdev-executor-page [title]=\"'Description of situation 1'\"></mefdev-executor-page>\r\n * ```\r\n */\r\n @Input() title: string;\r\n\r\n /**\r\n * The input parameter that corresponds to whether the current step matches the respective page.\r\n * The value of the active page is passed by reference from the specific component StepExecutorComponent.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor #mainExecutor>\r\n * <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 0\">\r\n * <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 1\">\r\n * <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 2\">\r\n * </<mefdev-step-executor>\r\n *\r\n * ```\r\n */\r\n @Input() isActive: boolean = false;\r\n\r\n\r\n /**\r\n * The input parameter that checks whether the step is completed.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-executor-page [isCompleted]=\"mainExecutor.activePageInd >= 0\"></mefdev-executor-page>\r\n * ```\r\n */\r\n @Input() isCompleted: boolean = false;\r\n\r\n /**\r\n * The output parameter that emits a boolean value indicating whether our completed step has changed.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-executor-page (isCompletedChange)=\"onStepChanged($event)\"></mefdev-executor-page>\r\n * ```\r\n */\r\n @Output() isCompletedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public elRef: ElementRef;\r\n\r\n constructor(\r\n @Host() private _mainExecutor: StepExecutorComponent,\r\n private _elementRef: ElementRef\r\n ) {\r\n this.elRef = _elementRef;\r\n _mainExecutor.pages.push(this);\r\n if (_mainExecutor.activePageInd == -1) {\r\n _mainExecutor.activePageInd = 0;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.isCompletedChange.emit(changes['isCompleted']?.currentValue);\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StepExecutorComponent } from './step-executor/step-executor.component';\r\nimport { StageComponent } from './stage/stage.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MefdevExecutorPageComponent } from './mefdev-executor-page/mefdev-executor-page.component';\r\nimport { MefDevModalModule } from '../modals';\r\n\r\n@NgModule({\r\n declarations: [\r\n StepExecutorComponent,\r\n MefdevExecutorPageComponent,\r\n StageComponent\r\n ],\r\n exports: [\r\n StepExecutorComponent,\r\n MefdevExecutorPageComponent,\r\n StageComponent,\r\n ],\r\n imports: [\r\n MefDevModalModule,\r\n CommonModule,\r\n FormsModule,\r\n ]\r\n})\r\n\r\nexport class MefDevStepExecutorModule { }\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n/**\r\n * Component for a slider that allows selecting a range of values.\r\n * @example\r\n * <mefdev-slider\r\n * [disabled]=\"false\"\r\n * [range] = \"{min: 1, max: 10000}\"\r\n * [id]= \"'slider1'\"\r\n * (valueChange)=\"onChildValueChange($event)\"\r\n * ></mefdev-slider>\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/slider</example-url> \r\n*/\r\n@Component({\r\n selector: 'mefdev-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss']\r\n})\r\nexport class MefDevSliderComponent {\r\n\r\n private _range = { min: 1, max: 1000 };\r\n\r\n /**\r\n * Unique id for each slider. Use it, if u need more than one slider independent from another on the same page. \r\n * @example\r\n * <mefdev-slider\r\n * [id]= \"'slider1'\"\r\n * ></mefdev-slider>\r\n */\r\n @Input() id: string;\r\n\r\n\r\n /**\r\n * Input Object {min, max} container of the slider\r\n * @example\r\n * @interval\r\n * <mefdev-slider\r\n * [range] = \"{min: 1, max: 10000}\"\r\n * ></mefdev-slider>\r\n */\r\n @Input('range')\r\n \r\n set range(range: { min: number, max: number }) {\r\n this._range = range;\r\n this.minValue = range.min;\r\n this.maxValue = range.max;\r\n }\r\n public get range(): { min: number, max: number } {\r\n return this._range;\r\n }\r\n\r\n /**\r\n * The minimum value of the slider.\r\n */\r\n minValue:number = this.range.min\r\n\r\n /**\r\n * The maximum value of the slider.\r\n */\r\n maxValue:number = this.range.max\r\n\r\n \r\n\r\n /**\r\n * Property indicating whether the component is disabled.\r\n * @example\r\n * <mefdev-slider\r\n * [disabled]=\"true\"\r\n * ></mefdev-slider>\r\n */\r\n @Input() disabled : boolean= false;\r\n\r\n /**\r\n * Event emitted when the values of the slider change.\r\n * It passes an object with `minValue` and `maxValue` properties.\r\n * @event MefDevSliderComponent#valueChange\r\n * @type {EventEmitter<{ minValue: number; maxValue: number }>}\r\n * @example\r\n * <mefdev-slider\r\n * (valueChange)=\"onChildValueChange($event)\"\r\n * ></mefdev-slider>\r\n */\r\n @Output() valueChange: EventEmitter<{ minValue: number; maxValue: number }> = new EventEmitter();\r\n\r\n /**\r\n * Method called when the values of the slider change.\r\n * Emits the `valueChange` event and calls methods to handle changes in the minimum and maximum values.\r\n * @fires MefDevSliderComponent#valueChange\r\n */\r\n onValueChange() {\r\n this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });\r\n this.minValue = this.minValue\r\n this.onMinValueChange()\r\n this.onMaxValueChange()\r\n }\r\n\r\n /**\r\n * Method to handle changes in the minimum value.\r\n * Converts a string to a number and removes all non-numeric characters.\r\n * Then, emits the `valueChange` event and updates the value of the \"fromSlider\" slider.\r\n * @fires MefDevSliderComponent#valueChange\r\n */\r\n onMinValueChange() {\r\n const numericValue = parseFloat(this.minValue.toString().replace(/[^\\d.]/g, ''));\r\n this.minValue = isNaN(numericValue) ? 0 : numericValue; \r\n this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });\r\n const fromSlider = document.getElementById(`fromSlider-${this.id}`) as HTMLInputElement;\r\n }\r\n\r\n /**\r\n * Method to handle changes in the maximum value.\r\n * Converts a string to a number and removes all non-numeric characters.\r\n * Then, emits the `valueChange` event and updates the value of the \"toSlider\" slider.\r\n * @fires MefDevSliderComponent#valueChange\r\n */\r\n onMaxValueChange() {\r\n const numericValue = parseFloat(this.maxValue.toString().replace(/[^\\d.]/g, ''));\r\n this.maxValue = isNaN(numericValue) ? 0 : numericValue; // Перевірка на NaN і присвоєння 0, якщо не вдалося конвертувати в число\r\n this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });\r\n const toSlider = document.getElementById(`toSlider-${this.id}`) as HTMLInputElement;\r\n }\r\n}\r\n","<div class=\"range_container row\">\r\n <div class=\"inputs_control \">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"'₴'+ minValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMinValueChange()\">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"'₴'+ maxValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMaxValueChange()\">\r\n </div>\r\n <div class=\"sliders_control\">\r\n <input id=\"fromSlider\" type=\"range\" [(ngModel)]=\"minValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\">\r\n <input id=\"toSlider\" type=\"range\" [(ngModel)]=\"maxValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\" \r\n [style]=\"{'--minValue': minValue, '--maxValue': maxValue, '--minFromValue': range.min, '--maxToValue': range.max}\">\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MefDevSliderComponent } from './slider/slider.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n MefDevSliderComponent\r\n ],\r\n exports: [\r\n MefDevSliderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ]\r\n})\r\nexport class MefDevSliderModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mefdev-spec-flow-test',\r\n templateUrl: './spec-flow-test.component.html',\r\n styleUrls: ['./spec-flow-test.component.scss']\r\n})\r\nexport class MefDevSpecFlowTestComponent implements OnInit {\r\n /**\r\n * UTC datetime\r\n */\r\n ResponseTimestamp: any;\r\n /**\r\n * 0/1 1 - ошибка, 0 - успех (200, 201 и тд)\r\n */\r\n ResponseError: any;\r\n /**\r\n * string для ResponseError=1\r\n */\r\n ReportError: any;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n public setError(error:any) {\r\n this.ResponseTimestamp = Date.now();\r\n this.ResponseError = 1;\r\n this.ReportError = error;\r\n }\r\n public setSuccess(){\r\n this.ResponseTimestamp = Date.now();\r\n this.ResponseError = 0;\r\n this.ReportError = undefined;\r\n }\r\n\r\n}\r\n","<!-- Block for test -->\r\n<div style=\"display: none;\">\r\n <input id=\"ResponseTimestamp\" type=\"hidden\" value=\"{{ResponseTimestamp}}\" />\r\n <input id=\"ResponseError\" type=\"hidden\" value=\"{{ResponseError}}\" />\r\n <input id=\"ReportError\" type=\"hidden\" value=\"{{ReportError}}\" />\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MefDevSpecFlowTestComponent } from './spec-flow-test/spec-flow-test.component';\r\n\r\n@NgModule({\r\n declarations: [MefDevSpecFlowTestComponent],\r\n exports: [MefDevSpecFlowTestComponent],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class MefDevSpecFlowTestModule {\r\n static forRoot(): ModuleWithProviders<MefDevSpecFlowTestModule> {\r\n return {\r\n ngModule: MefDevSpecFlowTestModule\r\n };\r\n }\r\n }\r\n","import {\r\n\tforwardRef,\r\n\tComponent,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit,\r\n\tViewEncapsulation,\r\n\tOutput\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { toBoolean } from \"../util/convert\";\r\n\r\n\r\n/**\r\n * @component\r\n * @skipTemplateDoc: true\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/switch</example-url>\r\n*/\r\n@Component({\r\n\tselector: \"mefdev-switch\",\r\n\tencapsulation: ViewEncapsulation.None,\r\n\ttemplateUrl: \"./switch.component.html\",\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => MefDevSwitchComponent),\r\n\t\t\tmulti: true\r\n\t\t}\r\n\t]\r\n})\r\nexport class MefDevSwitchComponent implements OnInit, ControlValueAccessor {\r\n\t // Private variables\r\n\tprivate _disabled = false;\r\n\t_prefixCls = \"toggle-switch\";\r\n\t_color = \"primary\";\r\n\t_innerPrefixCls = `${this._prefixCls}-inner `;\r\n\t_classMap:any;\r\n\t_size: string;\r\n\t_checked = false;\r\n\r\n\t// ngModel Access\r\n\t// Output event triggered when the switch value changes\r\n\t@Output()\r\n\t/**\r\n * Event emitted when the value of the switch changes.\r\n * \r\n * @output\r\n * @param value The new value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch (onChange)=\"handleSwitchChange($event)\"></mefdev-switch>\r\n * ```\r\n */\r\n\tonChange: (value: boolean) => void = () => null;\r\n\tonTouched: () => void = () => null;\r\n\r\n\t// Input properties\r\n\r\n\t/**\r\n * Sets the value of the switch.\r\n * \r\n * @input\r\n * @param value The value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Value]=\"true\"></mefdev-switch>\r\n * ```\r\n */\r\n @Input()\r\n\tset Value(value: boolean) {\r\n\t\tthis.updateValue(value);\r\n\t}\r\n\r\n\t/**\r\n * Sets the size of the switch.\r\n * \r\n * @input\r\n * @param value The size of the switch (e.g., \"small\", \"large\").\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Size]=\"'small'\"></mefdev-switch>\r\n * ```\r\n */\r\n\t@Input()\r\n\tset Size(value: string) {\r\n\t\tthis._size = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n * Sets the color of the switch.\r\n * \r\n * @input\r\n * @param value The color of the switch (e.g., \"primary\", \"secondary\").\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Color]=\"'primary'\"></mefdev-switch>\r\n * ```\r\n */\r\n\t@Input()\r\n\tset Color(value: string) {\r\n\t\tthis._color = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n * Gets the current size of the switch.\r\n * \r\n * @input\r\n * @returns The size of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * const size = mySwitchComponent.Size;\r\n * ```\r\n */\r\n\tget Size(): string {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\t/**\r\n * Sets the disabled state of the switch.\r\n * \r\n * @input\r\n * @param value The disabled state of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Disabled]=\"true\"></mefdev-switch>\r\n * ```\r\n */\r\n\t@Input()\r\n\tset Disabled(value: boolean) {\r\n\t\tthis._disabled = toBoolean(value);\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t /**\r\n * Gets the current disabled state of the switch.\r\n * \r\n * @input\r\n * @returns The disabled state of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * const disabled = mySwitchComponent.Disabled;\r\n * ```\r\n */\r\n\tget Disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\t // Host listener for click event\r\n\t@HostListener(\"click\", [\"$event\"])\r\n\r\n\t/**\r\n * Handles the click event of the switch.\r\n * \r\n * @param e The click event object.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch (click)=\"handleSwitchClick($event)\"></mefdev-switch>\r\n * ```\r\n */\r\n\tonClick(e: MouseEvent): void {\r\n\t\te.preventDefault();\r\n\t\tif (!this._disabled) {\r\n\t\t\tthis.updateValue(!this._checked);\r\n\t\t\tthis.onChange(this._checked);\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t// Helper functions\r\n\r\n /**\r\n * Updates the value of the switch.\r\n * \r\n * @param value The new value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.updateValue(true);\r\n * ```\r\n */\r\n\tupdateValue(value: boolean): void {\r\n\t\tif (this._checked === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._checked = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n * Sets the class map for the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.setClassMap();\r\n * ```\r\n */\r\n\tsetClassMap(): void {\r\n\t\tthis._classMap = {\r\n\t\t\t[this._prefixCls]: true,\r\n\t\t\t[`${this._prefixCls}-checked`]: this._checked,\r\n\t\t\t[`${this._prefixCls}-disabled`]: this._disabled,\r\n\t\t\t[`${this._prefixCls}-small`]: this._size === \"small\",\r\n\t\t\t[this._color]: this._color\r\n\t\t};\r\n\t}\r\n\r\n\t\r\n\t// ControlValueAccessor interface implementation\r\n\r\n /**\r\n * Writes a new value to the switch.\r\n * \r\n * @param value The new value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.writeValue(true);\r\n * ```\r\n */\r\n\tpublic writeValue(value: boolean): void {\r\n\t\tthis.updateValue(value);\r\n\t}\r\n\r\n\t/**\r\n * Registers a callback function to be executed when the switch value changes.\r\n * \r\n * @param fn The callback function.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.registerOnChange(value => {\r\n * // Do something with the new value\r\n * });\r\n * ```\r\n */\r\n\tregisterOnChange(fn: (_: boolean) => void): void {\r\n\t\tthis.onChange = fn;\r\n\t}\r\n\r\n\t/**\r\n * Registers a callback function to be executed when the switch is touched.\r\n * \r\n * @param fn The callback function.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.registerOnTouched(() => {\r\n * // Do something when the switch is touched\r\n * });\r\n * ```\r\n */\r\n\tregisterOnTouched(fn: () => void): void {\r\n\t\tthis.onTouched = fn;\r\n\t}\r\n\r\n\t/**\r\n * Sets the disabled state of the switch.\r\n * \r\n * @param isDisabled The disabled state of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.setDisabledState(true);\r\n * ```\r\n */\r\n\tsetDisabledState(isDisabled: boolean): void {\r\n\t\tthis.Disabled = isDisabled;\r\n\t}\r\n\r\n\t // OnInit lifecycle hook\r\n\tngOnInit(): void {\r\n\t\tthis.setClassMap();\r\n\t}\r\n}\r\n","<span [ngClass]=\"_classMap\" tabindex=\"0\">\r\n <span [ngClass]=\"_innerPrefixCls\">\r\n <ng-template [ngIf]=\"_checked\">\r\n <ng-content select=\"[checked]\"></ng-content>\r\n </ng-template>\r\n <ng-template [ngIf]=\"!_checked\">\r\n <ng-content select=\"[unchecked]\"></ng-content>\r\n </ng-template>\r\n </span>\r\n</span>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MefDevSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n exports : [ MefDevSwitchComponent ],\r\n declarations: [ MefDevSwitchComponent ],\r\n imports : [ CommonModule ]\r\n})\r\nexport class MefDevSwitchModule {\r\n}\r\n","import { Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Component representing the body of a tab, which displays the tab's content.\r\n */\r\n@Component({\r\n selector: 'mefdev-tab-body',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl:\"./tab-body.component.html\",\r\n})\r\nexport class MefDevTabBodyComponent {\r\n /**\r\n * The content of the tab, which can be passed as a template.\r\n */\r\n @Input() content: TemplateRef<void>;\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"content\"></ng-template>","import { Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\nimport { toBoolean } from '../util/convert';\r\n\r\n@Directive({\r\n selector: '[mefdev-tab-label]',\r\n host: {\r\n '[class.nav-item]': 'true'\r\n }\r\n})\r\nexport class MefDevTabLabelDirective {\r\n private _disabled = false;\r\n\r\n @Input()\r\n @HostBinding('class.nav-item-disabled')\r\n set disabled(value: boolean) {\r\n this._disabled = toBoolean(value);\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n constructor(public elementRef: ElementRef) {}\r\n\r\n getOffsetLeft(): number {\r\n return this.elementRef.nativeElement.offsetLeft;\r\n }\r\n\r\n getOffsetWidth(): number {\r\n return this.elementRef.nativeElement.offsetWidth;\r\n }\r\n\r\n getOffsetTop(): number {\r\n return this.elementRef.nativeElement.offsetTop;\r\n }\r\n\r\n getOffsetHeight(): number {\r\n return this.elementRef.nativeElement.offsetHeight;\r\n }\r\n}\r\n","\r\nconst availablePrefixs = ['moz', 'ms', 'webkit'];\r\n\r\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\r\n let lastTime = 0;\r\n return function (callback: FrameRequestCallback): number {\r\n const currTime = new Date().getTime();\r\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n const id = window.setTimeout(() => { callback(currTime + timeToCall); }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n}\r\n\r\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\r\n if (typeof window === 'undefined') {\r\n //@ts-ignore\r\n return () => null;\r\n }\r\n if (window.requestAnimationFrame) {\r\n return window.requestAnimationFrame.bind(window);\r\n }\r\n\r\n const prefix = availablePrefixs.filter(key => `${key}RequestAnimationFrame` in window)[0];\r\n\r\n return prefix\r\n ? window[`${prefix}RequestAnimationFrame`]\r\n : requestAnimationFramePolyfill();\r\n}\r\n\r\nexport const reqAnimFrame = getRequestAnimationFrame();\r\n","import { Directive, ElementRef, HostBinding, Input, NgZone, Renderer2 } from '@angular/core';\r\nimport { reqAnimFrame } from '../util/request-animation';\r\nimport { toBoolean } from '../util/convert';\r\n\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\n\r\n@Directive({\r\n selector: '[mefdev-tabs-ink-bar]',\r\n host: {\r\n '[class.nav-item]': 'true'\r\n }\r\n})\r\nexport class MefDevTabsInkBarDirective {\r\n private _animated = false;\r\n\r\n @Input()\r\n @HostBinding('class.nav-item-animated')\r\n set Animated(value: boolean) {\r\n this._animated = toBoolean(value);\r\n }\r\n\r\n get Animated(): boolean {\r\n return this._animated;\r\n }\r\n\r\n @Input() PositionMode: TabPositionMode = 'horizontal';\r\n\r\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef, private _ngZone: NgZone) {}\r\n\r\n alignToElement(element: HTMLElement): void {\r\n this.show();\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n reqAnimFrame(() => {\r\n /** when horizontal remove height style and add transfrom left **/\r\n if (this.PositionMode === 'horizontal') {\r\n this._renderer.removeStyle(this._elementRef.nativeElement, 'height');\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'transform', `translate3d(${this._getLeftPosition(element)}, 0px, 0px)`);\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', this._getElementWidth(element));\r\n } else {\r\n /** when vertical remove width style and add transfrom top **/\r\n this._renderer.removeStyle(this._elementRef.nativeElement, 'width');\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'transform', `translate3d(0px, ${this._getTopPosition(element)}, 0px)`);\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'height', this._getElementHeight(element));\r\n }\r\n });\r\n });\r\n }\r\n\r\n show(): void {\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\r\n }\r\n\r\n setDisplay(value: string): void {\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'display', value);\r\n }\r\n\r\n hide(): void {\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\r\n }\r\n\r\n _getLeftPosition(element: HTMLElement): string {\r\n return element ? element.offsetLeft + 'px' : '0';\r\n }\r\n\r\n _getElementWidth(element: HTMLElement): string {\r\n return element ? element.offsetWidth + 'px' : '0';\r\n }\r\n\r\n _getTopPosition(element: HTMLElement): string {\r\n return element ? element.offsetTop + 'px' : '0';\r\n }\r\n\r\n _getElementHeight(element: HTMLElement): string {\r\n return element ? element.offsetHeight + 'px' : '0';\r\n }\r\n}\r\n","/** code from https://github.com/angular/material2 */\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n NgZone,\r\n Optional,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription, fromEvent, merge, of as observableOf } from 'rxjs';\r\nimport { auditTime, startWith } from 'rxjs/operators';\r\nimport { toBoolean } from '../util/convert';\r\nimport { MefDevTabLabelDirective } from './tab-label.directive';\r\nimport { MefDevTabsInkBarDirective } from './tabs-ink-bar.directive';\r\n\r\nconst EXAGGERATED_OVERSCROLL = 64;\r\nexport type ScrollDirection = 'after' | 'before';\r\n\r\n/** duplicated defined https://github.com/angular/angular-cli/issues/2034 **/\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\n\r\n@Component({\r\n selector: 'mefdev-tabs-nav',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./tabs-nav.component.html\"\r\n})\r\nexport class MefDevTabsNavComponent implements AfterContentChecked, AfterContentInit {\r\n private _animated = true;\r\n private _hideBar = false;\r\n private _showPagination = true;\r\n\r\n _showPaginationControls = false;\r\n _disableScrollAfter = true;\r\n _disableScrollBefore = true;\r\n _scrollDistance = 0;\r\n _selectedIndexChanged = false;\r\n _realignInkBar: Subscription | null = null;\r\n _tabLabelCount: number;\r\n _scrollDistanceChanged: boolean;\r\n _selectedIndex = 0;\r\n _tabPositionMode: TabPositionMode = 'horizontal';\r\n _tabPosition = 'top';\r\n @Input() Size = 'default';\r\n _type = 'line';\r\n\r\n @Input()\r\n set Animated(value: boolean) {\r\n this._animated = toBoolean(value);\r\n }\r\n\r\n get Animated(): boolean {\r\n return this._animated;\r\n }\r\n\r\n @Input()\r\n set Position(value: string) {\r\n this._tabPosition = value;\r\n }\r\n\r\n get Position(): string {\r\n return this._tabPosition;\r\n }\r\n\r\n @Input()\r\n set HideBar(value: boolean) {\r\n this._hideBar = toBoolean(value);\r\n }\r\n\r\n get HideBar(): boolean {\r\n return this._hideBar;\r\n }\r\n\r\n @Input()\r\n set Type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n get Type(): string {\r\n return this._type;\r\n }\r\n\r\n @ContentChild('tabBarExtraContent', { static: true }) _tabBarExtraContent: TemplateRef<void>;\r\n @ContentChildren(MefDevTabLabelDirective) _labelWrappers: QueryList<MefDevTabLabelDirective>;\r\n @ViewChild(MefDevTabsInkBarDirective, { static: true }) _inkBar: MefDevTabsInkBarDirective;\r\n @ViewChild('tabListContainer', { static: true }) _tabListContainer: ElementRef;\r\n @ViewChild('tabList', { static: true }) _tabList: ElementRef;\r\n\r\n @Input()\r\n set ShowPagination(value: boolean) {\r\n this._showPagination = toBoolean(value);\r\n }\r\n\r\n get ShowPagination(): boolean {\r\n return this._showPagination;\r\n }\r\n\r\n @Input()\r\n set PositionMode(value: TabPositionMode) {\r\n this._tabPositionMode = value;\r\n this._alignInkBarToSelectedTab();\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n }\r\n\r\n get PositionMode(): TabPositionMode {\r\n return this._tabPositionMode;\r\n }\r\n\r\n @Input()\r\n set selectedIndex(value: number) {\r\n this._selectedIndexChanged = this._selectedIndex !== value;\r\n\r\n this._selectedIndex = value;\r\n }\r\n\r\n get selectedIndex(): number {\r\n return this._selectedIndex;\r\n }\r\n\r\n constructor(\r\n public _elementRef: ElementRef,\r\n private _ngZone: NgZone,\r\n private _renderer: Renderer2,\r\n @Optional() private _dir: Directionality\r\n ) {}\r\n\r\n _onContentChanges(): void {\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n this._alignInkBarToSelectedTab();\r\n }\r\n\r\n _scrollHeader(scrollDir: ScrollDirection): void {\r\n // Move the scroll distance one-third the length of the tab list's viewport.\r\n this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * this.viewWidthHeightPix) / 3;\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n if (this._tabLabelCount !== this._labelWrappers.length) {\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n this._tabLabelCount = this._labelWrappers.length;\r\n }\r\n if (this._selectedIndexChanged) {\r\n this._scrollToLabel(this._selectedIndex);\r\n if (this.ShowPagination) {\r\n this._checkScrollingControls();\r\n }\r\n this._alignInkBarToSelectedTab();\r\n this._selectedIndexChanged = false;\r\n }\r\n if (this._scrollDistanceChanged) {\r\n if (this.ShowPagination) {\r\n this._updateTabScrollPosition();\r\n }\r\n this._scrollDistanceChanged = false;\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._realignInkBar = this._ngZone.runOutsideAngular(() => {\r\n const dirChange = this._dir ? this._dir.change : observableOf(null);\r\n const resize = typeof window !== 'undefined' ? fromEvent(window, 'resize').pipe(auditTime(10)) : observableOf(null);\r\n //@ts-ignore\r\n return merge(dirChange, resize)\r\n .pipe(startWith(null))\r\n .subscribe(() => {\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n this._alignInkBarToSelectedTab();\r\n });\r\n });\r\n }\r\n\r\n _updateTabScrollPosition(): void {\r\n const scrollDistance = this.scrollDistance;\r\n if (this.PositionMode === 'horizontal') {\r\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\r\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', `translate3d(${translateX}px, 0, 0)`);\r\n } else {\r\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', `translate3d(0,${-scrollDistance}px, 0)`);\r\n }\r\n }\r\n\r\n _updatePagination(): void {\r\n this._checkPaginationEnabled();\r\n this._checkScrollingControls();\r\n this._updateTabScrollPosition();\r\n }\r\n\r\n _checkPaginationEnabled(): void {\r\n this._showPaginationControls = this.tabListScrollWidthHeightPix > this.elementRefOffSetWidthHeight;\r\n\r\n if (!this._showPaginationControls) {\r\n this.scrollDistance = 0;\r\n }\r\n }\r\n\r\n _scrollToLabel(labelIndex: number): void {\r\n const selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\r\n\r\n if (!selectedLabel) {\r\n return;\r\n }\r\n\r\n // The view length is the visible width of the tab labels.\r\n\r\n let labelBeforePos: number;\r\n let labelAfterPos: number;\r\n if (this.PositionMode === 'horizontal') {\r\n if (this._getLayoutDirection() === 'ltr') {\r\n labelBeforePos = selectedLabel.getOffsetLeft();\r\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\r\n } else {\r\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\r\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\r\n }\r\n } else {\r\n labelBeforePos = selectedLabel.getOffsetTop();\r\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetHeight();\r\n }\r\n const beforeVisiblePos = this.scrollDistance;\r\n const afterVisiblePos = this.scrollDistance + this.viewWidthHeightPix;\r\n\r\n if (labelBeforePos < beforeVisiblePos) {\r\n // Scroll header to move label to the before direction\r\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\r\n } else if (labelAfterPos > afterVisiblePos) {\r\n // Scroll header to move label to the after direction\r\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\r\n }\r\n }\r\n\r\n _checkScrollingControls(): void {\r\n // Check if the pagination arrows should be activated.\r\n this._disableScrollBefore = this.scrollDistance === 0;\r\n this._disableScrollAfter = this.scrollDistance === this._getMaxScrollDistance();\r\n }\r\n\r\n /**\r\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\r\n * is equal to the difference in width between the tab list container and tab header container.\r\n *\r\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\r\n * should be called sparingly.\r\n */\r\n _getMaxScrollDistance(): number {\r\n return this.tabListScrollWidthHeightPix - this.viewWidthHeightPix || 0;\r\n }\r\n\r\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\r\n set scrollDistance(v: number) {\r\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\r\n\r\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\r\n // transformation can move the header.\r\n this._scrollDistanceChanged = true;\r\n\r\n this._checkScrollingControls();\r\n }\r\n\r\n get scrollDistance(): number {\r\n return this._scrollDistance;\r\n }\r\n\r\n get viewWidthHeightPix(): number {\r\n let PAGINATION_PIX = 0;\r\n if (this._showPaginationControls) {\r\n PAGINATION_PIX = 64;\r\n }\r\n if (this.PositionMode === 'horizontal') {\r\n return this._tabListContainer.nativeElement.offsetWidth - PAGINATION_PIX;\r\n } else {\r\n return this._tabListContainer.nativeElement.offsetHeight - PAGINATION_PIX;\r\n }\r\n }\r\n\r\n get tabListScrollWidthHeightPix(): number {\r\n if (this.PositionMode === 'horizontal') {\r\n return this._tabList.nativeElement.scrollWidth;\r\n } else {\r\n return this._tabList.nativeElement.scrollHeight;\r\n }\r\n }\r\n\r\n get elementRefOffSetWidthHeight(): number {\r\n if (this.PositionMode === 'horizontal') {\r\n return this._elementRef.nativeElement.offsetWidth;\r\n } else {\r\n return this._elementRef.nativeElement.offsetHeight;\r\n }\r\n }\r\n\r\n _getLayoutDirection(): Direction {\r\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n }\r\n\r\n _alignInkBarToSelectedTab(): void {\r\n if (this.Type !== 'fillup') {\r\n const selectedLabelWrapper =\r\n this._labelWrappers && this._labelWrappers.length\r\n ? this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement\r\n : null;\r\n if (this._inkBar) {\r\n this._inkBar.alignToElement(selectedLabelWrapper);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"nav-tabs-wrapper\" [class.scrolling]=\"_showPaginationControls\" #tabListContainer>\r\n <div class=\"nav-wrap\">\r\n <ul\r\n class=\"nav nav-tabs nav-tabs-{{ _type }} nav-tabs-{{ _tabPosition }}\"\r\n [class.tabs-nav-animated]=\"Animated\"\r\n #tabList\r\n (cdkObserveContent)=\"_onContentChanges()\"\r\n >\r\n <div\r\n class=\"active-bar\"\r\n mefdev-tabs-ink-bar\r\n [hidden]=\"HideBar\"\r\n [Animated]=\"Animated\"\r\n [PositionMode]=\"PositionMode\"\r\n style=\"display: block;\"\r\n ></div>\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>","/** code from https://github.com/angular/material2 */\r\n\r\nimport {\r\n AfterContentChecked,\r\n AfterViewInit,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MefDevTabComponent } from './tab.component';\r\nimport { MefDevTabsNavComponent } from './tabs-nav.component';\r\n\r\nexport interface AnimatedInterface {\r\n inkBar: boolean;\r\n tabPane: boolean;\r\n}\r\n\r\nexport class TabChangeEvent {\r\n index: number;\r\n tab: MefDevTabComponent;\r\n}\r\n\r\nexport type TabPosition = 'top' | 'bottom' | 'left' | 'right';\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\nexport type TabType = 'line' | 'fillup' | 'linetriangle';\r\n\r\n\r\n/**\r\n * Represents a tab set or tab group component.\r\n * @example\r\n * <mefdev-tabset TabPosition=\"top\" Animated=\"true\" ShowPagination=\"true\">\r\n * <mefdev-tab label=\"Tab 1\">Tab 1 content</mefdev-tab>\r\n * <mefdev-tab label=\"Tab 2\">Tab 2 content</mefdev-tab>\r\n * </mefdev-tabset>\r\n *\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/tabset</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-tabset',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./tabset.component.html\",\r\n})\r\nexport class MefDevTabSetComponent implements AfterContentChecked, OnInit, AfterViewInit {\r\n _el:any;\r\n _classMap:any;\r\n _prefixCls = 'nav-tabs';\r\n _width:any;\r\n _tabPosition: TabPosition = 'top';\r\n _tabPositionMode: TabPositionMode = 'horizontal';\r\n _indexToSelect: number | null = 0;\r\n _selectedIndex: number | null = null;\r\n _isViewInit = false;\r\n _tabs: MefDevTabComponent[] = [];\r\n _tabAnimation = '';\r\n _extra_tab_class = '';\r\n _extra_tabcontent_class = '';\r\n\r\n /**\r\n * Template reference for additional content to be displayed in the tab bar.\r\n */\r\n @Input() TabBarExtraTemplate: TemplateRef<void>;\r\n @ContentChild('TabBarExtraContent', { static: true }) TabBarExtraContent: TemplateRef<void>;\r\n @ViewChild('tabNav', { static: true }) _tabNav: MefDevTabsNavComponent;\r\n @ViewChild('tabContent', { static: true }) _tabContent: ElementRef;\r\n @ViewChild('hostContent', { static: true }) _hostContent: ElementRef;\r\n\r\n /**\r\n * Whether the tab set is animated. Can be a boolean or an object of type AnimatedInterface.\r\n * @example\r\n * - true (enables animation for both ink bar and tab pane)\r\n * - { inkBar: true, tabPane: false } (enables animation for ink bar only)\r\n * Default: true\r\n */\r\n\r\n @Input() Animated: AnimatedInterface | boolean = true;\r\n\r\n /**\r\n * Whether to show pagination controls for scrolling tabs.\r\n * @example true\r\n * Default: true\r\n */\r\n @Input() ShowPagination = true;\r\n\r\n /**\r\n * Whether the tab set is hidden.\r\n * @example true\r\n * Default: false\r\n */\r\n @Input() Hide = false;\r\n\r\n /**\r\n * The index of the selected tab.\r\n */\r\n @Input()\r\n set SelectedIndex(value: number | null) {\r\n this._indexToSelect = value;\r\n }\r\n\r\n get SelectedIndex(): number | null {\r\n return this._selectedIndex;\r\n }\r\n\r\n /**\r\n * Event emitted when the selected tab index changes.\r\n * @returns An Observable emitting the index of the selected tab.\r\n */\r\n @Output()\r\n get SelectedIndexChange(): Observable<number> {\r\n //@ts-ignore\r\n return this.SelectChange.pipe(map((event:any) => event.index));\r\n }\r\n\r\n /**\r\n * Event emitted when a tab is selected.\r\n * @example\r\n * <mefdev-tabset (SelectChange)=\"onTabSelect($event)\"></mefdev-tabset>\r\n */\r\n @Output() SelectChange: EventEmitter<TabChangeEvent> = new EventEmitter<TabChangeEvent>(true);\r\n\r\n /**\r\n * Size of the tab set. Can be 'default', 'small', or 'large'.\r\n * @example 'large'\r\n * Default: 'default'\r\n */\r\n @Input() Size = 'default';\r\n _type: TabType = 'line';\r\n tabs: MefDevTabComponent[] = [];\r\n\r\n /**\r\n * Position of the tab set. Can be 'top', 'bottom', 'left', or 'right'.\r\n */\r\n @Input()\r\n set TabPosition(value: TabPosition) {\r\n this._tabPosition = value;\r\n this._tabPositionMode = (value === 'top' || value === 'bottom') ? 'horizontal' : 'vertical';\r\n }\r\n get TabPosition(): TabPosition {\r\n return this._tabPosition;\r\n }\r\n\r\n /**\r\n * Additional CSS class for the tabs.\r\n */\r\n @Input()\r\n set extraTabClass(value: string) {\r\n this._extra_tab_class = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class for the tab content.\r\n */\r\n @Input()\r\n set extraTabContentClass(value: string) {\r\n this._extra_tabcontent_class = value;\r\n }\r\n\r\n /**\r\n * Type of the tab set. Can be 'line', 'fillup', or 'linetriangle'.\r\n */\r\n @Input()\r\n set Type(value: TabType) {\r\n if (this._type === value) {\r\n return;\r\n }\r\n this._type = value;\r\n this._setClassMap();\r\n }\r\n\r\n /**\r\n * Animation to apply to the tabs. Accepts CSS animation name.\r\n */\r\n @Input()\r\n set tabAnimation(value: string) {\r\n this._tabAnimation = value;\r\n }\r\n\r\n get Type(): TabType {\r\n return this._type;\r\n }\r\n\r\n _setPosition(value: TabPosition): void {}\r\n\r\n _setClassMap(): void {}\r\n\r\n // Other properties, methods, and lifecycle hooks...\r\n\r\n /**\r\n * Selects the tab at the specified index.\r\n * @param index The index of the tab to select.\r\n * ```\r\n * <button (click)=\"clickLabel(0)\">Select Tab 1</button>\r\n *```\r\n */\r\n clickLabel(index: number): void {\r\n if (this._tabs[index].Disabled) {\r\n } else {\r\n this.SelectedIndex = index;\r\n this._tabs[index].pgClick.emit();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._setClassMap();\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n // Clamp the next selected index to the bounds of 0 and the tabs length. Note the `|| 0`, which\r\n // ensures that values like NaN can't get through and which would otherwise throw the\r\n // component into an infinite loop (since Math.max(NaN, 0) === NaN).\r\n const indexToSelect = (this._indexToSelect = Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0)));\r\n\r\n // If there is a change in selected index, emit a change event. Should not trigger if\r\n // the selected index has not yet been initialized.\r\n if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {\r\n this.SelectChange.emit(this._createChangeEvent(indexToSelect));\r\n }\r\n\r\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\r\n this._tabs.forEach((tab: MefDevTabComponent, index: number) => {\r\n tab.position = index - indexToSelect;\r\n // If there is already a selected tab, then set up an origin for the next selected tab\r\n // if it doesn't have one already.\r\n if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {\r\n tab.origin = indexToSelect - this._selectedIndex;\r\n }\r\n });\r\n this._selectedIndex = indexToSelect;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n }\r\n\r\n private _createChangeEvent(index: number): TabChangeEvent {\r\n const event = new TabChangeEvent();\r\n event.index = index;\r\n if (this._tabs && this._tabs.length) {\r\n event.tab = this._tabs[index];\r\n this._tabs.forEach((item, i) => {\r\n if (i !== index) {\r\n item.pgDeselect.emit();\r\n }\r\n });\r\n event.tab.pgSelect.emit();\r\n }\r\n return event;\r\n }\r\n\r\n get inkBarAnimated(): boolean {\r\n return this.Animated === true || (this.Animated as AnimatedInterface).inkBar === true;\r\n }\r\n\r\n get tabPaneAnimated(): boolean {\r\n return this.Animated === true || (this.Animated as AnimatedInterface).tabPane === true;\r\n }\r\n\r\n constructor(private _renderer: Renderer2) {}\r\n}\r\n","<div class=\"tab-wrapper tab-{{ _tabPositionMode }} {{ _tabPosition }} {{ _type }} {{ _extra_tab_class }}\" #hostContent>\r\n <mefdev-tabs-nav\r\n #tabNav\r\n [Size]=\"Size\"\r\n [Type]=\"Type\"\r\n [ShowPagination]=\"ShowPagination\"\r\n [PositionMode]=\"_tabPositionMode\"\r\n [Position]=\"_tabPosition\"\r\n [Animated]=\"inkBarAnimated\"\r\n [HideBar]=\"Hide\"\r\n [selectedIndex]=\"SelectedIndex\"\r\n >\r\n <ng-template #tabBarExtraContent>\r\n <ng-template [ngTemplateOutlet]=\"TabBarExtraTemplate || TabBarExtraContent\"></ng-template>\r\n </ng-template>\r\n <li mefdev-tab-label [disabled]=\"tab.disabled\" (click)=\"clickLabel(i)\" *ngFor=\"let tab of _tabs; let i = index\">\r\n <a href=\"javascript:void(0);\" class=\"\" [class.active]=\"SelectedIndex == i && !Hide\">\r\n <ng-template [ngTemplateOutlet]=\"tab._tabHeading\"></ng-template>\r\n </a>\r\n </mefdev-tabs-nav>\r\n <div class=\"tab-content-wrapper {{ _extra_tabcontent_class }}\">\r\n <div\r\n class=\"tab-content {{ _tabAnimation }}\"\r\n #tabContent\r\n [class.animated]=\"tabPaneAnimated\"\r\n [class.not-animated]=\"!tabPaneAnimated\"\r\n [style.margin-left.%]=\"tabPaneAnimated && -(SelectedIndex ?? -1) * 100\"\r\n >\r\n <mefdev-tab-body\r\n class=\"tab-pane\"\r\n [class.active]=\"SelectedIndex == i && !Hide\"\r\n [class.inactive]=\"SelectedIndex != i || Hide\"\r\n [content]=\"tab.content\"\r\n *ngFor=\"let tab of _tabs; let i = index\"\r\n >\r\n </mefdev-tab-body>\r\n </div>\r\n </div>\r\n </div>","import {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { toBoolean } from '../util/convert';\r\nimport { MefDevTabSetComponent } from './tabset.component';\r\n\r\n@Component({\r\n selector: 'mefdev-tab',\r\n templateUrl:\"./tab.component.html\" ,\r\n styles: [],\r\n host: {\r\n '[class.ant-tabs-tabpane]': 'true'\r\n }\r\n})\r\nexport class MefDevTabComponent implements OnDestroy, OnInit {\r\n private disabled = false;\r\n\r\n position: number | null = null;\r\n origin: number | null = null;\r\n\r\n /**\r\n * Sets the disabled state of the tab.\r\n *```html\r\n * <mefdev-tab [Disabled]=\"true\"></mefdev-tab>\r\n * ```\r\n */\r\n @Input()\r\n set Disabled(value: boolean) {\r\n this.disabled = toBoolean(value);\r\n }\r\n\r\n /**\r\n * Gets the disabled state of the tab.\r\n */\r\n get Disabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n /**\r\n * Event emitted when the tab is selected.\r\n *```html\r\n * <mefdev-tab (pgSelect)=\"onTabSelect()\"></mefdev-tab>\r\n * ```\r\n */\r\n @Output() pgSelect = new EventEmitter();\r\n\r\n /**\r\n * Event emitted when the tab is clicked.\r\n *```html\r\n * <mefdev-tab (pgClick)=\"onTabClick()\"></mefdev-tab>\r\n * ```\r\n */\r\n @Output() pgClick = new EventEmitter();\r\n\r\n /**\r\n * Event emitted when the tab is deselected.\r\n *```html\r\n * <mefdev-tab (pgDeselect)=\"onTabDeselect()\"></mefdev-tab>\r\n *```\r\n */\r\n @Output() pgDeselect = new EventEmitter();\r\n\r\n /**\r\n * Reference to the template for the tab heading.\r\n */\r\n @ContentChild('TabHeading', { static: true }) _tabHeading: TemplateRef<void>;\r\n\r\n /**\r\n * Reference to the template for the tab content.\r\n */\r\n @ViewChild(TemplateRef, { static: true }) _content: TemplateRef<void>;\r\n\r\n /**\r\n * Gets the template for the tab content.\r\n *```html\r\n * <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n *```\r\n */\r\n get content(): TemplateRef<void> | null {\r\n return this._content;\r\n }\r\n\r\n constructor(private MefDevTabSetComponent: MefDevTabSetComponent) {}\r\n\r\n /**\r\n * Initializes the tab component.\r\n */\r\n ngOnInit(): void {\r\n this.MefDevTabSetComponent._tabs.push(this);\r\n }\r\n\r\n /**\r\n * Cleans up resources when the tab component is destroyed.\r\n */\r\n ngOnDestroy(): void {\r\n // Remove the tab from the parent tabset component when destroyed\r\n this.MefDevTabSetComponent._tabs.splice(this.MefDevTabSetComponent._tabs.indexOf(this), 1);\r\n }\r\n}\r\n","<ng-template>\r\n <ng-content></ng-content>\r\n </ng-template>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MefDevTabBodyComponent } from './tab-body.component';\r\nimport { MefDevTabLabelDirective } from './tab-label.directive';\r\nimport { MefDevTabComponent } from './tab.component';\r\nimport { MefDevTabsInkBarDirective } from './tabs-ink-bar.directive';\r\nimport { MefDevTabsNavComponent } from './tabs-nav.component';\r\nimport { MefDevTabSetComponent } from './tabset.component';\r\n\r\n@NgModule({\r\n declarations: [MefDevTabComponent, MefDevTabSetComponent, MefDevTabsNavComponent, MefDevTabLabelDirective, MefDevTabsInkBarDirective, MefDevTabBodyComponent],\r\n exports: [MefDevTabComponent, MefDevTabSetComponent, MefDevTabsNavComponent, MefDevTabLabelDirective, MefDevTabsInkBarDirective, MefDevTabBodyComponent],\r\n imports: [CommonModule]\r\n})\r\nexport class MefDevTabsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CollapseSetComponent","i2","i1.FilteredFieldService","i3.FilteredFieldItemComponent","i1.MefDevSelectComponent","i3.MefDevOptionComponent","i4.MefDevSelectComponent","i2.MefDevProgressComponent","i1","i3.MefdevInnerCard","i3.SlideRightComponent","i1.SlideUpComponent","i2.SlideRightComponent","i3","i4.StageComponent","i1.StepExecutorComponent","observableOf","i2.MefDevTabsInkBarDirective","i2.MefDevTabsNavComponent","i3.MefDevTabLabelDirective","i4.MefDevTabBodyComponent","i1.MefDevTabSetComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"natec-mef-dev-ui-kit.mjs","sources":["../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse-set/collapse-set.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse-set/collapse-set.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse/collapse.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse/collapse.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/collapse/collapse.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field.service.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtered-field.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/filtered-field/filtred-item.model.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/help-block/help-block.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/help-block/help-block.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/help-block/hepl-block.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/util/convert.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.pipe.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/select/option.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/select/select.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/utils/datepicker/datepicker.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/card/card.components.ts","../../../projects/ui-kit-lib/src/lib/pg-components/card/card.components.html","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card/card.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card/card.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-long/cart-type-colors.enum.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-long/card-long.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-long/card-long.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-simple/card-simple.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card-simple/card-simple.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.config.ts","../../../projects/ui-kit-lib/src/lib/pg-components/progress/progress.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/fill/fill.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/fill/fill.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-up/slide-up.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-up/slide-up.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-right/slide-right.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/slide-right/slide-right.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/right-filter/right-filter.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/right-filter/right-filter.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/modals/markup-kit.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/profile/profile.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/profile/profile.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page/central-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page/central-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/table-page/table-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/table-page/table-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/manage-page/manage-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/manage-page/manage-page.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/page-layouts/page-layouts.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/stage/stage.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/stage/stage.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor/step-executor.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor/step-executor.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/mefdev-executor-page/mefdev-executor-page.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/executors/step-executor.module.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/slider/slider/slider.component.ts","../../../projects/ui-kit-lib/src/lib/markup-kit/slider/slider/slider.component.html","../../../projects/ui-kit-lib/src/lib/markup-kit/slider/slider.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/spec-flow-test/spec-flow-test.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/switch/switch.module.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-body.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-body.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab-label.directive.ts","../../../projects/ui-kit-lib/src/lib/pg-components/util/request-animation.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-ink-bar.directive.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-nav.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs-nav.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabset.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabset.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab.component.ts","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tab.component.html","../../../projects/ui-kit-lib/src/lib/pg-components/tabs/tabs.module.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/accordion-base.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-base.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-content.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel.html","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-header.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/expansion-panel-header.html","../../../projects/ui-kit-lib/src/lib/v2/collapse/accordion.ts","../../../projects/ui-kit-lib/src/lib/v2/collapse/collapse.module.ts","../../../projects/ui-kit-lib/src/lib/v2/card/card.ts","../../../projects/ui-kit-lib/src/lib/v2/card/card.html","../../../projects/ui-kit-lib/src/lib/v2/card/card-title-group.html","../../../projects/ui-kit-lib/src/lib/v2/card/card-header.html","../../../projects/ui-kit-lib/src/lib/v2/card/card.module.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-config.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-ref.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-container.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-container.html","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/dialog-content-directives.ts","../../../projects/ui-kit-lib/src/lib/v2/modals/modal-module.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-label.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-intl.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-header.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-header.html","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-icon.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step-content.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/step.html","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper.html","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-button.ts","../../../projects/ui-kit-lib/src/lib/v2/executors/stepper-module.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option-group.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option-group.html","../../../projects/ui-kit-lib/src/lib/v2/select/select.ts","../../../projects/ui-kit-lib/src/lib/v2/select/select.html","../../../projects/ui-kit-lib/src/lib/v2/select/pseudo-checkbox.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option.ts","../../../projects/ui-kit-lib/src/lib/v2/select/option.html","../../../projects/ui-kit-lib/src/lib/v2/select/select.module.ts","../../../projects/ui-kit-lib/src/lib/v2/switch/base-editor-helper.ts","../../../projects/ui-kit-lib/src/lib/v2/switch/switch.component.ts","../../../projects/ui-kit-lib/src/lib/v2/switch/switch.component.html","../../../projects/ui-kit-lib/src/lib/v2/switch/switch.module.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/paginated-tab-header.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-body.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-body.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/config.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-content.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-label.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/ink-bar.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-label-wrapper.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-header.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-header.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-group.ts","../../../projects/ui-kit-lib/src/lib/v2/tabs/tab-group.html","../../../projects/ui-kit-lib/src/lib/v2/tabs/tabs.module.ts","../../../projects/ui-kit-lib/src/natec-mef-dev-ui-kit.ts"],"sourcesContent":["import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CollapseComponent } from '../collapse/collapse.component';\r\n\r\n\r\n/**\r\n* Component representing a set of collapsible panels.\r\n*\r\n* Example of usage:\r\n*\r\n*```\r\n* <mefdev-collapse-set [Accordion]=\"true\" [Horizontal]=\"true\" [expandAny]=\"false\">\r\n* <mefdev-collapse [Disabled]=\"false\" [Active]=\"true\">\r\n* <!-- Content for the collapse panel -->\r\n* <h3>Panel 1</h3>\r\n* <p>Panel 1 content...</p>\r\n* </mefdev-collapse>\r\n\r\n* <mefdev-collapse [Disabled]=\"false\" [Active]=\"false\">\r\n* <!-- Content for the collapse panel -->\r\n* <h3>Panel 2</h3>\r\n* <p>Panel 2 content...</p>\r\n* </mefdev-collapse>\r\n\r\n* <mefdev-collapse [Disabled]=\"false\" [Active]=\"false\">\r\n* <!-- Content for the collapse panel -->\r\n* <h3>Panel 3</h3>\r\n* <p>Panel 3 content...</p>\r\n* </mefdev-collapse>\r\n* </mefdev-collapse-set>\r\n*```\r\n*/\r\n@Component({\r\n selector: 'mefdev-collapse-set',\r\n templateUrl: './collapse-set.component.html',\r\n styleUrls: ['./collapse-set.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false\r\n})\r\nexport class CollapseSetComponent {\r\n \r\n private _accordion = false;\r\n private _horizontal = true;\r\n private _expandAny = true;\r\n panels: CollapseComponent[] = [];\r\n\r\n /**\r\n * Indicates whether multiple panels can be expanded simultaneously.\r\n * Set this to `true` to allow multiple panels to be expanded. Defaults to `false`.\r\n */\r\n @Input()\r\n set expandAny(value: boolean) {\r\n this._accordion = value;\r\n }\r\n\r\n get expandAny(): boolean {\r\n return this._accordion;\r\n }\r\n\r\n /**\r\n * Indicates whether the collapse set operates as an accordion.\r\n * Set this to `true` to enable accordion behavior. Defaults to `false`.\r\n */\r\n @Input()\r\n set Accordion(value: boolean) {\r\n this._accordion = value;\r\n }\r\n\r\n get Accordion(): boolean {\r\n return this._accordion;\r\n }\r\n\r\n /**\r\n * Indicates whether the collapse set is displayed horizontally or vertically.\r\n * Set this to `true` for horizontal display and `false` for vertical display. Defaults to `true`.\r\n */\r\n @Input()\r\n set Horizontal(value: boolean) {\r\n this._horizontal = value;\r\n }\r\n\r\n get Horizontal(): boolean {\r\n return this._horizontal;\r\n }\r\n\r\n /**\r\n * Event handler for the click event on a collapse panel.\r\n * Closes other panels if the collapse set is an accordion and does not allow multiple expansions.\r\n *\r\n * @param collapse The clicked collapse component.\r\n */\r\n pgClick(collapse: CollapseComponent): void {\r\n if (this.Accordion && !this.expandAny) {\r\n this.panels.map((item, index) => {\r\n const curIndex = this.panels.indexOf(collapse);\r\n if (index !== curIndex) {\r\n item.Active = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Adds a collapse panel to the collapse set.\r\n *\r\n * @param collapse The collapse component to be added.\r\n */\r\n addTab(collapse: CollapseComponent): void {\r\n this.panels.push(collapse);\r\n }\r\n}\r\n","<div class=\"card-group\" [class.horizontal]=\"Horizontal\">\r\n <ng-content></ng-content>\r\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, ContentChild, ElementRef, EventEmitter, Host, HostBinding, Input, Output, TemplateRef } from '@angular/core';\r\nimport { CollapseSetComponent } from '../collapse-set/collapse-set.component';\r\n\r\n\r\n/**\r\n * Component for displaying a collapsible content.\r\n *\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-collapse [Disabled]=\"false\" [Active]=\"true\" (stateChange)=\"onStateChange($event)\">\r\n * <ng-template #CardTitle>\r\n * <!-- Content for the card title -->\r\n * <h3>Card Title</h3>\r\n * </ng-template>\r\n * \r\n * <!-- Content for the collapsible section -->\r\n * <div>\r\n Content inside collapse\r\n * </div>\r\n * </mefdev-collapse>\r\n *\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/collapse</example-url>\r\n\r\n */\r\n@Component({\r\n selector: 'mefdev-collapse',\r\n templateUrl: './collapse.component.html',\r\n styleUrls: ['./collapse.component.scss'],\r\n animations: [\r\n trigger('collapseState', [\r\n state('inactive', style({\r\n opacity: '0',\r\n height: 0\r\n })),\r\n state('active', style({\r\n opacity: '1',\r\n height: '*'\r\n })),\r\n transition('inactive => active', animate('125ms ease-in')),\r\n transition('active => inactive', animate('125ms ease-out'))\r\n ])\r\n ],\r\n host: {\r\n '[class.card]': 'true',\r\n '[class.card-default]': 'true',\r\n '[class.m-b-0]': 'true'\r\n },\r\n standalone: false\r\n})\r\nexport class CollapseComponent {\r\n\r\n private _disabled = false;\r\n _active = false;\r\n _el;\r\n\r\n /**\r\n * ContentChild for the template of the card title.\r\n *\r\n * Example:\r\n * ```\r\n * <ng-template #CardTitle>\r\n * <h3>Card Title</h3>\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild(\"CardTitle\") CardTitle: TemplateRef<void>;\r\n\r\n /**\r\n * Indicates whether the collapse is disabled.\r\n * Set this to `true` to disable the collapse. Defaults to `false`.\r\n */\r\n @Input()\r\n @HostBinding('class.disabled')\r\n set Disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n\r\n get Disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Indicates whether the collapse is active or not.\r\n */\r\n @Input()\r\n set Active(value: boolean) {\r\n const active = value;\r\n if (this._active === active) {\r\n return;\r\n }\r\n if (!this.Disabled) {\r\n this._active = active;\r\n }\r\n }\r\n \r\n get Active(): boolean {\r\n return this._active;\r\n }\r\n\r\n /**\r\n * Event emitter for the state change of the collapse.\r\n * Emits a boolean value indicating whether the collapse is active or not.\r\n *\r\n * Example:\r\n * ```\r\n * <mefdev-collapse (stateChange)=\"onStateChange($event)\"></mefdev-collapse>\r\n * ```\r\n */\r\n @Output() stateChange = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Event handler for the header click event.\r\n * Toggles the active state of the collapse and emits the state change event.\r\n *\r\n * @param $event The mouse event object.\r\n */\r\n clickHeader($event: MouseEvent): void {\r\n this.Active = !this.Active;\r\n this.stateChange.next(this.Active);\r\n /** trigger host collapseSet click event */\r\n this._collapseSet.pgClick(this);\r\n }\r\n\r\n constructor(@Host() private _collapseSet: CollapseSetComponent, private _elementRef: ElementRef) {\r\n this._el = this._elementRef.nativeElement;\r\n this._collapseSet.addTab(this);\r\n }\r\n}\r\n","<div class=\"row w-100 mt-2 card-title\" [attr.aria-expanded]=\"_active\" (click)=\"clickHeader($event)\" role=\"tab\"\r\nhref=\"javascript:;\" [ngClass]=\"{'collapsed':!_active}\">\r\n <div class=\"col\">\r\n <ng-template [ngTemplateOutlet]=\"CardTitle\"></ng-template>\r\n </div>\r\n <div class=\"col\">\r\n <i class=\"fa fa-angle-down float-end \" aria-hidden=\"true\" *ngIf=\"!_active\"></i>\r\n <i class=\"fa fa-angle-up float-end \" aria-hidden=\"true\" *ngIf=\"_active\"></i>\r\n </div>\r\n</div>\r\n\r\n<div class=\"collapse\" [ngClass]=\"{'show':true,'active':_active,'inactive':!_active}\" [@collapseState]=\"_active?'active':'inactive'\">\r\n <div *ngIf=\"_active\"\r\n class=\"card-body mb-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule,ModuleWithProviders } from '@angular/core';\r\nimport { CollapseSetComponent } from './collapse-set/collapse-set.component';\r\nimport { CollapseComponent } from './collapse/collapse.component';\r\n\r\nexport const mefDevCollapseModuleComponents = [CollapseSetComponent, CollapseComponent];\r\n\r\n@NgModule({\r\n declarations: mefDevCollapseModuleComponents,\r\n exports : mefDevCollapseModuleComponents,\r\n imports : [ CommonModule ]\r\n})\r\n\r\nexport class MefDevCollapseModule {\r\n static forRoot(): ModuleWithProviders<MefDevCollapseModule> {\r\n return {\r\n ngModule: MefDevCollapseModule\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FiltredItemModel } from './filtred-item.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FilteredFieldService {\r\n\r\n private newFilterItem: Subject<FiltredItemModel> = new Subject<FiltredItemModel>();\r\n private openFilter: Subject<FiltredItemModel> = new Subject<FiltredItemModel>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Returns an observable that emits the open filter events.\r\n */\r\n public getOpenFilter(): Observable<FiltredItemModel>{\r\n return this.openFilter;\r\n }\r\n\r\n /**\r\n * Sends an open filter event with the specified item.\r\n * @param item The filtered item model.\r\n */\r\n public sendOpenFilter(item: FiltredItemModel){\r\n this.openFilter.next(item);\r\n }\r\n\r\n /**\r\n * Returns an observable that emits the new filter item events.\r\n */\r\n public getNewFilterItem(): Observable<FiltredItemModel>{\r\n return this.newFilterItem;\r\n }\r\n\r\n /**\r\n * Sends a new filter item event with the specified item.\r\n * @param item The filtered item model.\r\n */\r\n public sendNewFilterItem(item: FiltredItemModel){\r\n this.newFilterItem.next(item);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FiltredItemModel } from '../filtred-item.model';\r\n\r\n/**\r\n * Component representing a filtered field item.\r\n * \r\n * Example of usage:\r\n * ```\r\n * <mefdev-filtered-field-item [item]=\"filterItem\" (discard)=\"onDiscardFilter($event)\" (openFilter)=\"onOpenFilter()\">\r\n * </mefdev-filtered-field-item>\r\n *``` \r\n *\r\n*/\r\n@Component({\r\n selector: 'mefdev-filtered-field-item',\r\n templateUrl: './filtered-field-item.component.html',\r\n styleUrls: ['./filtered-field-item.component.scss'],\r\n standalone: false\r\n})\r\nexport class FilteredFieldItemComponent implements OnInit {\r\n\r\n /**\r\n * The filtered item model.\r\n * ```\r\n * <mefdev-filtered-field-item [item]=\"filterItem\">\r\n * Content goes here...\r\n * </mefdev-filtered-field-item>\r\n * ```\r\n */\r\n @Input() item: FiltredItemModel;\r\n\r\n /**\r\n * Event emitted when the filter is discarded.\r\n * ```\r\n * <mefdev-filtered-field-item (discard)=\"onDiscardFilter($event)\">\r\n * Content goes here...\r\n * </mefdev-filtered-field-item>\r\n * ```\r\n */\r\n @Output() discard = new EventEmitter<FiltredItemModel>();\r\n\r\n /**\r\n * Event emitted when the filter is opened.\r\n * ```\r\n * <mefdev-filtered-field-item (openFilter)=\"onOpenFilter()\">\r\n * Content goes here...\r\n * </mefdev-filtered-field-item>\r\n * ```\r\n */\r\n @Output() openFilter = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n \r\n /**\r\n * Event handler for opening the filter.\r\n * Emits the `openFilter` event.\r\n */\r\n onOpenFilter(){\r\n this.openFilter.next({});\r\n }\r\n\r\n\r\n /**\r\n * Event handler for discarding the filter.\r\n * Emits the `discard` event with the `item` as the payload.\r\n */\r\n onDiscard(){\r\n this.discard.next(this.item);\r\n }\r\n\r\n}\r\n","<div class=\"item\">\r\n <i class=\"fa fa-times\" (click)=\"onDiscard()\" style=\"margin-right: 3px; cursor: pointer;\"></i> \r\n <span (click)=\"onOpenFilter()\">{{item.newValue}}</span>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FilteredFieldService } from '../filtered-field.service';\r\nimport { FiltredItemModel } from '../filtred-item.model';\r\n\r\n /**\r\n * A container component for filtered fields.\r\n *\r\n * Example of usage:\r\n * ```\r\n * <mefdev-filtered-field-container>\r\n * \r\n * <mefdev-filtered-field-item [item]=\"filterItem\" (discard)=\"onDiscardFilter($event)\" (openFilter)=\"onOpenFilter()\">\r\n * </mefdev-filtered-field-item>\r\n *\r\n * </mefdev-filtered-field-container>\r\n * ```\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/filtered_field</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-filtered-field-container',\r\n templateUrl: './filtered-field-container.component.html',\r\n styleUrls: ['./filtered-field-container.component.scss'],\r\n standalone: false\r\n})\r\nexport class FilteredFieldContainerComponent implements OnInit {\r\n\r\n /**\r\n * An array of filtered item models.\r\n */\r\n items: FiltredItemModel[] = [];\r\n\r\n constructor(\r\n private service: FilteredFieldService\r\n ) { }\r\n\r\n /**\r\n * Event handler for opening the filter.\r\n *\r\n * @param item The filtered item model.\r\n */\r\n onOpenFilter(item: FiltredItemModel){\r\n this.service.sendOpenFilter(item);\r\n }\r\n\r\n /**\r\n * Event handler for discarding the filter.\r\n *\r\n * @param item The filtered item model.\r\n */\r\n onDiscard(item: FiltredItemModel){\r\n item.discard(item.standartValue);\r\n this.items.splice(this.items.findIndex(x => x.id == item.id), 1);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.service.getNewFilterItem().subscribe(item => {\r\n let i = this.items.findIndex(x => x.id == item.id)\r\n\r\n if(i != -1 && item.newValue == item.standartValue){\r\n this.items[i] = item;\r\n this.items.splice(i, 1);\r\n return;\r\n }\r\n\r\n if(i == -1 && (item.newValue == item.standartValue || item.newValue == '') ){\r\n return;\r\n }\r\n\r\n if(i != -1){\r\n this.items[i] = item;\r\n return;\r\n }\r\n\r\n this.items.push(item);\r\n\r\n })\r\n }\r\n}\r\n","<div class=\"item-container\">\r\n <mefdev-filtered-field-item *ngFor=\"let item of items\" [item]=\"item\" (discard)=\"onDiscard(item)\" (openFilter)=\"onOpenFilter(item)\"></mefdev-filtered-field-item>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilteredFieldContainerComponent } from './filtered-field-container/filtered-field-container.component';\r\nimport { FilteredFieldItemComponent } from './filtered-field-item/filtered-field-item.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n FilteredFieldContainerComponent,\r\n FilteredFieldItemComponent,\r\n ],\r\n exports:[\r\n FilteredFieldItemComponent,\r\n FilteredFieldContainerComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class MefDevFilteredFieldModule { }\r\n","export class FiltredItemModel{\r\n\r\n\r\n constructor(id:string, newValue: string, standartValue: string, discard: (standartValue: string) => any){\r\n this.id = id;\r\n this.newValue = newValue;\r\n this.standartValue = standartValue;\r\n this.discard = discard;\r\n }\r\n\r\n id:string;\r\n newValue: string;\r\n standartValue: string;\r\n discard: (standartValue: string) => any;\r\n}","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from '@angular/animations';\r\n\r\n\r\n /**\r\n * A component representing a help block with smooth expand animation.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-help-block [title]=\"'Help'\">\r\n * Content goes here...\r\n * <ng-content></ng-content>\r\n * </mefdev-help-block>\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/help_block</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-help-block',\r\n templateUrl: './help-block.component.html',\r\n styleUrls: ['./help-block.component.scss'],\r\n animations: [\r\n trigger('smothExpand', [\r\n state('close', style({\r\n height: '0',\r\n margin: '0',\r\n padding: '0',\r\n opacity: '0',\r\n visibility: 'hidden',\r\n })),\r\n state('open', style({})),\r\n transition('close<=>open', animate(200))\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class HelpBlockComponent implements OnInit {\r\n\r\n /**\r\n * Indicates whether the help block is visible.\r\n */\r\n isVisible:boolean = true;\r\n\r\n /**\r\n * Indicates whether the help block is expanded.\r\n */\r\n expanded:boolean = false;\r\n\r\n\r\n /**\r\n * The title of the help block.\r\n *```\r\n * <mefdev-help-block [title]=\"'Help Block'\">\r\n * Content goes here...\r\n * </mefdev-help-block>\r\n *```\r\n */\r\n @Input('title') title:string = \"Help\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"card-simple\" *ngIf=\"isVisible\">\r\n <div class=\"row m-1 body-1\" (click)=\"expanded = !expanded\" style=\"cursor: pointer;\">\r\n <div class=\"col-10\" style=\"color: white;\">\r\n {{ title }}\r\n </div>\r\n <div class=\"col-2\">\r\n <i class=\"fa fa-window-close\" aria-hidden=\"true\" style=\"float: right; margin-left: 20px;\" (click)=\"isVisible = !isVisible;\"></i>\r\n \r\n <i class=\"fa fa-angle-down \" *ngIf=\"!expanded\" aria-hidden=\"true\" style=\"float: right;\"></i>\r\n <i class=\"fa fa-angle-up\" *ngIf=\"expanded\" aria-hidden=\"true\" style=\"float: right;\"></i> \r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body row\" [@smothExpand]=\"expanded ? 'open' : 'close'\">\r\n <div class=\"col-12\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HelpBlockComponent } from './help-block.component';\r\nimport { MefDevCollapseModule } from '../../collapse/collapse.module';\r\n\r\n@NgModule({\r\n declarations: [HelpBlockComponent],\r\n exports: [HelpBlockComponent],\r\n imports: [\r\n CommonModule,\r\n MefDevCollapseModule\r\n ]\r\n})\r\nexport class MefDevHelpBlockModule { }\r\n","export function toBoolean(value: any): boolean {\r\n return value === '' || (value && value !== 'false');\r\n}\r\n","/* tslint:disable:no-any */\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\n\r\n@Pipe({\r\n name: \"OptionPipe\",\r\n standalone: false\r\n})\r\nexport class OptionPipe implements PipeTransform {\r\n // TODO: enable type checking for this method\r\n transform(options: MefDevOptionComponent[], value: any): any {\r\n if (value.searchText) {\r\n let _options = options.filter(\r\n option =>\r\n option.Label &&\r\n option.Label.toLowerCase().indexOf(value.searchText.toLowerCase()) !==\r\n -1\r\n );\r\n if (value.tags) {\r\n _options = options.filter(\r\n option =>\r\n option.Label &&\r\n option.Label.toLowerCase() === value.searchText.toLowerCase()\r\n );\r\n }\r\n if (_options.length) {\r\n return _options;\r\n } else {\r\n return [\r\n ({\r\n Value: value.value,\r\n _value: value.value,\r\n Disabled: value.disabled,\r\n _disabled: value.disabled,\r\n Label: value.notFoundContent,\r\n _label: value.notFoundContent\r\n } as any) as MefDevOptionComponent\r\n ];\r\n }\r\n } else {\r\n return options;\r\n }\r\n }\r\n}\r\n","/**\r\n * complex but work well\r\n * TODO: rebuild latter\r\n */\r\nimport { DOWN_ARROW, ENTER, TAB } from \"@angular/cdk/keycodes\";\r\nimport {\r\n CdkConnectedOverlay,\r\n ConnectedOverlayPositionChange\r\n} from \"@angular/cdk/overlay\";\r\nimport {\r\n forwardRef,\r\n AfterContentChecked,\r\n AfterContentInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation,\r\n ChangeDetectorRef\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\nimport { OptionPipe } from \"./option.pipe\";\r\nimport { toBoolean } from '../util/convert';\r\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\n\r\n/**\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/select</example-url>\r\n */\r\n@Component({\r\n selector: \"mefdev-select\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./select.component.html\",\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MefDevSelectComponent),\r\n multi: true\r\n }\r\n ],\r\n animations: [trigger('dropDownAnimation', [\r\n state('bottom', style({\r\n opacity: 1,\r\n transform: 'scaleY(1)',\r\n transformOrigin: '0% 0%'\r\n })),\r\n transition('void => bottom', [\r\n style({\r\n opacity: 0,\r\n transform: 'scaleY(0)',\r\n transformOrigin: '0% 0%'\r\n }),\r\n animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n ]),\r\n state('top', style({\r\n opacity: 1,\r\n transform: 'scaleY(1)',\r\n transformOrigin: '0% 100%'\r\n })),\r\n transition('void => top', [\r\n style({\r\n opacity: 0,\r\n transform: 'scaleY(0)',\r\n transformOrigin: '0% 100%'\r\n }),\r\n animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n ]),\r\n transition('* => void', [\r\n animate('250ms 100ms linear', style({ opacity: 0 }))\r\n ])\r\n ]),\r\n trigger('tagAnimation', [\r\n state('*', style({ opacity: 1, transform: 'scale(1)' })),\r\n transition('void => *', [\r\n style({ opacity: 0, transform: 'scale(0)' }),\r\n animate('150ms linear')\r\n ]),\r\n state('void', style({ opacity: 0, transform: 'scale(0)' })),\r\n transition('* => void', [\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n animate('150ms linear')\r\n ])\r\n ])],\r\n standalone: false\r\n})\r\nexport class MefDevSelectComponent\r\n implements\r\n OnInit,\r\n AfterContentInit,\r\n AfterContentChecked,\r\n ControlValueAccessor {\r\n private _allowClear = false;\r\n private _disabled = false;\r\n private _isTags = false;\r\n private _isMultiple = false;\r\n private _keepUnListOptions = false;\r\n private _showSearch = false;\r\n _el: HTMLElement;\r\n _isOpen = false;\r\n _prefixCls = \"pg-select\";\r\n _classList: string[] = [];\r\n _dropDownClassMap: any;\r\n _dropDownPrefixCls = `${this._prefixCls}-dropdown`;\r\n _selectionClassMap: any;\r\n _selectionPrefixCls = `${this._prefixCls}-selection`;\r\n _size: string;\r\n _value: string[] | string;\r\n _placeholder = \"placeholder\";\r\n _notFoundContent = \"No Content\";\r\n _searchText = \"\";\r\n _triggerWidth = 0;\r\n _selectedOption: MefDevOptionComponent;\r\n _operatingMultipleOption: MefDevOptionComponent;\r\n _selectedOptions: Set<MefDevOptionComponent> = new Set();\r\n _options: MefDevOptionComponent[] = [];\r\n _cacheOptions: MefDevOptionComponent[] = [];\r\n _filterOptions: MefDevOptionComponent[] = [];\r\n _tagsOptions: MefDevOptionComponent[] = [];\r\n _activeFilterOption: MefDevOptionComponent;\r\n _isMultiInit = false;\r\n _dropDownPosition: \"top\" | \"center\" | \"bottom\" = \"bottom\";\r\n _composing = false;\r\n _mode: any;\r\n // ngModel Access\r\n onChange: (value: string | string[]) => void = () => null;\r\n onTouched: () => void = () => null;\r\n @ViewChild(\"searchInput\") searchInputElementRef: any;\r\n @ViewChild(\"trigger\") trigger: ElementRef;\r\n @ViewChild(\"dropdownUl\") dropdownUl: ElementRef;\r\n @Output() SearchChange: EventEmitter<string> = new EventEmitter();\r\n @Output() change: EventEmitter<string> = new EventEmitter();\r\n @Output() OpenChange: EventEmitter<boolean> = new EventEmitter();\r\n @Output() ScrollToBottom: EventEmitter<boolean> = new EventEmitter();\r\n @Input() Filter = true;\r\n @Input() MaxMultiple = Infinity;\r\n @Input() FirstDefault: boolean = false;\r\n @ViewChild(CdkConnectedOverlay) _cdkOverlay: CdkConnectedOverlay;\r\n\r\n @Input()\r\n set AllowClear(value: boolean) {\r\n this._allowClear = toBoolean(value);\r\n }\r\n\r\n get AllowClear(): boolean {\r\n return this._allowClear;\r\n }\r\n\r\n @Input()\r\n set KeepUnListOptions(value: boolean) {\r\n this._keepUnListOptions = toBoolean(value);\r\n }\r\n\r\n get KeepUnListOptions(): boolean {\r\n return this._keepUnListOptions;\r\n }\r\n\r\n @Input()\r\n set Mode(value: string) {\r\n this._mode = value;\r\n if (this._mode === \"multiple\") {\r\n this.Multiple = true;\r\n } else if (this._mode === \"tags\") {\r\n this.Tags = true;\r\n } else if (this._mode === \"combobox\") {\r\n this.ShowSearch = true;\r\n }\r\n }\r\n\r\n @Input()\r\n set Multiple(value: boolean) {\r\n this._isMultiple = toBoolean(value);\r\n if (this._isMultiple) {\r\n this.ShowSearch = true;\r\n }\r\n }\r\n\r\n get Multiple(): boolean {\r\n return this._isMultiple;\r\n }\r\n\r\n @Input()\r\n set PlaceHolder(value: string) {\r\n this._placeholder = value;\r\n }\r\n\r\n get PlaceHolder(): string {\r\n return this._placeholder;\r\n }\r\n\r\n @Input()\r\n set NotFoundContent(value: string) {\r\n this._notFoundContent = value;\r\n }\r\n\r\n get NotFoundContent(): string {\r\n return this._notFoundContent;\r\n }\r\n\r\n @Input()\r\n set Size(value: string) {\r\n // @ts-ignore\r\n this._size = { large: \"lg\", small: \"sm\" }[value];\r\n this.setClassMap();\r\n }\r\n\r\n get Size(): string {\r\n return this._size;\r\n }\r\n\r\n @Input()\r\n set ShowSearch(value: boolean) {\r\n this._showSearch = toBoolean(value);\r\n }\r\n\r\n get ShowSearch(): boolean {\r\n return this._showSearch;\r\n }\r\n\r\n @Input()\r\n set Tags(value: boolean) {\r\n const isTags = toBoolean(value);\r\n this._isTags = isTags;\r\n this.Multiple = isTags;\r\n }\r\n\r\n get Tags(): boolean {\r\n return this._isTags;\r\n }\r\n\r\n @Input()\r\n set Disabled(value: boolean) {\r\n this._disabled = toBoolean(value);\r\n this.closeDropDown();\r\n this.setClassMap();\r\n }\r\n\r\n get Disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set Open(value: boolean) {\r\n const isOpen = toBoolean(value);\r\n if (this._isOpen === isOpen) {\r\n return;\r\n }\r\n if (isOpen) {\r\n this.scrollToActive();\r\n this._setTriggerWidth();\r\n }\r\n this._isOpen = isOpen;\r\n this.OpenChange.emit(this._isOpen);\r\n this.setClassMap();\r\n if (this._isOpen) {\r\n setTimeout(() => {\r\n this.checkDropDownScroll();\r\n });\r\n }\r\n }\r\n\r\n get Open(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n /** new -option insert or new tags insert */\r\n // @ts-ignore\r\n addOption = option => {\r\n this._options.push(option);\r\n if (!this._isTags) {\r\n if (option.Value) {\r\n this.updateSelectedOption(this._value);\r\n } else {\r\n this.forceUpdateSelectedOption(this._value);\r\n }\r\n }\r\n };\r\n\r\n /** -option remove or tags remove */\r\n removeOption(option: MefDevOptionComponent): void {\r\n this._options.splice(this._options.indexOf(option), 1);\r\n if (!this._isTags) {\r\n this.forceUpdateSelectedOption(this._value);\r\n }\r\n }\r\n\r\n /** dropdown position changed */\r\n onPositionChange(position: ConnectedOverlayPositionChange): void {\r\n this._dropDownPosition = position.connectionPair.originY;\r\n }\r\n\r\n compositionStart(): void {\r\n this._composing = true;\r\n }\r\n\r\n compositionEnd(): void {\r\n this._composing = false;\r\n }\r\n\r\n /** clear single selected option */\r\n clearSelect($event?: MouseEvent): void {\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n } // @ts-ignore\r\n this._selectedOption = null; // @ts-ignore\r\n this.Value = null; // @ts-ignore\r\n this.onChange(null);\r\n }\r\n\r\n /** click dropdown option by user */\r\n clickOption(option: MefDevOptionComponent, $event?: MouseEvent): void {\r\n if (!option) {\r\n return;\r\n }\r\n this.chooseOption(option, true, $event);\r\n this.clearSearchText();\r\n if (!this._isMultiple) {\r\n this.Open = false;\r\n }\r\n }\r\n\r\n /** choose option */\r\n chooseOption(\r\n option: MefDevOptionComponent,\r\n isUserClick: boolean = false,\r\n $event?: MouseEvent\r\n ): void {\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n this._activeFilterOption = option;\r\n if (option && !option.Disabled) {\r\n if (!this.Multiple) {\r\n this._selectedOption = option;\r\n this._value = option.Value;\r\n if (isUserClick) {\r\n this.change.next(this._value);\r\n this.onChange(option.Value);\r\n }\r\n } else {\r\n if (isUserClick) {\r\n this.isInSet(this._selectedOptions, option)\r\n ? this.unSelectMultipleOption(option)\r\n : this.selectMultipleOption(option);\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateWidth(element: HTMLInputElement, text: string): void {\r\n if (text) {\r\n /** wait for scroll width change */ // @ts-ignore\r\n setTimeout(_ => {\r\n this._renderer.setStyle(element, \"width\", `${element.scrollWidth}px`);\r\n });\r\n } else {\r\n this._renderer.removeStyle(element, \"width\");\r\n }\r\n }\r\n\r\n /** determine if option in set */\r\n isInSet(\r\n set: Set<MefDevOptionComponent>,\r\n option: MefDevOptionComponent\r\n ): MefDevOptionComponent { // @ts-ignore\r\n return (Array.from(set) as MefDevOptionComponent[]).find(\r\n (data: MefDevOptionComponent) => data.Value === option.Value\r\n );\r\n }\r\n\r\n /** cancel select multiple option */ // @ts-ignore\r\n unSelectMultipleOption = (option, $event?, emitChange = true) => {\r\n this._operatingMultipleOption = option;\r\n this._selectedOptions.delete(option);\r\n if (emitChange) {\r\n this.emitMultipleOptions();\r\n }\r\n\r\n // 对Tag进行特殊处理\r\n if (\r\n this._isTags &&\r\n this._options.indexOf(option) !== -1 &&\r\n this._tagsOptions.indexOf(option) !== -1\r\n ) {\r\n this.removeOption(option);\r\n this._tagsOptions.splice(this._tagsOptions.indexOf(option), 1);\r\n }\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n };\r\n\r\n /** select multiple option */\r\n selectMultipleOption(option: MefDevOptionComponent, $event?: MouseEvent): void {\r\n /** if tags do push to tag option */\r\n if (\r\n this._isTags &&\r\n this._options.indexOf(option) === -1 &&\r\n this._tagsOptions.indexOf(option) === -1\r\n ) {\r\n this.addOption(option);\r\n this._tagsOptions.push(option);\r\n }\r\n this._operatingMultipleOption = option;\r\n if (this._selectedOptions.size < this.MaxMultiple) {\r\n this._selectedOptions.add(option);\r\n }\r\n this.emitMultipleOptions();\r\n\r\n if ($event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n /** emit multiple options */\r\n emitMultipleOptions(): void {\r\n if (this._isMultiInit) {\r\n return;\r\n }\r\n const arrayOptions = Array.from(this._selectedOptions);\r\n this._value = arrayOptions.map(item => item.Value);\r\n this.onChange(this._value);\r\n }\r\n\r\n /** update selected option when add remove option etc */\r\n updateSelectedOption(\r\n currentModelValue: string | string[],\r\n triggerByNgModel: boolean = false\r\n ): void {\r\n if (currentModelValue == null) {\r\n return;\r\n }\r\n if (this.Multiple) {\r\n const selectedOptions = this._options.filter(item => {\r\n return item != null && currentModelValue.indexOf(item.Value) !== -1;\r\n });\r\n if ((this.KeepUnListOptions || this.Tags) && !triggerByNgModel) {\r\n const _selectedOptions = Array.from(this._selectedOptions);\r\n selectedOptions.forEach(option => {\r\n const _exist = _selectedOptions.some(\r\n item => item._value == option._value\r\n );\r\n if (!_exist) {\r\n this._selectedOptions.add(option);\r\n }\r\n });\r\n } else {\r\n this._selectedOptions = new Set();\r\n selectedOptions.forEach(option => {\r\n this._selectedOptions.add(option);\r\n });\r\n }\r\n } else {\r\n const selectedOption = this._options.filter(item => {\r\n return item != null && item.Value == currentModelValue;\r\n });\r\n this.chooseOption(selectedOption[0]);\r\n }\r\n }\r\n\r\n forceUpdateSelectedOption(value: string | string[]): void {\r\n /** trigger dirty check */ // @ts-ignore\r\n setTimeout(_ => {\r\n this.updateSelectedOption(value);\r\n });\r\n }\r\n\r\n get Value(): string | string[] {\r\n return this._value;\r\n }\r\n\r\n set Value(value: string | string[]) {\r\n this._updateValue(value);\r\n }\r\n\r\n clearAllSelectedOption(emitChange: boolean = true): void {\r\n this._selectedOptions.forEach(item => {\r\n this.unSelectMultipleOption(item, null, emitChange);\r\n });\r\n }\r\n\r\n handleKeyEnterEvent(event: KeyboardEvent): void {\r\n /** when composing end */\r\n if (!this._composing && this._isOpen) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.updateFilterOption(false);\r\n this.clickOption(this._activeFilterOption);\r\n }\r\n }\r\n\r\n handleKeyBackspaceEvent(event: KeyboardEvent): void {\r\n if (!this._searchText && !this._composing && this._isMultiple) {\r\n event.preventDefault();\r\n const lastOption = Array.from(this._selectedOptions).pop();\r\n this.unSelectMultipleOption(lastOption);\r\n }\r\n }\r\n\r\n handleKeyDownEvent($event: MouseEvent): void {\r\n if (this._isOpen) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n this._activeFilterOption = this.nextOption(\r\n this._activeFilterOption,\r\n this._filterOptions.filter(w => !w.Disabled)\r\n );\r\n this.scrollToActive();\r\n }\r\n }\r\n\r\n handleKeyUpEvent($event: MouseEvent): void {\r\n if (this._isOpen) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n this._activeFilterOption = this.preOption(\r\n this._activeFilterOption,\r\n this._filterOptions.filter(w => !w.Disabled)\r\n );\r\n this.scrollToActive();\r\n }\r\n }\r\n\r\n preOption(\r\n option: MefDevOptionComponent,\r\n options: MefDevOptionComponent[]\r\n ): MefDevOptionComponent {\r\n return options[options.indexOf(option) - 1] || options[options.length - 1];\r\n }\r\n\r\n nextOption(\r\n option: MefDevOptionComponent,\r\n options: MefDevOptionComponent[]\r\n ): MefDevOptionComponent {\r\n return options[options.indexOf(option) + 1] || options[0];\r\n }\r\n\r\n clearSearchText(): void {\r\n this._searchText = \"\";\r\n this.updateFilterOption();\r\n }\r\n\r\n updateFilterOption(updateActiveFilter: boolean = true): void {\r\n if (this.Filter) {\r\n this._filterOptions = new OptionPipe().transform(this._options, {\r\n searchText: this._searchText,\r\n tags: this._isTags,\r\n notFoundContent: this._isTags\r\n ? this._searchText\r\n : this._notFoundContent,\r\n disabled: !this._isTags,\r\n value: this._isTags ? this._searchText : \"disabled\"\r\n });\r\n } else {\r\n this._filterOptions = this._options;\r\n }\r\n\r\n /** TODO: cause pre & next key selection not work */\r\n if (updateActiveFilter && !this._selectedOption) {\r\n this._activeFilterOption = this._filterOptions[0];\r\n }\r\n }\r\n\r\n onSearchChange(searchValue: string): void {\r\n this.SearchChange.emit(searchValue);\r\n }\r\n\r\n @HostListener(\"click\", [\"$event\"])\r\n onClick(e: MouseEvent): void {\r\n e.preventDefault();\r\n if (!this._disabled) {\r\n this.Open = !this.Open;\r\n if (this.ShowSearch) {\r\n /** wait for search display */ // @ts-ignore\r\n setTimeout(_ => {\r\n this.searchInputElementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n onKeyDown(e: KeyboardEvent): void {\r\n const keyCode = e.keyCode;\r\n if (keyCode === TAB && this.Open) {\r\n this.Open = false;\r\n return;\r\n }\r\n if ((keyCode !== DOWN_ARROW && keyCode !== ENTER) || this.Open) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (!this._disabled) {\r\n this.Open = true;\r\n if (this.ShowSearch) {\r\n /** wait for search display */ // @ts-ignore\r\n setTimeout(_ => {\r\n this.searchInputElementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n\r\n closeDropDown(): void {\r\n if (!this.Open) {\r\n return;\r\n }\r\n this.onTouched();\r\n if (this.Multiple) {\r\n this._renderer.removeStyle(\r\n this.searchInputElementRef.nativeElement,\r\n \"width\"\r\n );\r\n }\r\n this.clearSearchText();\r\n this.Open = false;\r\n }\r\n\r\n setClassMap(): void {\r\n this._classList.forEach(_className => {\r\n this._renderer.removeClass(this._el, _className);\r\n }); // @ts-ignore\r\n this._classList = [\r\n this._prefixCls,\r\n this._mode === \"combobox\" && `${this._prefixCls}-combobox`,\r\n !this._disabled && `${this._prefixCls}-enabled`,\r\n this._disabled && `${this._prefixCls}-disabled`,\r\n this._isOpen && `${this._prefixCls}-open`,\r\n this._showSearch && `${this._prefixCls}-show-search`,\r\n this._size && `${this._prefixCls}-${this._size}`\r\n ].filter(item => {\r\n return !!item;\r\n });\r\n this._classList.forEach(_className => {\r\n this._renderer.addClass(this._el, _className);\r\n });\r\n this._selectionClassMap = {\r\n [this._selectionPrefixCls]: true,\r\n [`${this._selectionPrefixCls}--single`]: !this.Multiple,\r\n [`${this._selectionPrefixCls}--multiple`]: this.Multiple\r\n };\r\n }\r\n\r\n setDropDownClassMap(): void {\r\n this._dropDownClassMap = {\r\n [this._dropDownPrefixCls]: true,\r\n [\"component-select\"]: this._mode === \"combobox\",\r\n [`${this._dropDownPrefixCls}--single`]: !this.Multiple,\r\n [`${this._dropDownPrefixCls}--multiple`]: this.Multiple,\r\n [`${this._dropDownPrefixCls}-placement-bottomLeft`]:\r\n this._dropDownPosition === \"bottom\",\r\n [`${this._dropDownPrefixCls}-placement-topLeft`]:\r\n this._dropDownPosition === \"top\"\r\n };\r\n }\r\n\r\n scrollToActive(): void {\r\n /** wait for dropdown display */ // @ts-ignore\r\n setTimeout(_ => {\r\n if (this._activeFilterOption && this._activeFilterOption.Value) {\r\n const index = this._filterOptions.findIndex(\r\n option => option.Value === this._activeFilterOption.Value\r\n );\r\n try {\r\n const scrollPane = this.dropdownUl.nativeElement.children[\r\n index\r\n ] as HTMLLIElement;\r\n // TODO: scrollIntoViewIfNeeded is not a standard API, why doing so?\r\n /* tslint:disable-next-line:no-any */\r\n (scrollPane as any).scrollIntoViewIfNeeded(false);\r\n } catch (e) {}\r\n }\r\n });\r\n }\r\n\r\n flushComponentState(): void {\r\n this.updateFilterOption();\r\n if (!this.Multiple) {\r\n this.updateSelectedOption(this._value);\r\n } else {\r\n if (this._value) {\r\n this.updateSelectedOption(this._value);\r\n }\r\n }\r\n }\r\n\r\n _setTriggerWidth(): void {\r\n this._triggerWidth = this._getTriggerRect().width;\r\n /** should remove after after https://github.com/angular/material2/pull/8765 merged **/\r\n if (this._cdkOverlay && this._cdkOverlay.overlayRef) {\r\n this._cdkOverlay.overlayRef.updateSize({\r\n width: this._triggerWidth\r\n });\r\n }\r\n }\r\n\r\n _getTriggerRect(): ClientRect {\r\n return this.trigger.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(value: string | string[]): void {\r\n this._updateValue(value, false);\r\n }\r\n\r\n registerOnChange(fn: (value: string | string[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.Disabled = isDisabled;\r\n }\r\n\r\n dropDownScroll(ul: HTMLUListElement): void {\r\n if (ul && ul.scrollHeight - ul.scrollTop === ul.clientHeight) {\r\n this.ScrollToBottom.emit(true);\r\n }\r\n }\r\n\r\n checkDropDownScroll(): void {\r\n if (\r\n this.dropdownUl &&\r\n this.dropdownUl.nativeElement.scrollHeight ===\r\n this.dropdownUl.nativeElement.clientHeight\r\n ) {\r\n this.ScrollToBottom.emit(true);\r\n }\r\n }\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n private _renderer: Renderer2,\r\n private cDRef: ChangeDetectorRef\r\n ) {\r\n this._el = this._elementRef.nativeElement;\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this._value != null) {\r\n this.flushComponentState();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.updateFilterOption();\r\n this.setClassMap();\r\n this.setDropDownClassMap();\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n if (this._cacheOptions !== this._options) {\r\n /** update filter option after every content check cycle */\r\n this.updateFilterOption();\r\n this._cacheOptions = this._options;\r\n } else {\r\n this.updateFilterOption(false);\r\n }\r\n\r\n if (this.FirstDefault) {\r\n if (!this._value && this._options) {\r\n if (this._options[0] !== undefined && this._options[0].Value) {\r\n this.chooseOption(this._options[0], false);\r\n setTimeout(() => {\r\n this.onChange(this._options[0].Value);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _updateValue(\r\n value: string[] | string,\r\n emitChange: boolean = true\r\n ): void {\r\n if (this._value === value) {\r\n return;\r\n }\r\n if (value == null && this.Multiple) {\r\n this._value = [];\r\n } else {\r\n this._value = value;\r\n }\r\n if (!this.Multiple) {\r\n if (value == null) { // @ts-ignore\r\n this._selectedOption = null;\r\n } else {\r\n this.updateSelectedOption(value);\r\n }\r\n } else {\r\n if (value) {\r\n if (value.length === 0) {\r\n this.clearAllSelectedOption(emitChange);\r\n } else {\r\n this.updateSelectedOption(value, true);\r\n }\r\n } else if (value == null) {\r\n this.clearAllSelectedOption(emitChange);\r\n }\r\n }\r\n }\r\n}\r\n","<div tabindex=\"0\" #trigger cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" [ngClass]=\"_selectionClassMap\"\r\n (keydown.Enter)=\"handleKeyEnterEvent($event)\" (keydown.Backspace)=\"handleKeyBackspaceEvent($event)\"\r\n (keydown.ArrowUp)=\"handleKeyUpEvent($event)\" (keydown.ArrowDown)=\"handleKeyDownEvent($event)\">\r\n\r\n <!-- Увесь селект-->\r\n <div class=\"pg-select-selection__rendered\" *ngIf=\"!ShowSearch\">\r\n <div class=\"pg-select-selection__placeholder\">\r\n <ng-template [ngIf]=\"!_selectedOption\">\r\n {{ PlaceHolder }}\r\n </ng-template>\r\n </div>\r\n <div class=\"pg-select-selection-selected-value\">\r\n {{ _selectedOption?.Label }}\r\n </div>\r\n </div>\r\n <!--Cписок options-->\r\n <div class=\"pg-select-selection__rendered\" *ngIf=\"ShowSearch\">\r\n <div [hidden]=\"_searchText||(!Open&&_selectedOption)||_selectedOptions.size\"\r\n class=\"pg-select-selection__placeholder\">\r\n <ng-template [ngIf]=\"(!_composing)&&_selectedOption\">\r\n {{ _selectedOption.Label }}\r\n </ng-template>\r\n <ng-template [ngIf]=\"(!_composing)&&(!_selectedOption)\">\r\n {{ PlaceHolder }}\r\n </ng-template>\r\n </div>\r\n\r\n\r\n <!--Мультиселект-->\r\n <ul *ngIf=\"Multiple\"> \r\n <li *ngFor=\"let option of _selectedOptions\" [@tagAnimation] [attr.title]=\"option?.Label || option?.Value\"\r\n class=\"pg-select-selection__choice\" style=\"-webkit-user-select: none;\">\r\n <span class=\"pg-select-selection__choice__remove\" (click)=\"unSelectMultipleOption(option,$event)\"></span>\r\n <div class=\"pg-select-selection__choice__content\">{{ option?.Label }}</div>\r\n </li>\r\n <li class=\"pg-select-search pg-select-search--inline\">\r\n <div class=\"pg-select-search__field__wrap\">\r\n <input class=\"pg-select-search__field\" (compositionstart)=\"compositionStart()\"\r\n (compositionend)=\"compositionEnd();updateWidth(searchInput,_searchText);\" [(ngModel)]=\"_searchText\"\r\n (ngModelChange)=\"updateFilterOption();onSearchChange($event);\"\r\n (keydown)=\"updateWidth(searchInput,_searchText)\" (input)=\"updateWidth(searchInput,_searchText)\"\r\n (blur)=\"onTouched()\" #searchInput>\r\n <span class=\"pg-select-search__field__mirror\"></span></div>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"!Multiple\" class=\"pg-select-selection-selected-value\" [hidden]=\"!(_selectedOption?.Label)||Open\">\r\n {{ _selectedOption?.Label }}\r\n </div>\r\n <div *ngIf=\"!Multiple\" [hidden]=\"!Open\" class=\"pg-select-search pg-select-search--inline\">\r\n <div class=\"pg-select-search__field__wrap\">\r\n <input class=\"pg-select-search__field\" (blur)=\"onTouched()\" (compositionstart)=\"compositionStart()\"\r\n (compositionend)=\"compositionEnd()\" [(ngModel)]=\"_searchText\"\r\n (ngModelChange)=\"updateFilterOption();onSearchChange($event);\" #searchInput>\r\n <span class=\"pg-select-search__field__mirror\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <span (click)=\"onTouched();clearSelect($event)\" class=\"pg-select-selection__clear\" style=\"-webkit-user-select: none;\"\r\n *ngIf=\"_selectedOption?.Label&&AllowClear&&!Multiple\">\r\n </span>\r\n <span class=\"pg-select-arrow\"><b></b></span>\r\n</div>\r\n<ng-template cdkConnectedOverlay cdkConnectedOverlayHasBackdrop [cdkConnectedOverlayOrigin]=\"origin\" cdkConnectedOverlayBackdropClass=\"backdrop\"\r\n (backdropClick)=\"closeDropDown()\" (detach)=\"closeDropDown();\" (positionChange)=\"onPositionChange($event)\"\r\n [cdkConnectedOverlayWidth]=\"_triggerWidth\" [cdkConnectedOverlayOpen]=\"_isOpen\">\r\n <div [ngClass]=\"_dropDownClassMap\" [@dropDownAnimation]=\"_dropDownPosition\">\r\n <div style=\"overflow: auto;\">\r\n <ul class=\"pg-select-dropdown-menu pg-select-dropdown-menu-vertical pg-select-dropdown-menu-root\" #dropdownUl\r\n (scroll)=\"dropDownScroll(dropdownUl)\">\r\n <li *ngFor=\"let option of _filterOptions\" [class.pg-select-dropdown-menu-item-disabled]=\"option.Disabled\"\r\n [class.pg-select-dropdown-menu-item-active]=\"option.Value == _activeFilterOption?.Value\"\r\n [class.pg-select-dropdown-menu-item-selected]=\"(option.Value==(_selectedOption?.Value))||(isInSet(_selectedOptions,option))\"\r\n class=\"pg-select-dropdown-menu-item\" (click)=\"clickOption(option,$event)\">\r\n <ng-template *ngIf=\"option.OptionTemplate\" [ngTemplateOutlet]=\"option.OptionTemplate\">\r\n </ng-template>\r\n <ng-template [ngIf]=\"!option.OptionTemplate\">\r\n {{ option.Label }}\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</ng-template>","import {\r\n\tComponent,\r\n\tContentChild,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewEncapsulation\r\n} from \"@angular/core\";\r\n\r\n//import { toBoolean } from \"@shared/utils/convert\";\r\nimport { MefDevSelectComponent } from \"./select.component\";\r\nimport { toBoolean } from \"./../util/convert\";\r\n\r\n\r\n/**\r\n * @skipTemplateDoc true\r\n * Component for representing an option in a dropdown list.\r\n *\r\n *```\r\n * <mefdev-select>\r\n * <mefdev-option Value=\"1\" Label=\"Option 1\"></mefdev-option>\r\n * <mefdev-option Value=\"2\" Label=\"Option 2\"></mefdev-option>\r\n * <mefdev-option Value=\"3\" Label=\"Option 3\"></mefdev-option>\r\n * </mefdev-select>\r\n *```\r\n *\r\n */\r\n@Component({\r\n selector: \"mefdev-option\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./option.component.html\",\r\n styleUrls: [],\r\n standalone: false\r\n})\r\nexport class MefDevOptionComponent implements OnDestroy, OnInit {\r\n\tprivate _disabled = false;\r\n\r\n\t_value: string;\r\n\t_label: string;\r\n\r\n\t/**\r\n \t* Template for the content of the option.\r\n \t*/\r\n\t@ContentChild(\"OptionTemplate\") OptionTemplate: any;\r\n\r\n\t /**\r\n * The value of the option.\r\n */\r\n\t@Input()\r\n\tset Value(value: string) {\r\n\t\tif (this._value === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._value = value;\r\n\t}\r\n\r\n\tget Value(): string {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t/**\r\n * The label of the option.\r\n */\r\n\t@Input()\r\n\tset Label(value: string) {\r\n\t\tif (this._label === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._label = value;\r\n\t}\r\n\r\n\tget Label(): string {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n * Indicates whether the option is disabled.\r\n */\r\n\t@Input()\r\n\tset Disabled(value: boolean) {\r\n\t\tthis._disabled = toBoolean(value);\r\n\t}\r\n\r\n\tget Disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\tconstructor(private _Select: MefDevSelectComponent) {}\r\n\r\n\t/**\r\n * Initialization lifecycle hook.\r\n * Adds the option to the dropdown list.\r\n */\r\n\tngOnInit(): void {\r\n\t\tthis._Select.addOption(this);\r\n\t}\r\n\r\n\t/**\r\n * Destruction lifecycle hook.\r\n * Removes the option from the dropdown list.\r\n */\r\n\tngOnDestroy(): void {\r\n\t\tthis._Select.removeOption(this);\r\n\t}\r\n}\r\n","<ng-content></ng-content>","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n/**\r\n * Datepicker Component for selecting dates.\r\n *\r\n * This component allows users to pick a date from a calendar interface.\r\n * It supports various configuration options such as language, date format, and date range.\r\n *\r\n * @example\r\n * <mefdev-datepicker\r\n * [labelContentText]=\"'Select your date'\"\r\n * [lang]=\"'uk'\"\r\n * [dateFormat]=\"'dd/MM/yyyy'\"\r\n * [range]=\"{startYear: 1900, toYear: 300}\"\r\n * [disabled]=\"false\"\r\n * (dateChanged)=\"onDateChanged($event)\"\r\n * [topOffset]=\"'20'\"\r\n * [leftOffset]=\"'10'\">\r\n * </mefdev-datepicker>\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/datepicker</example-url>\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-datepicker',\r\n templateUrl: './datepicker.component.html',\r\n styleUrls: ['./datepicker.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class DatepickerComponent implements OnChanges, OnInit {\r\n\r\n /**\r\n * A flag that checks whether a valid date has been entered and whether the entered date exists.\r\n * If the two previous conditions are not true, the datepicker will be highlighted in red\r\n */\r\n isUserDateValid: boolean = true;\r\n\r\n /**\r\n * Flag to determine if the calendar is open or closed.\r\n * Default value: false (closed).\r\n */\r\n isCalendarOpen: boolean = false;\r\n\r\n /**\r\n * The currently selected date.\r\n * Default value: Today's date.\r\n */\r\n selectedDate: Date = new Date();\r\n\r\n /**\r\n * The formatted date for display in the input.\r\n * Default value: Formatted representation of the selected date.\r\n */\r\n formattedDate: any ;\r\n\r\n /**\r\n * Track the edited date separately when in editing mode.\r\n * Default value: An empty string.\r\n */\r\n editedDate: string = '';\r\n\r\n /**\r\n * Flag to determine if the month dropdown is open or closed.\r\n * Default value: true (open).\r\n */\r\n isMonthDropdownOpen: boolean = true;\r\n\r\n /**\r\n * Flag to determine if the year dropdown is open or closed.\r\n * Default value: true (open).\r\n */\r\n isYearDropdownOpen: boolean = true;\r\n\r\n /**\r\n * The selected month (0-11).\r\n * Default value: The month of the selected date.\r\n */\r\n selectedDateMonth: number = this.selectedDate.getMonth();\r\n\r\n /**\r\n * The selected year.\r\n * Default value: The year of the selected date.\r\n */\r\n selectedDateYear: number = this.selectedDate.getFullYear();\r\n\r\n /**\r\n * An array of years for the year dropdown.\r\n * Default value: An array of years within the specified range.\r\n */\r\n years: number[]\r\n\r\n /**\r\n * Label text for the datepicker.\r\n * Default value: 'en' (English).\r\n * @example\r\n * <mefdev-datepicker\r\n * [labelContentText] = \"'Chose your date'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() labelContentText: string;\r\n\r\n /**\r\n * The language/locale for the datepicker.\r\n * Default value: 'en' (English).\r\n * @example\r\n * <mefdev-datepicker\r\n * [lang] = \"'uk'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() lang: string = 'en';\r\n\r\n /**\r\n * The date format for displaying the selected date.\r\n * Default value: 'EEE MMM dd yyyy'.\r\n * @example\r\n * <mefdev-datepicker\r\n * [dateFormat]=\"'dd/MM/yyyy'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() dateFormat: string = 'EEE MMM dd yyyy';\r\n\r\n /**\r\n * The range of years available in the year dropdown.\r\n * Default value: { startYear: 1900, toYear: 300 }.\r\n * @example\r\n * <mefdev-datepicker\r\n * [range]=\"{startYear: 1900, toYear: 300}\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input('range') yearsRange:{startYear:number, toYear:number} = {startYear:1900, toYear:300};\r\n\r\n /**\r\n * Whether the datepicker is disabled or not.\r\n * Default value: false (enabled).\r\n * @example\r\n * <mefdev-datepicker\r\n * [disabled]=\"false\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * The top offset for positioning the datepicker.\r\n * Default value: '20'.\r\n * @example\r\n * <mefdev-datepicker\r\n * [topOffset]=\"'20'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() topOffset: string = '20';\r\n\r\n /**\r\n * The left offset for positioning the datepicker.\r\n * Default value: '10'.\r\n * @example\r\n * <mefdev-datepicker\r\n * [leftOffset]=\"'10'\">\r\n * </mefdev-datepicker>\r\n */\r\n @Input() leftOffset: string = '10'; //Default value\r\n\r\n /**\r\n * Event emitted when the selected date in the datepicker changes.\r\n * It emits a `Date` object representing the selected date.\r\n * @example\r\n * <mefdev-datepicker\r\n * (dateChanged)=\"onDateChanged($event)\">\r\n * </mefdev-datepicker>\r\n */\r\n @Output() dateChanged: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n /**\r\n * Regular expression to validate user input for date in the format \"dd/MM/yyyy\".\r\n * - The day (dd) should be between 01 and 31.\r\n * - The month (MM) should be between 01 and 12.\r\n * - The year (yyyy) should be a 4-digit number.\r\n */\r\n private dateRegExp: RegExp = /^(0[1-9]|[12][0-9]|3[01])\\/(0[1-9]|1[0-2])\\/\\d{4}$/;\r\n\r\n /**\r\n * The string entered by the user for date input.\r\n * This variable stores the user's input as they type in the date field.\r\n */\r\n userInput: string = '';\r\n\r\n /**\r\n * Host listener for document click events to handle calendar interaction.\r\n * This function checks if a click event occurred within the calendar or input elements.\r\n * - If the click occurred within the calendar, no action is taken.\r\n * - If the click occurred within the input element and the component is not in editing mode,\r\n * it opens the calendar.\r\n * @param event The MouseEvent object representing the click event.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const targetElement = event.target as HTMLElement;\r\n const datepickerContainer = this.elementRef.nativeElement.querySelector('.datepicker-container');\r\n const calendar = this.elementRef.nativeElement.querySelector('.calendar');\r\n const monthDropdown = this.elementRef.nativeElement.querySelector('.monthDropdown');\r\n const yearDropdown = this.elementRef.nativeElement.querySelector('.yearDropdown');\r\n const inputElement = this.elementRef.nativeElement.querySelector('input');\r\n\r\n if (datepickerContainer && datepickerContainer.contains(calendar)) {\r\n if (calendar && calendar.contains(targetElement)) return;\r\n if (this.isMonthDropdownOpen && !calendar.contains(targetElement)) return;\r\n if (this.isYearDropdownOpen && !calendar.contains(targetElement)) return;\r\n if ((monthDropdown && monthDropdown.contains(targetElement)) && (yearDropdown && yearDropdown.contains(targetElement))) {\r\n this.toggleMonthDropdown(event)\r\n this.toggleYearDropdown(event)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Constructor for the DatepickerComponent class.\r\n * @param datePipe A service for formatting and parsing dates.\r\n * @param elementRef A reference to the element on which this component is attached.\r\n * It is used to access DOM elements.\r\n */\r\n constructor(private datePipe: DatePipe, private elementRef: ElementRef) {\r\n this.updateInputValue()\r\n }\r\n\r\n /**\r\n * Lifecycle hook called after the component is initialized.\r\n * It initializes the years for the year select dropdown.\r\n */\r\n ngOnInit(){\r\n this.initializeYears();\r\n }\r\n\r\n /**\r\n * Lifecycle hook called whenever the input properties of the component change.\r\n * It updates the input value.\r\n */\r\n ngOnChanges() {\r\n this.updateInputValue();\r\n }\r\n\r\n /**\r\n * An array of month names based on the selected language.\r\n * It provides localized month names for display in the datepicker.\r\n */\r\n private get months(){\r\n return this.getMonthList(this.lang);\r\n }\r\n\r\n /**\r\n * An array of weekday names based on the selected language.\r\n * It provides localized weekday names for display in the datepicker.\r\n */\r\n private get weekdays() {\r\n return this.getWeekdayList(this.lang);\r\n }\r\n\r\n /**\r\n * Initialize the list of years to be displayed in the year dropdown.\r\n * This method populates the 'years' array with a range of years based on the provided 'yearsRange' configuration.\r\n * @example\r\n * ```\r\n * // Assuming 'yearsRange' is { startYear: 1900, toYear: 300 }\r\n * // After calling initializeYears(), 'years' might contain [1900, 1901, ..., 300]\r\n * this.initializeYears();\r\n * ```\r\n */\r\n private initializeYears() {\r\n this.years = Array.from({ length: this.yearsRange.toYear }, (_, index) => index + this.yearsRange.startYear);\r\n }\r\n\r\n /**\r\n * Toggle the editing mode for the date input. When enabled, the user can edit the date directly in the input field.\r\n */\r\n toggleEdit() {\r\n this.editedDate = this.formatSelectedDate(); // Store the current formatted date for editing\r\n this.isCalendarOpen = false;\r\n }\r\n\r\n /**\r\n * Get a list of month names in the specified language and format.\r\n * @param locales - An optional parameter specifying the locale or locales to use for formatting.\r\n * @param format - The format for month names, either \"long\" (default) or \"short\".\r\n * @returns An array of month names based on the provided format and locale.\r\n * ```\r\n * // Get a list of month names in the default language and long format\r\n * const months = this.getMonthList(this.lang);\r\n * ```\r\n */\r\n private getMonthList( locales?: string | string[], format: \"long\" | \"short\" = \"long\"): string[] {\r\n const year = new Date().getFullYear();\r\n const monthList = [...Array(12).keys()];\r\n const formatter = new Intl.DateTimeFormat(locales, { month: format });\r\n const getMonthName = (monthIndex: number) => formatter.format(new Date(year, monthIndex));\r\n return monthList.map(getMonthName);\r\n }\r\n\r\n /**\r\n * Get a list of weekday names in the specified language and format.\r\n * @param locales - An optional parameter specifying the locale or locales to use for formatting.\r\n * @param format - The format for weekday names, either \"short\" (default) or \"long\".\r\n * @returns An array of weekday names based on the provided format and locale.\r\n * ```\r\n * // Get a list of weekday names in the default language and short format\r\n * const weekdays = this.getWeekdayList();\r\n * ```\r\n */\r\n private getWeekdayList(locales?: string | string[], format: \"short\" | \"long\" = \"short\"): string[] {\r\n const weekdays = [...Array(7).keys()];\r\n const mondayIndex = weekdays.indexOf(0);\r\n weekdays.splice(mondayIndex, 1);\r\n weekdays.push(0);\r\n const formatter = new Intl.DateTimeFormat(locales, { weekday: format });\r\n const getWeekdayName = (weekdayIndex: number) => {\r\n return formatter.format(new Date(2023, 9, weekdayIndex + 1));\r\n };\r\n return weekdays.map(getWeekdayName);\r\n }\r\n\r\n /**\r\n * Save the edited date input by the user, provided it matches the specified date format.\r\n * This method checks if the entered date is in a valid format, disables the editing mode, and applies\r\n * the edited date to the 'selectedDate'. It then reformats the selected date and closes the calendar.\r\n * ```\r\n * // Save the edited date and update the selected date\r\n * this.saveEditedDate();\r\n * ```\r\n */\r\n private saveEditedDate() {\r\n if (this.isDateValid(this.editedDate)) {\r\n const [day, month, year] = this.editedDate.split('/');\r\n this.selectedDate = new Date(+year, +month - 1, +day);\r\n this.formatDate();\r\n }\r\n }\r\n\r\n /**\r\n * Handle user input in the editable input field for date editing. This method captures the input value\r\n * and stores it in the 'editedDate' variable. If the input matches the valid date format, it updates\r\n * 'selectedDateMonth' and 'selectedDateYear' accordingly.\r\n * @param event - The input event containing the user's input.\r\n * ```\r\n * // Handle user input in the editable input field\r\n * this.onDateInput(event);\r\n * ```\r\n */\r\n public onDateInput(event: any) {\r\n const inputDate: string = event.target.value;\r\n if (this.isDateValid(inputDate)) {\r\n this.editedDate = inputDate;\r\n const parsedDate = inputDate.split('/');\r\n this.selectedDateMonth = +parsedDate[1] - 1;\r\n this.selectedDateYear = +parsedDate[2];\r\n this.selectedDate = new Date(+parsedDate[2], +parsedDate[1] - 1, +parsedDate[0]);\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n this.isUserDateValid = this.isDateValid(inputDate);\r\n }\r\n\r\n /**\r\n * Toggle the visibility of the month dropdown in the calendar interface.\r\n * This method is used to open or close the dropdown for selecting months.\r\n * @param event - The event triggering the toggle action (e.g., a click event).\r\n * ```\r\n * // Toggle the visibility of the month dropdown\r\n * this.toggleMonthDropdown(event);\r\n * ```\r\n */\r\n private toggleMonthDropdown(event: Event) {\r\n this.isMonthDropdownOpen = !this.isMonthDropdownOpen;\r\n }\r\n\r\n /**\r\n * Toggle the visibility of the year dropdown in the calendar interface.\r\n * This method is used to open or close the dropdown for selecting years.\r\n * @param event - The event triggering the toggle action (e.g., a click event).\r\n * ```\r\n * // Toggle the visibility of the year dropdown\r\n * this.toggleYearDropdown(event);\r\n * ```\r\n */\r\n private toggleYearDropdown(event: Event) {\r\n this.isYearDropdownOpen = !this.isYearDropdownOpen;\r\n }\r\n\r\n /**\r\n * Handle the change of the selected month in the calendar interface.\r\n * This method updates the input value, sets the selected date to the first day of the chosen month,\r\n * and recalculates the calendar display accordingly.\r\n * ```\r\n * // Handle the change of the selected month\r\n * this.onMonthChange();\r\n * ```\r\n */\r\n private onMonthChange() {\r\n this.updateInputValue();\r\n this.selectedDate = new Date(this.selectedDateYear, this.selectedDateMonth, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n /**\r\n * Handle the change of the selected year in the calendar interface.\r\n * This method updates the input value, sets the selected date to the first day of the chosen year,\r\n * reformats the selected date, and recalculates the calendar display.\r\n * ```\r\n * // Handle the change of the selected year\r\n * this.onYearChange();\r\n * ```\r\n */\r\n private onYearChange() {\r\n this.updateInputValue();\r\n this.selectedDate = new Date(this.selectedDateYear, this.selectedDateMonth, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n\r\n /**\r\n * Select a date in the calendar interface and perform necessary updates.\r\n * This method sets the selected date, formats it, closes the calendar, and emits a dateChanged event.\r\n * It also updates the selected month and year dropdown values.\r\n * @param date - The date to be selected in the calendar.\r\n */\r\n selectDate(date: Date) {\r\n this.selectedDate = date;\r\n this.formatDate();\r\n this.isCalendarOpen = false;\r\n this.dateChanged.next(this.selectedDate);\r\n this.selectedDateMonth = this.selectedDate.getMonth();\r\n this.selectedDateYear = this.selectedDate.getFullYear();\r\n }\r\n\r\n /**\r\n * Format the selected date based on the chosen date format and language.\r\n * This method uses the Angular DatePipe to format the selected date and updates the formattedDate variable.\r\n * ```\r\n * // Format the selected date\r\n * this.formatDate();\r\n * ```\r\n */\r\n private formatDate() {\r\n this.formattedDate = this.datePipe.transform(this.selectedDate, this.dateFormat) || '';\r\n }\r\n\r\n /**\r\n * Format the selected date based on the chosen date format, language, and locale.\r\n * This method uses the Angular DatePipe to format the selected date with the specified language and updates the formatted date as a string.\r\n * @returns A formatted date string.\r\n * ```\r\n * // Format the selected date with language\r\n * const formatted = this.formatSelectedDate();\r\n * ```\r\n */\r\n private formatSelectedDate(): string {\r\n return this.datePipe.transform(this.selectedDate, this.dateFormat, this.lang) || '';\r\n }\r\n\r\n /**\r\n * Update the input value displayed in the calendar interface.\r\n * This method updates the input value to either the edited date or the formatted selected date,\r\n * depending on whether the user is in edit mode or not.\r\n * ```\r\n * // Update the input value\r\n * this.updateInputValue();\r\n * ```\r\n */\r\n private updateInputValue() {\r\n this.formattedDate = this.isCalendarOpen ? this.editedDate : this.formatSelectedDate();\r\n }\r\n\r\n /**\r\n * Get an array of arrays representing the days of the current month.\r\n * Each sub-array contains the day data for a week, and each day data object includes the date and whether it belongs to the current month.\r\n * @returns An array of arrays representing the days of the current month.\r\n * ```\r\n * // Get an array of arrays representing the days of the current month\r\n * const calendar = this.calendarDays;\r\n * ```\r\n */\r\n private get calendarDays() {\r\n return this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n /**\r\n * Get the date of the previous month to display in empty cells of the current month.\r\n * This method returns the date of the previous month if the provided date is not in the current month.\r\n * If the provided date is in the current month, it returns the date's day as a string.\r\n * @param date - The date to evaluate.\r\n * @returns The date of the previous month or a day string.\r\n * ```\r\n * // Get the previous month's date to display in empty cells\r\n * const previousMonthDate = this.getPreviousMonthDate(new Date(2023, 8, 1));\r\n * ```\r\n */\r\n private getPreviousMonthDate(date: Date): any {\r\n if (!date) {\r\n return '';\r\n }\r\n const currentDate = new Date();\r\n if (date.getMonth() === currentDate.getMonth() && date.getFullYear() === currentDate.getFullYear()) {\r\n return date.getDate().toString();\r\n } else {\r\n return this.datePipe.transform(date, 'dd');\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Navigate to the previous month in the calendar interface.\r\n * This method updates the selectedDate, formats it, and recalculates the first day of the calendar.\r\n * ```\r\n * // Navigate to the previous month\r\n * this.getPreviousMonth();\r\n * ```\r\n */\r\n private getPreviousMonth() {\r\n const currentMonth = this.selectedDate.getMonth();\r\n this.selectedDate = new Date(this.selectedDate.getFullYear(), currentMonth - 1, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n /**\r\n * Navigate to the next month in the calendar interface.\r\n * This method updates the selectedDate, formats it, and recalculates the first day of the calendar.\r\n * ```\r\n * // Navigate to the next month\r\n * this.getNextMonth();\r\n * ```\r\n */\r\n private getNextMonth() {\r\n const currentMonth = this.selectedDate.getMonth();\r\n this.selectedDate = new Date(this.selectedDate.getFullYear(), currentMonth + 1, 1);\r\n this.formatDate();\r\n this.calculateFirstDayOfCalendar();\r\n }\r\n\r\n\r\n /**\r\n * Get the number of days in a given month of a specific year.\r\n * @param year - The year for which you want to determine the number of days.\r\n * @param month - The month (0-based index) for which you want to determine the number of days.\r\n * @returns The number of days in the specified month of the given year.\r\n */\r\n private daysInMonth(year: number, month: number): number {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n\r\n /**\r\n * Calculate the structure of days in a month for the calendar display.\r\n * This method generates a matrix of day data objects representing the days in the calendar.\r\n * Each day data object contains the date and whether it belongs to the current month.\r\n * @returns A matrix of day data objects for the calendar display.\r\n */\r\n private calculateFirstDayOfCalendar() {\r\n const year = this.selectedDate.getFullYear();\r\n const month = this.selectedDate.getMonth();\r\n const firstDayOfMonth = new Date(year, month, 1);\r\n const firstWeekday = firstDayOfMonth.getDay();\r\n const startDay = firstWeekday === 0 ? -5 : 2 - firstWeekday;\r\n const calendarDays = [];\r\n let currentDay = startDay;\r\n for (let i = 0; i < 6; i++) {\r\n const week = [];\r\n for (let j = 0; j < 7; j++) {\r\n const day = new Date(year, month, currentDay);\r\n const dayData = {\r\n date: day,\r\n isCurrentMonth: currentDay >= 1 && currentDay <= this.daysInMonth(year, month),\r\n };\r\n week.push(dayData);\r\n currentDay++;\r\n }\r\n calendarDays.push(week);\r\n }\r\n return calendarDays;\r\n }\r\n\r\n /**\r\n * Check if a given date is the currently selected date in the calendar.\r\n * @param date - The date to check.\r\n * @returns `true` if the provided date matches the selected date, otherwise `false`.\r\n * ```\r\n * // Check if a date is selected\r\n * const isSelected = this.isDateSelected(someDate);\r\n * ```\r\n */\r\n private isDateSelected(date: Date) {\r\n return date.toDateString() === this.selectedDate.toDateString();\r\n }\r\n\r\n /**\r\n * Check if a date string is valid based on the specified date format.\r\n * It also checks whether the specified number, month is correct and whether the specified one exists among calendar years\r\n * @param inputDate - The date string to validate.\r\n * @returns `true` if the input date string is valid, otherwise `false`.\r\n * ```\r\n * // Check if a date string is valid\r\n * const isValidDate = this.isDateValid('05/25/2023');\r\n * ```\r\n */\r\n private isDateValid(inputDate: string) {\r\n if (!this.dateRegExp.test(inputDate)) {\r\n return false;\r\n }\r\n\r\n const parts = inputDate.split('/');\r\n const day = parseInt(parts[0], 10);\r\n const month = parseInt(parts[1], 10);\r\n const year = parseInt(parts[2], 10);\r\n\r\n if (year > this.years[this.years.length - 1] || year < this.years[0]) {\r\n return false\r\n }\r\n\r\n const daysInMonth = new Date(year, month, 0).getDate();\r\n return day <= daysInMonth;\r\n }\r\n\r\n /**\r\n * Check if a given date is today's date.\r\n * @param date - The date to check.\r\n * @returns `true` if the provided date is today's date, otherwise `false`.\r\n * ```\r\n * // Check if a date is today's date\r\n * const isToday = this.isDateToday(someDate);\r\n * ```\r\n */\r\n private isDateToday(date: Date) {\r\n const today = new Date();\r\n return date.toDateString() === today.toDateString();\r\n }\r\n}\r\n","<div class=\"datepicker-container\" [class.disabled]=\"disabled\">\r\n\r\n <!-- Input, save & edit buttons -->\r\n <div class=\"input-container form-group\">\r\n <label *ngIf=\"labelContentText\" class=\"form-label\"> {{ labelContentText }} </label>\r\n <input\r\n [ngClass]=\"{ 'calendarNotOpened': !isCalendarOpen }\"\r\n [ngStyle]=\"{ 'border-color': isUserDateValid ? '' : 'red' }\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n (input)=\"onDateInput($event)\"\r\n (click)=\"isCalendarOpen = true\"\r\n [value]=\"formattedDate\"\r\n [readOnly]=\"!isCalendarOpen\"\r\n >\r\n </div>\r\n\r\n <!-- Calendar(Dropdowns, dates) -->\r\n <div *ngIf=\"isCalendarOpen\" class=\"calendar\" #calendarContainer\r\n [style.top]=\"topOffset\"\r\n [style.left]=\"leftOffset\">\r\n <div class=\"calendar-header\">\r\n <div class=\"monthButtonContainer\">\r\n <!-- Month dropdown -->\r\n <ng-container *ngIf=\"isMonthDropdownOpen; else monthLabel\">\r\n <mefdev-select\r\n class=\"monthDropdown\"\r\n [(ngModel)]=\"selectedDateMonth\"\r\n (ngModelChange)=\"onMonthChange()\"\r\n [PlaceHolder]=\"'month'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let month of months; let i = index\"\r\n [Value]=\"i\"\r\n [Label]=\"month\"\r\n style=\"z-index: 1\"\r\n >{{ month }}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #monthLabel>\r\n <span (click)=\"toggleMonthDropdown($event)\"></span>\r\n </ng-template>\r\n\r\n <!-- Year dropdown -->\r\n <ng-container *ngIf=\"isYearDropdownOpen; else yearLabel\">\r\n <mefdev-select\r\n class=\"yearDropdown\"\r\n [(ngModel)]=\"selectedDateYear\"\r\n (ngModelChange)=\"onYearChange()\"\r\n [PlaceHolder]=\"'year'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let year of years\"\r\n [Label]=\"year\"\r\n [Value]=\"year\"\r\n >{{year}}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #yearLabel>\r\n <span (click)=\"toggleYearDropdown($event)\">{{ selectedDateYear }}</span>\r\n </ng-template>\r\n </div>\r\n <!-- Calendar exit button -->\r\n <div>\r\n <i class=\"fa fa-times toggleCalendarButton\" (click)=\"isCalendarOpen = false\" aria-hidden=\"true\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n <table>\r\n <tr>\r\n <th class=\"text-center\" *ngFor=\"let weekday of weekdays\">{{ weekday }}</th>\r\n </tr>\r\n <tr *ngFor=\"let week of calendarDays\">\r\n <td *ngFor=\"let dayData of week\"\r\n (click)=\"selectDate(dayData.date)\"\r\n [ngClass]=\"{ 'selected': isDateSelected(dayData.date), 'prev-month': !dayData.isCurrentMonth }\">\r\n\r\n <span class=\"date\" [class.prev-month]=\"!dayData.isCurrentMonth\">\r\n {{ dayData.date.getDate() }}\r\n </span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</div>\r\n","import { OverlayModule } from \"@angular/cdk/overlay\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MefDevOptionComponent } from \"./option.component\";\r\nimport { OptionPipe } from \"./option.pipe\";\r\nimport { MefDevSelectComponent } from \"./select.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, OverlayModule],\r\n declarations: [OptionPipe, MefDevOptionComponent, MefDevSelectComponent],\r\n exports: [OptionPipe, MefDevOptionComponent, MefDevSelectComponent]\r\n})\r\nexport class MefDevSelectModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { DatepickerComponent } from './datepicker/datepicker.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MefDevSelectModule } from '../../../pg-components/select';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [DatepickerComponent],\r\n exports: [DatepickerComponent],\r\n imports: [CommonModule, FormsModule, DatePipe, MefDevSelectModule],\r\n providers:[DatePipe]\r\n})\r\nexport class MefDevDatepickerModule { }\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Component representing a progress bar.\r\n * \r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-progress type=\"linear\" color=\"blue\" [thick]=\"true\"></mefdev-progress>\r\n * <mefdev-progress type=\"circle\" color=\"red\" [indeterminate]=\"true\"></mefdev-progress>\r\n * ```\r\n */\r\n@Component({\r\n selector: \"mefdev-progress\",\r\n templateUrl: \"./progress.component.html\",\r\n standalone: false\r\n})\r\nexport class MefDevProgressComponent {\r\n _value: number;\r\n _value2: any;\r\n\r\n /**\r\n * The type of progress bar.\r\n * Possible values: \"linear\" | \"circle\".\r\n * Default value: \"linear\".\r\n */\r\n @Input() type: string;\r\n\r\n /**\r\n * The color of the progress bar.\r\n * Possible values: any valid CSS color value.\r\n * Default value: none.\r\n */\r\n\r\n @Input() color: string;\r\n\r\n /**\r\n * Determines whether the progress bar is thick.\r\n * Default value: false.\r\n */\r\n @Input() thick: boolean;\r\n\r\n /**\r\n * Determines whether the progress bar is indeterminate.\r\n * Default value: false.\r\n */\r\n @Input() indeterminate: boolean;\r\n\r\n\r\n /**\r\n * The value of the progress bar.\r\n * For the \"circle\" type, it should be a number between 0 and 100.\r\n */\r\n @Input() set value(value: number) {\r\n if (this.type == \"circle\") {\r\n this._value = (value / 100) * 360;\r\n if (this.value >= 50) {\r\n this._value2 = true;\r\n }\r\n } else this._value = value;\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * Additional value property.\r\n */\r\n get value2() {\r\n return this._value2;\r\n }\r\n constructor() {}\r\n}\r\n","<div *ngIf=\"type === 'bar'; else circleBlock\">\r\n <div *ngIf=\"indeterminate; else determineBarBlock\">\r\n <div class=\"progress\" [class.progress-small]=\"!thick\">\r\n <div class=\"progress-bar-{{ color }}\" [class.progress-bar-indeterminate]=\"indeterminate\"></div>\r\n </div>\r\n </div>\r\n <ng-template #determineBarBlock>\r\n <div class=\"progress\" [class.progress-small]=\"!thick\">\r\n <div class=\"progress-bar progress-bar-{{ color }}\" [ngStyle]=\"{ width: value + '%' }\"></div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n<ng-template #circleBlock>\r\n <div class=\"progress-circle-{{ color }}\" [class.progress-circle-indeterminate]=\"indeterminate\"\r\n [class.progress-circle]=\"!indeterminate\" [class.progress-circle-thick]=\"thick\">\r\n <div *ngIf=\"indeterminate; else determineBlock\"></div>\r\n <ng-template #determineBlock>\r\n <div class=\"pie\" [ngStyle]=\"_value2 && { clip: 'rect(auto, auto, auto, auto)' }\">\r\n <div class=\"left-side half-circle\" [ngStyle]=\"_value2 && { transform: 'rotate(' + value + 'deg)' }\"></div>\r\n <div class=\"right-side half-circle\" [ngStyle]=\"{\r\n transform:\r\n _value2 === true ? 'rotate(180deg)' : 'rotate(' + value + 'deg)'\r\n }\"></div>\r\n </div>\r\n <div class=\"shadow\"></div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import {\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ViewChild,\r\n TemplateRef,\r\n ContentChild,\r\n EventEmitter,\r\n Output\r\n} from \"@angular/core\";\r\n\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from \"@angular/animations\";\r\n\r\n/**\r\n * Component representing a custom card.\r\n * It provides various styling and animation options for the card layout.\r\n *\r\n * Example usage:\r\n * ```\r\n * <mefdev-inner-card [Title]=\"'Card Title'\" [Type]=\"'default'\" [MinimalHeader]=\"false\" [ProgressType]=\"'circle'\">\r\n * Card content goes here...\r\n * </mefdev-inner-card>\r\n * ```\r\n */\r\n@Component({\r\n selector: \"mefdev-inner-card\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./card.components.html\",\r\n animations: [\r\n trigger(\"collapseState\", [\r\n state(\"inactive\", style({\r\n opacity: \"0\",\r\n height: 0,\r\n paddingBottom: \"0\"\r\n })),\r\n state(\"active\", style({\r\n opacity: \"1\",\r\n height: \"*\",\r\n paddingBottom: \"*\"\r\n })),\r\n transition(\"inactive => active\", animate(\"125ms ease-in\")),\r\n transition(\"active => inactive\", animate(\"125ms ease-out\"))\r\n ]),\r\n trigger(\"fadeAnimation\", [\r\n state(\"false\", style({\r\n opacity: \"0\",\r\n visibility: \"hidden\"\r\n })),\r\n state(\"true\", style({\r\n opacity: \"1\",\r\n visibility: \"visible\"\r\n })),\r\n transition(\"false => true\", animate(\"500ms ease-in\")),\r\n transition(\"true => false\", animate(\"500ms ease-out\"))\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class MefdevInnerCard {\r\n\r\n // constructor() {\r\n // console.log('1')\r\n // }\r\n\r\n /**\r\n * Indicates whether the card is collapsed or not.\r\n * Default: false\r\n */\r\n _isCollapsed: boolean = false;\r\n\r\n /**\r\n * Indicates whether the card is maximized or not.\r\n * Default: false\r\n */\r\n _isMaximixed: boolean = false;\r\n\r\n /**\r\n * Indicates whether the card is in loading state or not.\r\n * Default: false\r\n */\r\n _isLoading: boolean = false;\r\n\r\n /**\r\n * Indicates whether the card has a minimal header or not.\r\n * Default: false\r\n */\r\n _minimalHeader: boolean = false;\r\n\r\n /**\r\n * The message to be displayed in the card.\r\n */\r\n _message: string = \"\";\r\n\r\n /**\r\n * The type of message to be displayed in the card (e.g., success, danger, warning).\r\n * Default: \"danger\"\r\n */\r\n _messageType: string = \"danger\";\r\n\r\n /**\r\n * Indicates whether the message in the card is visible or not.\r\n * Default: false\r\n */\r\n _messageVisible: boolean = false;\r\n\r\n /**\r\n * The type of progress indicator to be displayed in the card (e.g., circle, bar, none).\r\n * Default: \"circle\"\r\n */\r\n _progressType: string = \"circle\";\r\n\r\n /**\r\n * The color of the progress indicator in the card.\r\n */\r\n _progressColor: string = \"\";\r\n\r\n /**\r\n * Indicates whether the tools (e.g., refresh, close, maximize) are shown in the card header or not.\r\n * Default: true\r\n */\r\n _showTools: boolean = true;\r\n\r\n\r\n _close_card: boolean = false;\r\n _refresh: boolean = false;\r\n _refreshColor: string = \"light\";\r\n\r\n /**\r\n * Indicates whether the close button in the card is visible or not.\r\n * Default: true\r\n */\r\n _close: boolean = true;\r\n\r\n /**\r\n * Indicates whether the toggle button in the card is visible or not.\r\n * Default: true\r\n */\r\n _toggle: boolean = true;\r\n\r\n /**\r\n * Indicates whether the maximize button in the card is visible or not.\r\n * Default: true\r\n */\r\n _maximize: boolean = true;\r\n\r\n /**\r\n * The timeout value in milliseconds for the loading state of the card.\r\n * If set to 0, the loading state will not automatically turn off.\r\n * Default: 0\r\n */\r\n _timeout: number = 0;\r\n\r\n /**\r\n * The title text to be displayed in the card header.\r\n */\r\n _titleText: string = \"\";\r\n\r\n /**\r\n * The border style of the card.\r\n */\r\n _card_border_style: string = \"\";\r\n\r\n /**\r\n * The type of the card (e.g., default, bordered, minimal).\r\n * Default: \"default\"\r\n */\r\n _type: string = \"default\";\r\n\r\n\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card header.\r\n */\r\n _extraHeaderClass = \"\";\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card body.\r\n */\r\n _extraBodyClass = \"\";\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card.\r\n */\r\n _additionalClasses = \"\";\r\n\r\n /**\r\n * ViewChild reference to the host content element.\r\n */\r\n @ViewChild(\"hostContent\") _hostContent: ElementRef;\r\n /**\r\n * ViewChild reference to the minimal circle loading element.\r\n */\r\n @ViewChild(\"minimalCircleLoading\") minimalCircleLoading: ElementRef;\r\n /**\r\n * ViewChild reference to the minimal circle loading trigger element.\r\n */\r\n @ViewChild(\"minimalCircleLoadingTrigger\")\r\n minimalCircleLoadingTrigger: ElementRef;\r\n /**\r\n * ContentChild reference to the CardTitle template.\r\n */\r\n @ContentChild(\"CardTitle\") CardTitle: TemplateRef<void>;\r\n /**\r\n * ContentChild reference to the CardExtraControls template.\r\n */\r\n @ContentChild(\"CardExtraControls\") CardExtraControls: TemplateRef<void>;\r\n\r\n\r\n // Input properties\r\n\r\n /**\r\n * The title text to be displayed in the card header.\r\n */\r\n @Input()\r\n set Title(value: string) {\r\n this._titleText = value;\r\n }\r\n get Title() {\r\n return this._titleText;\r\n }\r\n\r\n /**\r\n * The type of the card (e.g., default, bordered, minimal).\r\n * Default: \"default\"\r\n */\r\n @Input()\r\n set Type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card has a minimal header or not.\r\n * Default: false\r\n */\r\n @Input()\r\n set MinimalHeader(value: boolean) {\r\n this._minimalHeader = value;\r\n }\r\n\r\n /**\r\n * The type of progress indicator to be displayed in the card (e.g., circle, bar, none).\r\n * Default: \"circle\"\r\n */\r\n @Input()\r\n set ProgressType(value: string) {\r\n this._progressType = value;\r\n }\r\n\r\n /**\r\n * The color of the progress indicator in the card.\r\n */\r\n @Input()\r\n set ProgressColor(value: string) {\r\n this._progressColor = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a refresh button or not.\r\n */\r\n @Input()\r\n set Refresh(value: boolean) {\r\n this._refresh = value;\r\n }\r\n\r\n /**\r\n * The color of the refresh button in the card (e.g., light, dark).\r\n * Default: \"light\"\r\n */\r\n @Input()\r\n set RefreshColor(value: string) {\r\n this._refreshColor = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a maximize button or not.\r\n */\r\n @Input()\r\n set Maximize(value: boolean) {\r\n this._maximize = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a close button or not.\r\n */\r\n @Input()\r\n set Close(value: boolean) {\r\n this._close = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the card should have a toggle button or not.\r\n */\r\n @Input()\r\n set Toggle(value: boolean) {\r\n this._toggle = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card header.\r\n */\r\n @Input()\r\n set HeaderClass(value: string) {\r\n this._extraHeaderClass = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card body.\r\n */\r\n @Input()\r\n set BodyClass(value: string) {\r\n this._extraBodyClass = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class(es) to be added to the card.\r\n */\r\n @Input()\r\n set AdditionalClasses(value: string) {\r\n this._additionalClasses = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the tools (e.g., refresh, close, maximize) are shown in the card header or not.\r\n */\r\n @Input()\r\n set Controls(value: boolean) {\r\n this._showTools = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the message in the card is visible or not.\r\n */\r\n @Input()\r\n set ShowMessage(value: boolean) {\r\n this._messageVisible = value;\r\n }\r\n\r\n /**\r\n * The message text to be displayed in the card.\r\n */\r\n @Input()\r\n set Message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n /**\r\n * Indicates whether the loading indicator is shown in the card or not.\r\n */\r\n @Input()\r\n set Loading(value: boolean) {\r\n this._isLoading = value;\r\n }\r\n\r\n /**\r\n * The timeout duration for the loading indicator (in milliseconds).\r\n * If set to 0, the loading indicator will be displayed indefinitely until manually dismissed.\r\n * Default: 0\r\n */\r\n @Input()\r\n set TimeOut(value: number) {\r\n this._timeout = value;\r\n }\r\n\r\n /**\r\n * The border style of the card.\r\n */\r\n @Input()\r\n set CardBorderStyle(value: string) {\r\n this._card_border_style = value;\r\n }\r\n\r\n\r\n // Output properties\r\n\r\n /**\r\n * Event emitted when the refresh button is clicked.\r\n */\r\n @Output() onRefresh: EventEmitter<void> = new EventEmitter();\r\n\r\n // Other methods and lifecycle hooks\r\n\r\n /**\r\n * Toggles the collapsed state of the card.\r\n */\r\n toggle(): void {\r\n this._isCollapsed = this._isCollapsed === true ? false : true;\r\n }\r\n\r\n /**\r\n * Maximizes or restores the card to its original position.\r\n */\r\n maximize(): void {\r\n let nativeElement = this._hostContent.nativeElement;\r\n if (this._isMaximixed) {\r\n this._isMaximixed = false;\r\n nativeElement.style.left = null;\r\n nativeElement.style.top = null;\r\n } else {\r\n this._isMaximixed = true;\r\n let pagecontainer: Element = document.querySelector(\".content\") ?? new Element();\r\n console.log(pagecontainer);\r\n let rect = pagecontainer.getBoundingClientRect();\r\n let elementRect = nativeElement.getBoundingClientRect();\r\n let style = window.getComputedStyle(pagecontainer);\r\n\r\n nativeElement.style.left =\r\n parseFloat(style[\"marginLeft\"]) +\r\n parseFloat(style[\"paddingLeft\"]) +\r\n rect.left +\r\n \"px\";\r\n nativeElement.style.top =\r\n parseFloat(style.paddingTop) + rect.top + \"px\";\r\n }\r\n }\r\n\r\n /**\r\n * Dismisses the message in the card.\r\n */\r\n alertDismiss(): void {\r\n this._messageVisible = false;\r\n }\r\n\r\n /**\r\n * Triggers the refresh action of the card.\r\n */\r\n refresh(): void {\r\n if (!this._isLoading) {\r\n this._isLoading = true;\r\n this.onRefresh.emit();\r\n }\r\n if (this._timeout > 0) {\r\n setTimeout(() => {\r\n this._isLoading = false;\r\n }, this._timeout);\r\n }\r\n }\r\n\r\n /**\r\n * Closes the card.\r\n */\r\n close(): void {\r\n this._close_card = true;\r\n }\r\n}\r\n","<div class=\"card card-{{ _type }} {{ _additionalClasses }}\" *ngIf=\"!_close_card\" [class.card-collapsed]=\"_isCollapsed\"\r\n [class.card-maximized]=\"_isMaximixed\" #hostContent class=\"col-sm-12 col-md-6 col-lg-4\"\r\n [ngStyle]=\"{'border': _card_border_style}\">\r\n <div class=\"card-header {{ _extraHeaderClass }}\">\r\n <div class=\"card-title\">\r\n <ng-template [ngTemplateOutlet]=\"CardTitle\"></ng-template>\r\n </div>\r\n <div class=\"card-controls\" *ngIf=\"_showTools == true\">\r\n <ng-template [ngTemplateOutlet]=\"CardExtraControls\"></ng-template>\r\n <ul *ngIf=\"_minimalHeader == false; else minimalBlock\">\r\n <li *ngIf=\"_toggle == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-collapse\" (click)=\"toggle()\"><i\r\n class=\"pg pg-arrow_maximize\" [class.pg-arrow_minimize]=\"_isCollapsed\"></i></a>\r\n </li>\r\n <li *ngIf=\"_refresh == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-refresh\" (click)=\"refresh()\"><i\r\n class=\"card-icon card-icon-refresh\"></i></a>\r\n </li>\r\n <li *ngIf=\"_maximize == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-maximize\" (click)=\"maximize()\"><i\r\n class=\"card-icon card-icon-maximize\"></i></a>\r\n </li>\r\n <li *ngIf=\"_close == true\">\r\n <a href=\"javascript:void(0);\" data-toggle class=\"card-close\" (click)=\"close()\"><i\r\n class=\"card-icon card-icon-close\"></i></a>\r\n </li>\r\n </ul>\r\n <!-- <ng-template #minimalBlock>\r\n <ul>\r\n <li>\r\n <a href=\"javascript:void(0);\" (click)=\"refresh()\" class=\"card-refresh minimal\"\r\n [class.refreshing]=\"_isLoading\">\r\n <i #minimalCircleLoadingTrigger class=\"card-icon card-icon-refresh-lg-{{\r\n _refreshColor == 'light' ? 'white' : 'master'\r\n }}\" [class.fade]=\"_isLoading\"></i>\r\n <i #minimalCircleLoading class=\"card-icon-refresh-lg-white-animated\"\r\n style=\"position: absolute;top:0;left:0\" [class.active]=\"_isLoading\"\r\n [class.hide]=\"_isLoading != true\"></i>\r\n </a>\r\n </li>\r\n </ul>\r\n </ng-template> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body {{ _extraBodyClass }}\" [@collapseState]=\"_isCollapsed == true ? 'inactive' : 'active'\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"_messageVisible == true\" class=\"pgn-wrapper\" data-position=\"top\">\r\n <div class=\"pgn pgn-bar push-on-sidebar-open\">\r\n <div class=\"alert alert-danger\">\r\n <span>{{ _message }}</span><button class=\"close\" (click)=\"alertDismiss()\" type=\"button\">\r\n <span aria-hidden=\"true\">×</span><span class=\"sr-only\">{{ 'Close' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"_messageVisible == true\" class=\"card-progress\" [style.backgroundColor]=\"\r\n _minimalHeader ? 'rgba(0,0,0, 0.6)' : 'rgba(255, 255, 255, 0.8)'\r\n \" style=\" display: block;\"></div>\r\n <div [@fadeAnimation]=\"_isLoading\" class=\"card-progress\" [style.backgroundColor]=\"\r\n _minimalHeader ? 'rgba(0,0,0, 0.6)' : 'rgba(255, 255, 255, 0.8)'\r\n \" style=\"display: block;pointer-events: none\">\r\n <mefdev-progress *ngIf=\"_minimalHeader == false\" type=\"{{ _progressType }}\" color=\"{{ _progressColor }}\"\r\n indeterminate=\"true\" class=\"\"></mefdev-progress>\r\n </div>\r\n</div>","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/**\r\n * Component for displaying a card with a title, image, and description.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-card>\r\n * <ng-template #card_title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * <ng-template #card_footer>\r\n * <!-- Content for the card footer -->\r\n * </ng-template>\r\n * </mefdev-card>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n standalone: false\r\n})\r\nexport class CardComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the content of the card title.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card>\r\n * <ng-template #card_title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * </mefdev-card>\r\n * ```\r\n */\r\n @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the content of the card footer.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card>\r\n * <ng-template #card_footer>\r\n * <!-- Content for the card footer -->\r\n * </ng-template>\r\n * </mefdev-card>\r\n * ```\r\n */\r\n @ContentChild(\"card_footer\") card_footer: TemplateRef<void>;\r\n\r\n /**\r\n * The type of the card.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [card_type] = \"'type'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() card_type: string;\r\n\r\n /**\r\n * The path to the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [img] = \"'img/path/img.png'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() img: string;\r\n\r\n /**\r\n * The path, where user goes after click at the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [imgUrl] = \"'Img.url'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() imgUrl: string;\r\n\r\n /**\r\n * The description of the card.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card [description] = \"'description'\"></mefdev-card>\r\n * ```\r\n */\r\n @Input() description: string;\r\n\r\n\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Event handler for image click.\r\n * Navigates to the specified URL.\r\n */\r\n public imgClick(){\r\n this.router.navigate(['/', this.imgUrl.toString()])\r\n }\r\n\r\n}\r\n","<mefdev-inner-card\r\n MinimalHeader=\"true\"\r\n TimeOut=\"2500\"\r\n [Refresh]=\"false\"\r\n [Close]=\"false\">\r\n\r\n <ng-template #CardTitle>\r\n <ng-template class=\"card-title body-1\" [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n </ng-template>\r\n\r\n <div class=\"plugin-type\">\r\n {{ card_type }}\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"m-l-2 card-description\">\r\n <div *ngIf=\"!description || description == ''\" class=\"card-no-description\"> {{'No plugin description'}}</div>\r\n <p>\r\n {{description}}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"col-12 mt-3 text-center card-img\"\r\n [ngStyle]=\"{'background-color': img ? 'transparent' : '#fff'}\">\r\n <div *ngIf=\"!img || img == ''\">\r\n <img src=\"assets/images/md_icon.png\"\r\n style=\"max-width: 110px; max-height: 110px;\"/>\r\n </div>\r\n <div *ngIf=\"img\">\r\n <img src=\"{{img}}\" alt=\"\" class=\"image-responsive-height img-middle\"\r\n style=\"max-width: 260px; max-height: 150px;\"\r\n onclick=\"imgClick()\"\r\n />\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row mb-3 mt-3\">\r\n <div class=\"col-12\">\r\n <ng-template [ngTemplateOutlet]=\"card_footer\"></ng-template>\r\n </div>\r\n </div>\r\n</mefdev-inner-card>\r\n","export enum CartTypeColors {\r\n UNSET = 'UNSET',\r\n RED = 'RED',\r\n GREEN = 'GREEN'\r\n }","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { CartTypeColors } from './cart-type-colors.enum';\r\n\r\n /**\r\n * Component for displaying a long card with a title, parameters, and description.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-card-long\r\n * [type_text]=\"'Type Text'\"\r\n * [type_color]=\"CartTypeColors.RED\"\r\n * [img]=\"'path/to/image.jpg'\"\r\n * [imgUrl]=\"'path/to/image'\"\r\n * [description]=\"'Card description'\">\r\n *\r\n * <ng-template #title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n\r\n * <ng-template #params>\r\n * <!-- Content for the card parameters -->\r\n * </ng-template>\r\n\r\n * <ng-template #second_col>\r\n * <!-- Content for the second column -->\r\n * </ng-template>\r\n\r\n * <ng-template #third_col>\r\n * <!-- Content for the third column -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card_long</example-url>\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-card-long',\r\n templateUrl: './card-long.component.html',\r\n styleUrls: ['./card-long.component.scss'],\r\n standalone: false\r\n})\r\nexport class CardLongComponent implements OnInit {\r\n\r\n /**\r\n * Template for displaying the title of the card.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"title\") title: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the parameters of the card.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #params>\r\n * <!-- Content for the card params -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"params\") params: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the second column.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #second_col>\r\n * <!-- Content for the card second column -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"second_col\") second_col: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the third column.\r\n * ```\r\n * <mefdev-card-long>\r\n * <ng-template #third_col>\r\n * <!-- Content for the card third column -->\r\n * </ng-template>\r\n * </mefdev-card-long>\r\n * ```\r\n */\r\n @ContentChild(\"third_col\") third_col: TemplateRef<void>;\r\n\r\n\r\n /**\r\n * The text for the card type.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long type_text = \"'Type'\"></<mefdev-card-long>\r\n * ```\r\n */\r\n @Input() type_text: string;\r\n\r\n /**\r\n * The color of the card type.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long type_color = \"'RED'\"></<mefdev-card-long>\r\n * ```\r\n * Colors: RED, UNSET, GREEN\r\n\r\n */\r\n @Input() type_color: CartTypeColors = CartTypeColors.UNSET;\r\n\r\n /**\r\n * The path to the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long [img] = \"'img/path/img.png'\"></mefdev-card-long>\r\n * ```\r\n */\r\n @Input() img: string;\r\n\r\n /**\r\n * The path, where user goes after click at the image.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long [imgUrl] = \"'Img.url'\"></mefdev-card-long>\r\n * ```\r\n */\r\n @Input() imgUrl: string;\r\n\r\n /**\r\n * The description of the card.\r\n * @usageNotes\r\n * ```\r\n * <mefdev-card-long [description] = \"'description'\"></mefdev-card-long>\r\n * ```\r\n */\r\n @Input() description: string;\r\n\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Event handler for image click.\r\n * Navigates to the specified URL.\r\n */\r\n public imgClick(){\r\n this.router.navigate(['/', this.imgUrl.toString()])\r\n }\r\n\r\n}\r\n","<mefdev-inner-card\r\n MinimalHeader=\"true\"\r\n TimeOut=\"2500\"\r\n [Refresh]=\"false\"\r\n [Close]=\"false\"\r\n>\r\n\r\n <ng-template #CardTitle>\r\n <ng-template class=\"card-title\" [ngTemplateOutlet]=\"title\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #CardExtraControls>\r\n <div class=\"plugin-type\"\r\n [ngClass]=\"{\r\n 'b-color-Light-Gray-1': type_color === 'UNSET',\r\n 'b-color-Red': type_color === 'RED',\r\n 'b-color-Green': type_color === 'GREEN'}\">\r\n {{type_text}}\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"row h-100 m-b-10\">\r\n <div class=\"col-lg-3 col-12 card-col\">\r\n <div class=\"row\">\r\n <div class=\"col-12 card-img m-b-10\">\r\n <div *ngIf=\"!img || img == ''\">\r\n <img src=\"assets/images/md_icon.png\"\r\n style=\"max-width: 110px; max-height: 110px;\"/>\r\n </div>\r\n <div *ngIf=\"img\">\r\n <img src=\"{{img}}\" alt=\"\" class=\"image-responsive-height img-middle\"\r\n height=\"110px\"\r\n style=\"max-width: 110px; max-height: 110px;\"\r\n onclick=\"imgClick()\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-12 m-t-2 body-6 text-dark params-block\">\r\n <ng-template [ngTemplateOutlet]=\"params\"></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-5 col-12 card-col\">\r\n <ng-template [ngTemplateOutlet]=\"second_col\"></ng-template>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-12 card-col mt-lg-0 mt-5\">\r\n <ng-template [ngTemplateOutlet]=\"third_col\"></ng-template>\r\n </div>\r\n\r\n </div>\r\n</mefdev-inner-card>\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n/**\r\n * Component for displaying a simple card with a title.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-card-simple [disabled]=\"true\">\r\n * <ng-template #card_title>\r\n * <!-- Content for the card title -->\r\n * </ng-template>\r\n * </mefdev-card-simple>\r\n *```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/card/card_simple</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-card-simple',\r\n templateUrl: './card-simple.component.html',\r\n styleUrls: ['./card-simple.component.scss'],\r\n standalone: false\r\n})\r\nexport class CardSimpleComponent implements OnInit {\r\n\r\n /**\r\n * Determines whether the card is disabled or not.\r\n */\r\n @Input(\"disabled\") isDisabled: boolean = false;\r\n\r\n /**\r\n * Template for displaying the title of the card.\r\n *```\r\n * <mefdev-card-simple>\r\n * <ng-template #card_title>\r\n * <h3>Card Title</h3>\r\n * </ng-template>\r\n * </mefdev-card-simple>\r\n *```\r\n */\r\n @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"card-simple\" [ngClass]=\"{ 'unused-block':isDisabled }\">\r\n <div class=\"row m-2 body-1\" *ngIf=\"card_title\">\r\n <div class=\"col-12\">\r\n <ng-template [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row m-2\">\r\n <div class=\"col-12\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class ProgressConfig {\r\n color = \"primary\";\r\n thickness = 1;\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\r\n\r\nimport { MefDevProgressComponent } from \"./progress.component\";\r\nimport { ProgressConfig } from \"./progress.config\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [MefDevProgressComponent],\r\n exports: [MefDevProgressComponent]\r\n})\r\nexport class MefDevProgressModule {\r\n static forRoot(): ModuleWithProviders<MefDevProgressModule> {\r\n return { ngModule: MefDevProgressModule, providers: [ProgressConfig] };\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\r\nimport { MefdevInnerCard } from \"./card.components\";\r\nimport { MefDevProgressModule } from \"../progress/progress.module\";\r\n\r\n@NgModule({\r\n declarations: [MefdevInnerCard],\r\n exports: [MefdevInnerCard],\r\n imports: [CommonModule, MefDevProgressModule]\r\n})\r\nexport class MefdevInnerCardModule {\r\n static forRoot(): ModuleWithProviders<MefdevInnerCardModule> {\r\n return {\r\n ngModule: MefdevInnerCardModule\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CardComponent } from './card/card.component';\r\nimport { MefDevSelectModule } from '../../pg-components/select/select.module';\r\nimport { MefdevInnerCardModule } from \"./../../pg-components/card/card.module\";\r\nimport { MefDevCollapseModule } from '../collapse/collapse.module';\r\nimport { CardLongComponent } from './card-long/card-long.component';\r\nimport { CardSimpleComponent } from './card-simple/card-simple.component';\r\n\r\nexport const mefDevCardComponents = [CardComponent, CardLongComponent, CardSimpleComponent];\r\n@NgModule({\r\n declarations: mefDevCardComponents,\r\n exports: mefDevCardComponents,\r\n imports: [\r\n CommonModule,\r\n MefDevCollapseModule,\r\n\t\tMefDevSelectModule,\r\n MefdevInnerCardModule,\r\n ]\r\n})\r\nexport class MefDevCardModule { }\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n/**\r\n * Fill Component for a modal window.\r\n *\r\n * Example of usage:\r\n * ```\r\n * <mefdev-fill-modal #pin_modal>\r\n * <!-- Modal header content -->\r\n * <ng-template #modal_header>\r\n * <!-- Header content goes here -->\r\n * </ng-template>\r\n *\r\n * <!-- Modal footer content -->\r\n * <ng-template #modal_footer>\r\n * <!-- Footer content goes here -->\r\n * </ng-template>\r\n * </mefdev-fill-modal>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/fill</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-fill-modal',\r\n templateUrl: './fill.component.html',\r\n styleUrls: ['./fill.component.scss'],\r\n animations: [\r\n trigger('dialog', [\r\n transition('void => *', [\r\n style({ transform: 'scale3d(.3, .3, .3)' }),\r\n animate(100)\r\n ]),\r\n transition('* => void', [\r\n animate(100, style({ transform: 'scale3d(.0, .0, .0)' }))\r\n ])\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class FillComponent implements OnInit {\r\n protected visible: boolean = false;\r\n\r\n @ViewChild('dialog', { static: false }) protected dialog?: ElementRef;\r\n\r\n\r\n /**\r\n * The header template of the modal window.\r\n * ```\r\n * <mefdev-fill-modal #pin_modal>\r\n * <ng-template #modal_header>\r\n * <!-- Header content goes here -->\r\n * </ng-template>\r\n * </mefdev-fill-modal>\r\n * ```\r\n */\r\n @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n /**\r\n * The footer template of the modal window.\r\n * ```\r\n * <mefdev-fill-modal #pin_modal>\r\n * <ng-template #modal_footer>\r\n * <!-- Footer content goes here -->\r\n * </ng-template>\r\n * </mefdev-fill-modal>\r\n * ```\r\n */\r\n @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n\r\n /**\r\n * Input parameter that determines whether to show the modal window.\r\n */\r\n @Input() set show(val: boolean){\r\n if(val){\r\n this.showModal();\r\n }\r\n else{\r\n this.hideModal();\r\n }\r\n };\r\n\r\n /**\r\n * Event emitted when the modal is change state.\r\n * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n * Example:\r\n * ```\r\n * <mefdev-fill-modal (visibleChange)=\"onModalClosed($event)\"></mefdev-fill-modal>\r\n * ```\r\n */\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Shows the modal state.\r\n * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n */\r\n getModalState(): boolean{\r\n return this.visible;\r\n }\r\n\r\n /**\r\n * Shows the modal.\r\n * Call this method to open the modal window.\r\n */\r\n public showModal(){\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n /**\r\n * Hides the modal.\r\n * Call this method to close the modal window.\r\n */\r\n public hideModal(){\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","<button *ngIf=\"visible\" (click)=\"hideModal()\" aria-label=\"Close\" class=\"dialog__close-btn\">X</button>\r\n<div [@dialog] *ngIf=\"visible\" class=\"dialog\" #dialog>\r\n\t<div class=\"modal-content\">\r\n <div class=\"modal-header clearfix text-left\">\r\n <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ModalSize } from '../modal-size.enum';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n /**\r\n * A component representing a slide-up modal window.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-slide-up-modal [show]=\"showModal\">\r\n * <ng-template #modal_header>\r\n * <h4>Modal Header</h4>\r\n * </ng-template>\r\n * <ng-template #modal_footer>\r\n * <button (click)=\"closeModal()\">Close</button>\r\n * </ng-template>\r\n * <div class=\"modal-body\">\r\n * Content goes here...\r\n * </div>\r\n * </mefdev-slide-up-modal>\r\n * ```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/slide_up</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-slide-up-modal',\r\n templateUrl: './slide-up.component.html',\r\n styleUrls: ['./slide-up.component.scss'],\r\n animations: [\r\n trigger('dialog', [\r\n transition('void => *', [\r\n style({ transform: 'scale3d(.3, .3, .3)' }),\r\n animate(100)\r\n ]),\r\n transition('* => void', [\r\n animate(100, style({ transform: 'scale3d(.0, .0, .0)' }))\r\n ])\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class SlideUpComponent implements OnInit {\r\n protected visible: boolean = false;\r\n /**\r\n * Reference to the template for the modal header.\r\n * Use this template to customize the header of the modal.\r\n */\r\n @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n /**\r\n * Reference to the template for the modal footer.\r\n * Use this template to customize the footer of the modal.\r\n */\r\n @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n /**\r\n * Flag indicating whether the modal should be shown or hidden.\r\n * Set it to `true` to show the modal and `false` to hide it.\r\n */\r\n @Input() set show(val: boolean){\r\n if(val){\r\n this.showModal();\r\n }\r\n else{\r\n this.hideModal();\r\n }\r\n };\r\n\r\n /**\r\n * Event emitted when the modal is change state.\r\n * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n */\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Shows the modal state.\r\n * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n */\r\n getModalState(): boolean{\r\n return this.visible;\r\n }\r\n\r\n /**\r\n * Shows the modal.\r\n * Call this method to open the modal window.\r\n */\r\n public showModal(){\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n /**\r\n * Hides the modal.\r\n * Call this method to close the modal window.\r\n */\r\n public hideModal(){\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","<div [@dialog] *ngIf=\"visible\" class=\"dialog\">\r\n\t<button (click)=\"hideModal()\" aria-label=\"Close\" class=\"dialog__close-btn\">X</button>\r\n\t<div class=\"modal-content\">\r\n <div class=\"modal-header clearfix text-left\">\r\n <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ModalSize } from '../modal-size.enum';\r\nimport { CommonModule } from \"@angular/common\"; // add for static analizer bug fix\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n/**\r\n * A component representing a slide-right modal window.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-slide-right-modal [size]=\"ModalSize.lg\" [show]=\"showModal\">\r\n * <ng-template #modal_header>\r\n * <h4>Modal Header</h4>\r\n * </ng-template>\r\n * <ng-template #modal_footer>\r\n * <button (click)=\"closeModal()\">Close</button>\r\n * </ng-template>\r\n * <div class=\"modal-body\">\r\n * Content goes here...\r\n * </div>\r\n * </mefdev-slide-right-modal>\r\n * ```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/modals/slide_right</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-slide-right-modal',\r\n templateUrl: './slide-right.component.html',\r\n styleUrls: ['./slide-right.component.scss'],\r\n animations: [\r\n trigger('dialog', [\r\n transition('void => *', [\r\n style({ transform: 'translate3d(100%,0,0)' }),\r\n animate(100)\r\n ]),\r\n transition('* => void', [\r\n animate(100, style({ transform: 'translate3d(100%, 0, 0)' }))\r\n ])\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class SlideRightComponent implements OnInit {\r\n protected visible: boolean = false;\r\n\r\n @ViewChild('dialog') protected dialog: ElementRef;\r\n\r\n /**\r\n * Reference to the template for the modal header.\r\n * Use this template to customize the header of the modal.\r\n */\r\n @ContentChild(\"modal_header\") modal_header: TemplateRef<void>;\r\n\r\n /**\r\n * Reference to the template for the modal footer.\r\n * Use this template to customize the footer of the modal.\r\n */\r\n @ContentChild(\"modal_footer\") modal_footer: TemplateRef<void>;\r\n\r\n /**\r\n * Size of the modal.\r\n * Defaults to `ModalSize.md`.\r\n * Possible values: `ModalSize.sm`, `ModalSize.md`, `ModalSize.lg`, `ModalSize.xl`.\r\n */\r\n @Input() size:ModalSize = ModalSize.md;\r\n\r\n /**\r\n * Flag indicating whether the modal should be shown or hidden.\r\n * Set it to `true` to show the modal and `false` to hide it.\r\n */\r\n @Input() set show(val: boolean){\r\n if(val){\r\n this.showModal();\r\n }\r\n else{\r\n this.hideModal();\r\n }\r\n };\r\n\r\n /**\r\n * Event emitted when the modal is change state.\r\n * Emits a boolean value indicating if the modal is closed(false), or open(true).\r\n * Example:\r\n * ```\r\n * <mefdev-fill-modal (visibleChange)=\"onModalClosed($event)\"></mefdev-fill-modal>\r\n * ```\r\n */\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Shows the modal state.\r\n * Return a boolean value indicating if the modal is closed(false), or open(true)\r\n */\r\n getModalState(): boolean{\r\n return this.visible;\r\n }\r\n\r\n /**\r\n * Shows the modal.\r\n * Call this method to open the modal window.\r\n */\r\n public showModal(){\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n /**\r\n * Hides the modal.\r\n * Call this method to close the modal window.\r\n */\r\n public hideModal(){\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","<div [@dialog] *ngIf=\"visible\" class=\"dialog\" #dialog>\r\n\r\n <div *ngIf=\"modal_header\" class=\"header\">\r\n <ng-template [ngTemplateOutlet]=\"modal_header\"></ng-template>\r\n </div>\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"modal_footer\" class=\"footer\">\r\n <ng-template [ngTemplateOutlet]=\"modal_footer\"></ng-template>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"visible\" class=\"overlay\" (click)=\"hideModal()\"></div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FilteredFieldService } from '../../utils/filtered-field/filtered-field.service';\r\n\r\n\r\n/**\r\n * Component representing the right filter.\r\n */\r\n@Component({\r\n selector: 'mefdev-right-filter',\r\n templateUrl: './right-filter.component.html',\r\n styleUrls: ['./right-filter.component.scss'],\r\n standalone: false\r\n})\r\nexport class RightFilterComponent implements OnInit {\r\n\r\n /**\r\n * Flag indicating whether the right filter is open or closed.\r\n */\r\n isOpen: boolean = false;\r\n \r\n @Input() showStandartOpenButton: boolean = true;\r\n\r\n constructor(\r\n private filteredFieldService: FilteredFieldService,) { }\r\n\r\n ngOnInit(): void {\r\n // Subscribe to the open filter event from the FilteredFieldService\r\n // and update the isOpen flag accordingly.\r\n this.filteredFieldService.getOpenFilter().subscribe(() => {\r\n this.isOpen = true;\r\n });\r\n }\r\n\r\n /**\r\n * Opens or closes the right filter modal.\r\n */\r\n openModal(){\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n /**\r\n * Event handler for when the modal is closed.\r\n * Sets the isOpen flag to false.\r\n */\r\n modalIsCloused(){\r\n this.isOpen = false;\r\n }\r\n \r\n}\r\n","<div \r\n*ngIf=\"showStandartOpenButton\"\r\nclass=\"filter-btn\" \r\n(click)=\"openModal()\"\r\n>\r\n <i class=\"fa fa-filter\" aria-hidden=\"true\"></i>\r\n</div>\r\n\r\n<mefdev-slide-right-modal [show]=\"isOpen\" (isClouse)=\"modalIsCloused()\">\r\n <ng-content></ng-content>\r\n</mefdev-slide-right-modal>","import { NgModule } from \"@angular/core\";\r\nimport { FillComponent } from './fill/fill.component';\r\nimport { SlideUpComponent } from './slide-up/slide-up.component';\r\nimport { SlideRightComponent } from './slide-right/slide-right.component';\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { RightFilterComponent } from \"./right-filter/right-filter.component\";\r\nimport { MefDevSelectModule } from '../../pg-components/select/select.module';\r\n\r\n\r\nlet mefDevModalModuleComponents = [\r\n FillComponent,\r\n SlideUpComponent,\r\n SlideRightComponent,\r\n RightFilterComponent\r\n];\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MefDevSelectModule\r\n ],\r\n exports: mefDevModalModuleComponents,\r\n declarations: mefDevModalModuleComponents\r\n})\r\nexport class MefDevModalModule {}\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n/**\r\n * A component representing a user profile.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-profile\r\n * [name]=\"'John Doe'\"\r\n * [img]=\"'assets/profile.png'\"\r\n * [shortDescription]=\"'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'\"\r\n * [header]=\"'User Profile'\"\r\n * [circleImg]=\"'true'\">\r\n * <ng-template #first_colum>\r\n * <!-- Content for the first column -->\r\n * </ng-template>\r\n * <ng-template #second_colum>\r\n * <!-- Content for the second column -->\r\n * </ng-template>\r\n * <ng-template #footer>\r\n * <!-- Content for the footer -->\r\n * </ng-template>\r\n * </mefdev-profile>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/profile</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.scss'],\r\n standalone: false\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the content of the first column.\r\n *```\r\n * <ng-template #first_colum>\r\n * <!-- Content for the first column -->\r\n * </ng-template>\r\n *```\r\n */\r\n @ContentChild(\"first_colum\") first_colum: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the content of the second column.\r\n *```\r\n * <ng-template #second_colum>\r\n * <!-- Content for the second column -->\r\n * </ng-template>\r\n *```\r\n */\r\n @ContentChild(\"second_colum\") second_colum: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the content of the footer.\r\n *```\r\n * <ng-template #footer>\r\n * <!-- Content for the footer -->\r\n * </ng-template>\r\n *```\r\n */\r\n @ContentChild(\"footer\") footer: TemplateRef<void>;\r\n\r\n /**\r\n * The name of the user.\r\n * ```\r\n * <mefdev-profile [name]=\"'John Doe'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() name:string;\r\n\r\n /**\r\n * The URL of the user's profile image.\r\n * ```\r\n * <mefdev-profile [img]=\"'assets/profile.png'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() img: string = '';\r\n\r\n /**\r\n * A short description of the user.\r\n * ```\r\n * <mefdev-profile [shortDescription]=\"'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() shortDescription: string;\r\n\r\n /**\r\n * The header title of the profile component.\r\n * ```\r\n * <mefdev-profile [header]=\"'User Profile'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() header: string;\r\n\r\n /**\r\n * A flag indicating whether to display the profile image as a circle. Default \"false\".\r\n * ```\r\n * <mefdev-profile [circleImg]=\"'true'\"></mefdev-profile>\r\n * ```\r\n */\r\n @Input() circleImg: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n get sizeStyle(){\r\n // return { 'width.px': this.width, 'height.px': this.height };\r\n /**\r\n * Returns the CSS style for the profile image size and shape.\r\n */\r\n if(!this.circleImg){\r\n return {};\r\n }\r\n\r\n return {\r\n 'border-top-left-radius': `50%`,\r\n 'border-top-right-radius': `50%`,\r\n 'border-bottom-right-radius': `50%`,\r\n 'border-bottom-left-radius': `50%`,\r\n };\r\n }\r\n}\r\n","<div class=\"row profile-page\">\r\n <div class=\"col-12 h3 mt-3\">\r\n {{header}}\r\n </div>\r\n <div class=\"col-xl-3 col-lg-3 col-md-4 col-sm-12\">\r\n <div *ngIf=\"!img || img == ''\" >\r\n <img src=\"assets/images/md_icon.png\" height=\"124\" width=\"220\" />\r\n </div>\r\n <div *ngIf=\"img\" >\r\n <img src=\"{{img}}\" alt=\"\" class=\"custom-img\" [ngStyle]=\"sizeStyle\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-xl-3 col-lg-4 col-md-5 col-sm-12 mt-4 mt-md-0\" >\r\n <div class=\"row profile-name\">\r\n <div class=\"col\">\r\n {{name}}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col profile-description\">\r\n {{shortDescription}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-xl-3 col-lg-4 col-md-5 col-sm-12 body-6 mt-4 mt-md-0\">\r\n <ng-template [ngTemplateOutlet]=\"first_colum\"></ng-template>\r\n </div>\r\n\r\n <div class=\"col-xl-3 col-lg-4 col-md-5 col-sm-12 body-6 mt-4 mt-md-0\" >\r\n <ng-template [ngTemplateOutlet]=\"second_colum\"></ng-template>\r\n </div>\r\n\r\n</div>\r\n<div style=\"position: relative;\">\r\n <div class=\"row profile-page-tabs\">\r\n <ng-template [ngTemplateOutlet]=\"footer\">\r\n </ng-template>\r\n </div>\r\n</div>\r\n","import { AfterViewChecked, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\n\r\n/**\r\n * A component representing a central page layout.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-central-page [width]=\"'80%'\">\r\n * Content goes here...\r\n * </mefdev-central-page>\r\n * ```\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/central_page</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-central-page',\r\n templateUrl: './central-page.component.html',\r\n styleUrls: ['./central-page.component.scss'],\r\n standalone: false\r\n})\r\nexport class CentralPageComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n /**\r\n * The width of the central page.\r\n * Defaults to '100%'.\r\n * You can specify the width using CSS units (e.g., '80%', '500px').\r\n */\r\n @Input() width: string = '100%';\r\n\r\n /**\r\n * Lifecycle hook called just before the component is destroyed.\r\n * Removes the height style from the main content element.\r\n */\r\n ngOnDestroy(): void {\r\n try{\r\n document.getElementById('dataMainContent')!.style.height = '';\r\n }catch(ex){};\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /**\r\n * Lifecycle hook called after the component's view has been checked.\r\n * Sets the height of the main content element to '100%'.\r\n */\r\n ngAfterViewChecked(): void {\r\n try{\r\n document.getElementById('dataMainContent')!.style.height = '100%'\r\n }catch(ex){};\r\n }\r\n\r\n}\r\n","<div class=\"row align-items-center\" style=\"height: 100%;\" [ngStyle]=\"{'width': width}\">\r\n <div class=\"col\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n ","import { Component, OnInit } from '@angular/core';\r\n\r\n\r\n/**\r\n * A component representing a central page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-central-page>\r\n * <mefdev-central-page-row>\r\n * Content goes here...\r\n * </mefdev-central-page-row>\r\n * </mefdev-central-page>\r\n * ```\r\n*/\r\n@Component({\r\n selector: 'mefdev-central-page-row',\r\n templateUrl: './central-page-row.component.html',\r\n styleUrls: ['./central-page-row.component.scss'],\r\n standalone: false\r\n})\r\nexport class CentralPageRowComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"row justify-content-center\">\r\n <ng-content></ng-content>\r\n</div>","import { Component, ContentChild, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n /**\r\n * A component representing a table page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-table-page>\r\n * <ng-template #filter_colum>\r\n * <!-- Content for the filter column -->\r\n * </ng-template>\r\n * </mefdev-table-page>\r\n * ```\r\n * \r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/table_page</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-table-page',\r\n templateUrl: './table-page.component.html',\r\n styleUrls: ['./table-page.component.scss'],\r\n standalone: false\r\n})\r\nexport class TablePageComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the content of the filter column.\r\n * ```\r\n * <ng-template #filter_colum>\r\n * <!-- Content for the filter column -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild(\"filter_colum\") filter_colum: TemplateRef<void>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12 filter-colum\">\r\n <ng-template [ngTemplateOutlet]=\"filter_colum\"></ng-template> \r\n </div>\r\n</div>\r\n\r\n<div class=\"table-responsive\" >\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\n\r\n /**\r\n * A component representing a manage page layout.\r\n *\r\n * Example of usage:\r\n * \r\n * ```\r\n * <mefdev-manage-page [startTabInd]=\"0\">\r\n * <ng-template #card_title>\r\n * Title of the card\r\n * </ng-template>\r\n * <ng-template #tabs_block>\r\n * Content of the tabs block\r\n * </ng-template>\r\n * </mefdev-manage-page>\r\n * ```\r\n *\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_layouts/manage_page</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-manage-page',\r\n templateUrl: './manage-page.component.html',\r\n styleUrls: ['./manage-page.component.scss'],\r\n standalone: false\r\n})\r\nexport class ManagePageComponent implements OnInit {\r\n\r\n /**\r\n * The template reference to the card title.\r\n * ```\r\n * <mefdev-manage-page>\r\n * <ng-template #card_title>\r\n * Title of the card\r\n * </ng-template>\r\n * </mefdev-manage-page>\r\n * ```\r\n */\r\n @ContentChild(\"card_title\") card_title: TemplateRef<void>;\r\n\r\n /**\r\n * The template reference to the tabs block.\r\n * ```\r\n * <mefdev-manage-page>\r\n * <ng-template #tabs_block>\r\n * Content of the tabs block\r\n * </ng-template>\r\n * </mefdev-manage-page>\r\n * ```\r\n */\r\n @ContentChild(\"tabs_block\") tabs_block: TemplateRef<void>;\r\n\r\n /**\r\n * The index of the starting tab.\r\n * ```\r\n * <mefdev-manage-page [startTabInd]=\"0\">\r\n * Content goes here...\r\n * </mefdev-manage-page>\r\n * ```\r\n */\r\n @Input() startTabInd = 0;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"card-tabs\">\r\n <div class=\"row body-1 card-header\" *ngIf=\"card_title\">\r\n <div class=\"m-2\">\r\n <ng-template [ngTemplateOutlet]=\"card_title\"></ng-template>\r\n </div>\r\n </div>\r\n <div class=\"row profile-page-tabs\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ProfileComponent } from './profile/profile.component';\r\n// import { pgTabsModule } from '../../pg-components/tabs/tabs.module';\r\nimport { CentralPageComponent } from './central-page/central-page.component';\r\nimport { CentralPageRowComponent } from './central-page-row/central-page-row.component';\r\nimport { TablePageComponent } from './table-page/table-page.component';\r\nimport { ManagePageComponent } from './manage-page/manage-page.component';\r\n\r\nlet mefDevPageLayoutsModuleComponents = [\r\n ProfileComponent,\r\n CentralPageComponent,\r\n CentralPageRowComponent,\r\n TablePageComponent,\r\n ManagePageComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: mefDevPageLayoutsModuleComponents,\r\n exports: mefDevPageLayoutsModuleComponents,\r\n imports: [\r\n CommonModule,\r\n\t\t// pgTabsModule,\r\n ],\r\n})\r\nexport class MefDevPageLayoutsModule { }\r\n","import { Component, Input } from '@angular/core';\r\n\r\n/**\r\n * @ignore\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-stage',\r\n templateUrl: './stage.component.html',\r\n styleUrls: ['./stage.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class StageComponent {\r\n\r\n @Input() currentExecutorStep: number;\r\n @Input() isRightModal: boolean;\r\n @Input() isCompleted: boolean;\r\n @Input() title: string;\r\n\r\n}\r\n","<div class=\"step\">\r\n <ng-container *ngIf=\"!isCompleted else done\">\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" [ngStyle]=\"isRightModal ? { 'fill': '#FFFFFF' } : { 'fill': '#F3F3F3' }\">\r\n <rect width=\"36\" height=\"36\" rx=\"18\" />\r\n <text class=\"body-3\" x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" font-size=\"16\" fill=\"black\">\r\n {{ currentExecutorStep }}\r\n </text>\r\n </svg>\r\n <div class=\"body-6 descriptionStepText\" *ngIf=\"!isRightModal\">\r\n {{ title }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n<ng-template #done>\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.5\" y=\"0.5\" width=\"35\" height=\"35\" rx=\"17.5\" stroke=\"#929292\"/>\r\n <path d=\"M24.7373 10L14.5466 20.3769L11.2415 17.0114L8 20.3122L11.3051 23.6777L14.5678 27L17.8093 23.6992L28 13.3224L24.7373 10Z\"\r\n fill=\"#28B446\"/>\r\n </svg>\r\n <span class=\"body-6 descriptionStepText\" *ngIf=\"!isRightModal\">\r\n {{ title }}\r\n </span>\r\n</ng-template>\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component,\r\n ContentChild, ElementRef, EventEmitter,\r\n Input, Output, Renderer2,\r\n TemplateRef, ViewChild\r\n} from '@angular/core';\r\nimport { MefdevExecutorPageComponent } from '../mefdev-executor-page/mefdev-executor-page.component';\r\n\r\n/**\r\n * Wrapper component that represents a specific encapsulated executor.\r\n *\r\n * Example of usage:\r\n *```\r\n * <mefdev-step-executor #mainExecutor [view]=\"'regular'\">\r\n *\r\n * <ng-template #title>\r\n * <!-- Content for the executor title -->\r\n * </ng-template>\r\n * <ng-template #description>\r\n * <!-- Content for the executor description -->\r\n * </ng-template>\r\n *\r\n * <mefdev-executor-page\r\n * [title]=\"'Description of situation 1'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 0\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 0\">\r\n * <!-- Content of the first executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Description of situation 2'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 1\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 1\">\r\n * <!-- Content of the second executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Description of situation 3'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 2\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 2\">\r\n * <!-- Content of the third executor step -->\r\n * </mefdev-executor-page>\r\n *\r\n * <ng-template #footer>\r\n * <!-- Content for the executor footer -->\r\n * <ng-template>\r\n *\r\n * </mefdev-step-executor>\r\n *\r\n *```\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/utils/main_executor</example-url>\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-step-executor',\r\n templateUrl: './step-executor.component.html',\r\n styleUrls: ['./step-executor.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class StepExecutorComponent implements AfterViewInit {\r\n\r\n /**\r\n * Mandatory input parameter that specifies the type of the step-by-step wizard.\r\n * It can have three options: regular, modal, right.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor #mainExecutor [view]=\"'regular'\"></mefdev-step-executor>\r\n * ```\r\n */\r\n @Input({required: true}) view: string;\r\n\r\n\r\n /**\r\n * An optional input parameter that specifies whether to show your executor.\r\n * Usually used when you have a slideup or right executor view\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor [show]=\"true\" [view]=\"'right'\" #mainExecutor></mefdev-step-executor>\r\n * ```\r\n */\r\n @Input() show: boolean;\r\n\r\n\r\n /**\r\n * ViewChild reference to the host executor content.\r\n */\r\n @ViewChild('container') container: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Template for displaying the content of the executor title.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <ng-template #title>\r\n * <!-- Content for the executor title -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild('title') title: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the executor description.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <ng-template #description>\r\n * <!-- Content for the executor description -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild('description') description: TemplateRef<void>;\r\n\r\n /**\r\n * Template for displaying the content of the executor footer.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <ng-template #footer>\r\n * <!-- Content for the executor footer -->\r\n * </ng-template>\r\n * ```\r\n */\r\n @ContentChild('footer') footer: TemplateRef<void>;\r\n\r\n /**\r\n * The output parameter that emits the class of the active page - active step.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor #mainExecutor (onActivePageChange)=\"getActiveStep($event)\"></mefdev-step-executor>\r\n * ```\r\n */\r\n @Output() onActivePageChange: EventEmitter<MefdevExecutorPageComponent> = new EventEmitter<MefdevExecutorPageComponent>();\r\n\r\n /**\r\n * An output parameter that conveys the current state of the stepper in modal view\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor [view]=\"'modal'\" (modalStepExecutorStateChange)=\"getModalExecutorStateValue($event)\" #modalExecutor></mefdev-step-executor>\r\n * ```\r\n */\r\n @Output() modalStepExecutorStateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /**\r\n * An output parameter that conveys the current state of the stepper in right view\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor [view]=\"'right'\" (modalStepExecutorStateChange)=\"getModalExecutorStateValue($event)\" #rightExecutor></mefdev-step-executor>\r\n * ```\r\n */\r\n @Output() rightStepExecutorStateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public _activePageInd: number = 0;\r\n public pages: MefdevExecutorPageComponent[] = [];\r\n\r\n constructor(private renderer: Renderer2, private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n public set activePageInd(activePageNumber: number) {\r\n this._activePageInd = activePageNumber;\r\n if (activePageNumber >= 0 && this.container) {\r\n if (this.container.nativeElement.innerHTML != '') {\r\n this.container.nativeElement.innerHTML = '';\r\n }\r\n this.renderer.appendChild(this.container.nativeElement, this.activePage?.elRef.nativeElement);\r\n this.onActivePageChange.emit(this.pages.find((el: MefdevExecutorPageComponent) => el.isActive));\r\n }\r\n }\r\n\r\n public get activePageInd(): number {\r\n return this._activePageInd;\r\n }\r\n\r\n get activePage(): MefdevExecutorPageComponent | null {\r\n return this.activePageInd == -1 ? null : this.pages[this.activePageInd];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer?.appendChild(this.container.nativeElement, this.activePage?.elRef.nativeElement);\r\n this.onActivePageChange.emit(this.pages.find((el: MefdevExecutorPageComponent) => el.isActive));\r\n }\r\n\r\n /**\r\n * A function that is allows to track the status of your executor in the modal view\r\n */\r\n modalStepExecutorVisibleChange(value: boolean) {\r\n if (this.view === 'modal') {\r\n this.show = value;\r\n this.modalStepExecutorStateChange.emit(value);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * A function that is allows to track the status of your executor in the right view\r\n */\r\n rightStepExecutorVisibleChange(value: boolean) {\r\n if (this.view === 'right') {\r\n this.show = value;\r\n this.rightStepExecutorStateChange.emit(value);\r\n }\r\n }\r\n\r\n /**\r\n * A function that allows you to close your executor\r\n */\r\n closeExecutor() {\r\n this.show = false;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Check whether there is a next step of the executor. If we are at the last step - disable the 'next' button\r\n */\r\n nextBtnIsDisabled(): boolean {\r\n return this._activePageInd === this.pages.length - 1;\r\n }\r\n\r\n /**\r\n * Check whether there is a next step of the executor. If we are at the last step - disable the 'next' button\r\n */\r\n prev(): void {\r\n const newPageInd = this.activePageInd - 1;\r\n if (newPageInd >= 0) {\r\n this.activePageInd = newPageInd;\r\n }\r\n }\r\n\r\n /**\r\n * Go back to the previous step\r\n */\r\n cancel(): void {\r\n this.activePageInd = 0;\r\n const newPageInd = this.activePageInd - 1;\r\n if (newPageInd >= 0) {\r\n this.activePageInd = newPageInd;\r\n }\r\n }\r\n\r\n /**\r\n * Go to the next step\r\n */\r\n next(): void {\r\n const newPageInd = this.activePageInd + 1;\r\n if (newPageInd < this.pages.length) {\r\n this.activePageInd = newPageInd;\r\n }\r\n }\r\n\r\n /**\r\n * Set a specific active page\r\n */\r\n setActivePage(pageNumber: number): void {\r\n pageNumber -= 1;\r\n if (pageNumber < this.pages.length && pageNumber >= 0) {\r\n this.activePageInd = pageNumber;\r\n }\r\n }\r\n\r\n /**\r\n * Add new page\r\n */\r\n addPage(page: MefdevExecutorPageComponent): void {\r\n this.pages.push(page);\r\n }\r\n\r\n /**\r\n * Delete a specific page\r\n */\r\n removeSpecificPage(page: MefdevExecutorPageComponent): void {\r\n const index: number = this.pages.indexOf(page);\r\n if (index !== -1) {\r\n this.pages.splice(index, 1);\r\n if (index === this.activePageInd) {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Delete a page by its index\r\n */\r\n removePageByIndex(index: number): void {\r\n if (index >= 0 && index < this.pages.length) {\r\n this.pages.splice(index, 1);\r\n if (index === this.activePageInd) {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<!--view == regular-->\r\n\r\n<div class=\"stepExecutorBlock\" *ngIf=\"view === 'regular'\">\r\n <header class=\"stepExecutorHeader\">\r\n <div class=\"stepExecutorHeaderText\">\r\n <h1 class=\"title\">\r\n <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n </h1>\r\n <p class=\"body-5\">\r\n <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n </p>\r\n </div>\r\n <div class=\"steps\">\r\n <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n [isRightModal]=\"false\"\r\n [title]=\"page.title\"\r\n [currentExecutorStep]=\"pageIndex + 1\"\r\n [isCompleted]=\"page.isCompleted\">\r\n </mefdev-stage>\r\n </div>\r\n </header>\r\n\r\n <div *ngIf=\"activePage\" class=\"executorChangeContent\">\r\n <div #container></div>\r\n </div>\r\n\r\n <div class=\"footerButtons\">\r\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n </div>\r\n</div>\r\n\r\n\r\n<!--view == modal-->\r\n\r\n<mefdev-slide-up-modal [show]=\"show\" (visibleChange)=\"modalStepExecutorVisibleChange($event)\" *ngIf=\"view === 'modal'\">\r\n <div class=\"modalStepExecutor\">\r\n\r\n <header class=\"modalHeader\">\r\n <div class=\"headerModalText\">\r\n <div class=\"textAndCloseButton\">\r\n <h1 class=\"title\">\r\n <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n </h1>\r\n <p class=\"body-5\">\r\n <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n </p>\r\n </div>\r\n <article class=\"closeBtn\" (click)=\"closeExecutor()\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6.26735 7.68135L0.610352 2.02435L2.02435 0.610352L7.68135 6.26735L13.3384 0.610352L14.7524 2.02435L9.09535 7.68135L14.7524 13.3384L13.3384 14.7524L7.68135 9.09535L2.02435 14.7524L0.610352 13.3384L6.26735 7.68135Z\"\r\n fill=\"#4D4D4D\"/>\r\n </svg>\r\n </article>\r\n </div>\r\n <div class=\"modalSteps\">\r\n <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n [isRightModal]=\"false\"\r\n [title]=\"page.title\"\r\n [currentExecutorStep]=\"pageIndex + 1\"\r\n [isCompleted]=\"page.isCompleted\">\r\n </mefdev-stage>\r\n </div>\r\n </header>\r\n\r\n <main *ngIf=\"activePage\" class=\"modalExecutorMainContent\">\r\n <div #container></div>\r\n </main>\r\n\r\n <footer class=\"modalFooter\">\r\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n </footer>\r\n\r\n </div>\r\n</mefdev-slide-up-modal>\r\n\r\n<!--view == right-->\r\n\r\n<mefdev-slide-right-modal [show]=\"show\" (visibleChange)=\"rightStepExecutorVisibleChange($event)\" *ngIf=\"view === 'right'\">\r\n <div class=\"rightExecutorBlock\">\r\n\r\n <header class=\"rightExecutorHeader\">\r\n <div class=\"rightExecutorTextAndCloseButton\">\r\n <span class=\"body-1\">\r\n <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\r\n </span>\r\n <p class=\"body-5\">\r\n <ng-container [ngTemplateOutlet]=\"description\"></ng-container>\r\n </p>\r\n </div>\r\n <div class=\"closeButton\" (click)=\"closeExecutor()\">\r\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M16.0566 1.59971L14.6566 0.199707L8.05664 6.79971L1.45664 0.199707L0.0566406 1.59971L6.65664 8.19971L0.0566406 14.7997L1.45664 16.1997L8.05664 9.59971L14.6566 16.1997L16.0566 14.7997L9.45664 8.19971L16.0566 1.59971Z\"\r\n fill=\"#525252\"/>\r\n </svg>\r\n </div>\r\n </header>\r\n\r\n <div class=\"line\">\r\n <svg width=\"100%\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"100%\" height=\"1\" fill=\"#4D4D4D\"></rect>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"contentExecutor\">\r\n <div class=\"rightChangeContent\">\r\n <div *ngIf=\"activePage\" class=\"executorChangeContent\">\r\n <div #container></div>\r\n </div>\r\n <div class=\"rightSteps\">\r\n <mefdev-stage *ngFor=\"let page of pages; let pageIndex = index\"\r\n [isRightModal]=\"true\"\r\n [title]=\"page.title\"\r\n [currentExecutorStep]=\"pageIndex + 1\"\r\n [isCompleted]=\"page.isCompleted\">\r\n </mefdev-stage>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"rightFooter\">\r\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\r\n </footer>\r\n\r\n </div>\r\n</mefdev-slide-right-modal>\r\n","import {\r\n Component, ElementRef, EventEmitter, Host,\r\n Input, OnChanges, Output, SimpleChanges\r\n} from '@angular/core';\r\nimport { StepExecutorComponent } from '../step-executor/step-executor.component';\r\n\r\n/**\r\n * A component that allows us to create a content page - a step in our executor.\r\n * Each individual step can have different styles, content and settings.\r\n *\r\n * Example of usage:\r\n *\r\n * ```\r\n * <mefdev-executor-page\r\n * [title]=\"'Executor title 1'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 0\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 0\"\r\n * class=\"yourClass\">\r\n * <!-- Content of the first executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Executor title 2'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 1\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 1\"\r\n * class=\"yourClass\">\r\n * <!-- Content of the second executor step -->\r\n * </mefdev-executor-page>\r\n * <mefdev-executor-page\r\n * [title]=\"'Executor title 3'\"\r\n * [isActive]=\"mainExecutor.activePageInd === 2\"\r\n * [isCompleted]=\"mainExecutor.activePageInd >= 2\"\r\n * class=\"yourClass\">\r\n * <!-- Content of the third executor step -->\r\n * </mefdev-executor-page>\r\n * ```\r\n *\r\n */\r\n\r\n@Component({\r\n selector: 'mefdev-executor-page',\r\n template: '<ng-content></ng-content>',\r\n standalone: false\r\n})\r\n\r\nexport class MefdevExecutorPageComponent implements OnChanges {\r\n\r\n /**\r\n * The title of the step\r\n * @usageNotes\r\n * ```\r\n * <mefdev-executor-page [title]=\"'Description of situation 1'\"></mefdev-executor-page>\r\n * ```\r\n */\r\n @Input() title: string;\r\n\r\n /**\r\n * The input parameter that corresponds to whether the current step matches the respective page.\r\n * The value of the active page is passed by reference from the specific component StepExecutorComponent.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-step-executor #mainExecutor>\r\n * <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 0\">\r\n * <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 1\">\r\n * <mefdev-executor-page [isActive]=\"mainExecutor.activePageInd === 2\">\r\n * </<mefdev-step-executor>\r\n *\r\n * ```\r\n */\r\n @Input() isActive: boolean = false;\r\n\r\n\r\n /**\r\n * The input parameter that checks whether the step is completed.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-executor-page [isCompleted]=\"mainExecutor.activePageInd >= 0\"></mefdev-executor-page>\r\n * ```\r\n */\r\n @Input() isCompleted: boolean = false;\r\n\r\n /**\r\n * The output parameter that emits a boolean value indicating whether our completed step has changed.\r\n *\r\n * @usageNotes\r\n * ```\r\n * <mefdev-executor-page (isCompletedChange)=\"onStepChanged($event)\"></mefdev-executor-page>\r\n * ```\r\n */\r\n @Output() isCompletedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public elRef: ElementRef;\r\n\r\n constructor(\r\n @Host() private _mainExecutor: StepExecutorComponent,\r\n private _elementRef: ElementRef\r\n ) {\r\n this.elRef = _elementRef;\r\n _mainExecutor.pages.push(this);\r\n if (_mainExecutor.activePageInd == -1) {\r\n _mainExecutor.activePageInd = 0;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.isCompletedChange.emit(changes['isCompleted']?.currentValue);\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StepExecutorComponent } from './step-executor/step-executor.component';\r\nimport { StageComponent } from './stage/stage.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MefdevExecutorPageComponent } from './mefdev-executor-page/mefdev-executor-page.component';\r\nimport { MefDevModalModule } from '../modals';\r\n\r\n@NgModule({\r\n declarations: [\r\n StepExecutorComponent,\r\n MefdevExecutorPageComponent,\r\n StageComponent\r\n ],\r\n exports: [\r\n StepExecutorComponent,\r\n MefdevExecutorPageComponent,\r\n StageComponent,\r\n ],\r\n imports: [\r\n MefDevModalModule,\r\n CommonModule,\r\n FormsModule,\r\n ]\r\n})\r\n\r\nexport class MefDevStepExecutorModule { }\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n/**\r\n * Component for a slider that allows selecting a range of values.\r\n * @example\r\n * <mefdev-slider\r\n * [disabled]=\"false\"\r\n * [range] = \"{min: 1, max: 10000}\"\r\n * [id]= \"'slider1'\"\r\n * (valueChange)=\"onChildValueChange($event)\"\r\n * ></mefdev-slider>\r\n *\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/slider</example-url> \r\n*/\r\n@Component({\r\n selector: 'mefdev-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n standalone: false\r\n})\r\nexport class MefDevSliderComponent {\r\n\r\n private _range = { min: 1, max: 1000 };\r\n\r\n /**\r\n * Unique id for each slider. Use it, if u need more than one slider independent from another on the same page. \r\n * @example\r\n * <mefdev-slider\r\n * [id]= \"'slider1'\"\r\n * ></mefdev-slider>\r\n */\r\n @Input() id: string;\r\n\r\n\r\n /**\r\n * Input Object {min, max} container of the slider\r\n * @example\r\n * @interval\r\n * <mefdev-slider\r\n * [range] = \"{min: 1, max: 10000}\"\r\n * ></mefdev-slider>\r\n */\r\n @Input('range')\r\n \r\n set range(range: { min: number, max: number }) {\r\n this._range = range;\r\n this.minValue = range.min;\r\n this.maxValue = range.max;\r\n }\r\n public get range(): { min: number, max: number } {\r\n return this._range;\r\n }\r\n\r\n /**\r\n * The minimum value of the slider.\r\n */\r\n minValue:number = this.range.min\r\n\r\n /**\r\n * The maximum value of the slider.\r\n */\r\n maxValue:number = this.range.max\r\n\r\n \r\n\r\n /**\r\n * Property indicating whether the component is disabled.\r\n * @example\r\n * <mefdev-slider\r\n * [disabled]=\"true\"\r\n * ></mefdev-slider>\r\n */\r\n @Input() disabled : boolean= false;\r\n\r\n /**\r\n * Event emitted when the values of the slider change.\r\n * It passes an object with `minValue` and `maxValue` properties.\r\n * @event MefDevSliderComponent#valueChange\r\n * @type {EventEmitter<{ minValue: number; maxValue: number }>}\r\n * @example\r\n * <mefdev-slider\r\n * (valueChange)=\"onChildValueChange($event)\"\r\n * ></mefdev-slider>\r\n */\r\n @Output() valueChange: EventEmitter<{ minValue: number; maxValue: number }> = new EventEmitter();\r\n\r\n /**\r\n * Method called when the values of the slider change.\r\n * Emits the `valueChange` event and calls methods to handle changes in the minimum and maximum values.\r\n * @fires MefDevSliderComponent#valueChange\r\n */\r\n onValueChange() {\r\n this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });\r\n this.minValue = this.minValue\r\n this.onMinValueChange()\r\n this.onMaxValueChange()\r\n }\r\n\r\n /**\r\n * Method to handle changes in the minimum value.\r\n * Converts a string to a number and removes all non-numeric characters.\r\n * Then, emits the `valueChange` event and updates the value of the \"fromSlider\" slider.\r\n * @fires MefDevSliderComponent#valueChange\r\n */\r\n onMinValueChange() {\r\n const numericValue = parseFloat(this.minValue.toString().replace(/[^\\d.]/g, ''));\r\n this.minValue = isNaN(numericValue) ? 0 : numericValue; \r\n this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });\r\n const fromSlider = document.getElementById(`fromSlider-${this.id}`) as HTMLInputElement;\r\n }\r\n\r\n /**\r\n * Method to handle changes in the maximum value.\r\n * Converts a string to a number and removes all non-numeric characters.\r\n * Then, emits the `valueChange` event and updates the value of the \"toSlider\" slider.\r\n * @fires MefDevSliderComponent#valueChange\r\n */\r\n onMaxValueChange() {\r\n const numericValue = parseFloat(this.maxValue.toString().replace(/[^\\d.]/g, ''));\r\n this.maxValue = isNaN(numericValue) ? 0 : numericValue; // Перевірка на NaN і присвоєння 0, якщо не вдалося конвертувати в число\r\n this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });\r\n const toSlider = document.getElementById(`toSlider-${this.id}`) as HTMLInputElement;\r\n }\r\n}\r\n","<div class=\"range_container row\">\r\n <div class=\"inputs_control \">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"minValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMinValueChange()\">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"maxValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMaxValueChange()\">\r\n </div>\r\n <div class=\"sliders_control\">\r\n <input id=\"fromSlider\" type=\"range\" [(ngModel)]=\"minValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\">\r\n <input id=\"toSlider\" type=\"range\" [(ngModel)]=\"maxValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\" \r\n [style]=\"{'--minValue': minValue, '--maxValue': maxValue, '--minFromValue': range.min, '--maxToValue': range.max}\">\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MefDevSliderComponent } from './slider/slider.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n MefDevSliderComponent\r\n ],\r\n exports: [\r\n MefDevSliderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ]\r\n})\r\nexport class MefDevSliderModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mefdev-spec-flow-test',\r\n templateUrl: './spec-flow-test.component.html',\r\n styleUrls: ['./spec-flow-test.component.scss'],\r\n standalone: false\r\n})\r\nexport class MefDevSpecFlowTestComponent implements OnInit {\r\n /**\r\n * UTC datetime\r\n */\r\n ResponseTimestamp: any;\r\n /**\r\n * 0/1 1 - ошибка, 0 - успех (200, 201 и тд)\r\n */\r\n ResponseError: any;\r\n /**\r\n * string для ResponseError=1\r\n */\r\n ReportError: any;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n public setError(error:any) {\r\n this.ResponseTimestamp = Date.now();\r\n this.ResponseError = 1;\r\n this.ReportError = error;\r\n }\r\n public setSuccess(){\r\n this.ResponseTimestamp = Date.now();\r\n this.ResponseError = 0;\r\n this.ReportError = undefined;\r\n }\r\n\r\n}\r\n","<!-- Block for test -->\r\n<div style=\"display: none;\">\r\n <input id=\"ResponseTimestamp\" type=\"hidden\" value=\"{{ResponseTimestamp}}\" />\r\n <input id=\"ResponseError\" type=\"hidden\" value=\"{{ResponseError}}\" />\r\n <input id=\"ReportError\" type=\"hidden\" value=\"{{ReportError}}\" />\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MefDevSpecFlowTestComponent } from './spec-flow-test/spec-flow-test.component';\r\n\r\n@NgModule({\r\n declarations: [MefDevSpecFlowTestComponent],\r\n exports: [MefDevSpecFlowTestComponent],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class MefDevSpecFlowTestModule {\r\n static forRoot(): ModuleWithProviders<MefDevSpecFlowTestModule> {\r\n return {\r\n ngModule: MefDevSpecFlowTestModule\r\n };\r\n }\r\n }\r\n","import {\r\n\tforwardRef,\r\n\tComponent,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit,\r\n\tViewEncapsulation,\r\n\tOutput\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { toBoolean } from \"../util/convert\";\r\n\r\n\r\n/**\r\n * @component\r\n * @skipTemplateDoc: true\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/controls/switch</example-url>\r\n*/\r\n@Component({\r\n selector: \"mefdev-switch\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./switch.component.html\",\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MefDevSwitchComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MefDevSwitchComponent implements OnInit, ControlValueAccessor {\r\n\t // Private variables\r\n\tprivate _disabled = false;\r\n\t_prefixCls = \"toggle-switch\";\r\n\t_color = \"primary\";\r\n\t_innerPrefixCls = `${this._prefixCls}-inner `;\r\n\t_classMap:any;\r\n\t_size: string;\r\n\t_checked = false;\r\n\r\n\t// ngModel Access\r\n\t// Output event triggered when the switch value changes\r\n\t@Output()\r\n\t/**\r\n * Event emitted when the value of the switch changes.\r\n * \r\n * @output\r\n * @param value The new value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch (onChange)=\"handleSwitchChange($event)\"></mefdev-switch>\r\n * ```\r\n */\r\n\tonChange: (value: boolean) => void = () => null;\r\n\tonTouched: () => void = () => null;\r\n\r\n\t// Input properties\r\n\r\n\t/**\r\n * Sets the value of the switch.\r\n * \r\n * @input\r\n * @param value The value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Value]=\"true\"></mefdev-switch>\r\n * ```\r\n */\r\n @Input()\r\n\tset Value(value: boolean) {\r\n\t\tthis.updateValue(value);\r\n\t}\r\n\r\n\t/**\r\n * Sets the size of the switch.\r\n * \r\n * @input\r\n * @param value The size of the switch (e.g., \"small\", \"large\").\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Size]=\"'small'\"></mefdev-switch>\r\n * ```\r\n */\r\n\t@Input()\r\n\tset Size(value: string) {\r\n\t\tthis._size = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n * Sets the color of the switch.\r\n * \r\n * @input\r\n * @param value The color of the switch (e.g., \"primary\", \"secondary\").\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Color]=\"'primary'\"></mefdev-switch>\r\n * ```\r\n */\r\n\t@Input()\r\n\tset Color(value: string) {\r\n\t\tthis._color = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n * Gets the current size of the switch.\r\n * \r\n * @input\r\n * @returns The size of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * const size = mySwitchComponent.Size;\r\n * ```\r\n */\r\n\tget Size(): string {\r\n\t\treturn this._size;\r\n\t}\r\n\r\n\t/**\r\n * Sets the disabled state of the switch.\r\n * \r\n * @input\r\n * @param value The disabled state of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch [Disabled]=\"true\"></mefdev-switch>\r\n * ```\r\n */\r\n\t@Input()\r\n\tset Disabled(value: boolean) {\r\n\t\tthis._disabled = toBoolean(value);\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t /**\r\n * Gets the current disabled state of the switch.\r\n * \r\n * @input\r\n * @returns The disabled state of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * const disabled = mySwitchComponent.Disabled;\r\n * ```\r\n */\r\n\tget Disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\t // Host listener for click event\r\n\t@HostListener(\"click\", [\"$event\"])\r\n\r\n\t/**\r\n * Handles the click event of the switch.\r\n * \r\n * @param e The click event object.\r\n * \r\n * Usage example:\r\n * ```\r\n * <mefdev-switch (click)=\"handleSwitchClick($event)\"></mefdev-switch>\r\n * ```\r\n */\r\n\tonClick(e: MouseEvent): void {\r\n\t\te.preventDefault();\r\n\t\tif (!this._disabled) {\r\n\t\t\tthis.updateValue(!this._checked);\r\n\t\t\tthis.onChange(this._checked);\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t// Helper functions\r\n\r\n /**\r\n * Updates the value of the switch.\r\n * \r\n * @param value The new value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.updateValue(true);\r\n * ```\r\n */\r\n\tupdateValue(value: boolean): void {\r\n\t\tif (this._checked === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._checked = value;\r\n\t\tthis.setClassMap();\r\n\t}\r\n\r\n\t/**\r\n * Sets the class map for the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.setClassMap();\r\n * ```\r\n */\r\n\tsetClassMap(): void {\r\n\t\tthis._classMap = {\r\n\t\t\t[this._prefixCls]: true,\r\n\t\t\t[`${this._prefixCls}-checked`]: this._checked,\r\n\t\t\t[`${this._prefixCls}-disabled`]: this._disabled,\r\n\t\t\t[`${this._prefixCls}-small`]: this._size === \"small\",\r\n\t\t\t[this._color]: this._color\r\n\t\t};\r\n\t}\r\n\r\n\t\r\n\t// ControlValueAccessor interface implementation\r\n\r\n /**\r\n * Writes a new value to the switch.\r\n * \r\n * @param value The new value of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.writeValue(true);\r\n * ```\r\n */\r\n\tpublic writeValue(value: boolean): void {\r\n\t\tthis.updateValue(value);\r\n\t}\r\n\r\n\t/**\r\n * Registers a callback function to be executed when the switch value changes.\r\n * \r\n * @param fn The callback function.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.registerOnChange(value => {\r\n * // Do something with the new value\r\n * });\r\n * ```\r\n */\r\n\tregisterOnChange(fn: (_: boolean) => void): void {\r\n\t\tthis.onChange = fn;\r\n\t}\r\n\r\n\t/**\r\n * Registers a callback function to be executed when the switch is touched.\r\n * \r\n * @param fn The callback function.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.registerOnTouched(() => {\r\n * // Do something when the switch is touched\r\n * });\r\n * ```\r\n */\r\n\tregisterOnTouched(fn: () => void): void {\r\n\t\tthis.onTouched = fn;\r\n\t}\r\n\r\n\t/**\r\n * Sets the disabled state of the switch.\r\n * \r\n * @param isDisabled The disabled state of the switch.\r\n * \r\n * Usage example:\r\n * ```\r\n * this.setDisabledState(true);\r\n * ```\r\n */\r\n\tsetDisabledState(isDisabled: boolean): void {\r\n\t\tthis.Disabled = isDisabled;\r\n\t}\r\n\r\n\t // OnInit lifecycle hook\r\n\tngOnInit(): void {\r\n\t\tthis.setClassMap();\r\n\t}\r\n}\r\n","<span [ngClass]=\"_classMap\" tabindex=\"0\">\r\n <span [ngClass]=\"_innerPrefixCls\">\r\n <ng-template [ngIf]=\"_checked\">\r\n <ng-content select=\"[checked]\"></ng-content>\r\n </ng-template>\r\n <ng-template [ngIf]=\"!_checked\">\r\n <ng-content select=\"[unchecked]\"></ng-content>\r\n </ng-template>\r\n </span>\r\n</span>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MefDevSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n exports : [ MefDevSwitchComponent ],\r\n declarations: [ MefDevSwitchComponent ],\r\n imports : [ CommonModule ]\r\n})\r\nexport class MefDevSwitchModule {\r\n}\r\n","import { Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Component representing the body of a tab, which displays the tab's content.\r\n */\r\n@Component({\r\n selector: 'mefdev-tab-body',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./tab-body.component.html\",\r\n standalone: false\r\n})\r\nexport class MefDevTabBodyComponent {\r\n /**\r\n * The content of the tab, which can be passed as a template.\r\n */\r\n @Input() content: TemplateRef<void>;\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"content\"></ng-template>","import { Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\nimport { toBoolean } from '../util/convert';\r\n\r\n@Directive({\r\n selector: '[mefdev-tab-label]',\r\n host: {\r\n '[class.nav-item]': 'true'\r\n },\r\n standalone: false\r\n})\r\nexport class MefDevTabLabelDirective {\r\n private _disabled = false;\r\n\r\n @Input()\r\n @HostBinding('class.nav-item-disabled')\r\n set disabled(value: boolean) {\r\n this._disabled = toBoolean(value);\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n constructor(public elementRef: ElementRef) {}\r\n\r\n getOffsetLeft(): number {\r\n return this.elementRef.nativeElement.offsetLeft;\r\n }\r\n\r\n getOffsetWidth(): number {\r\n return this.elementRef.nativeElement.offsetWidth;\r\n }\r\n\r\n getOffsetTop(): number {\r\n return this.elementRef.nativeElement.offsetTop;\r\n }\r\n\r\n getOffsetHeight(): number {\r\n return this.elementRef.nativeElement.offsetHeight;\r\n }\r\n}\r\n","\r\nconst availablePrefixs = ['moz', 'ms', 'webkit'];\r\n\r\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\r\n let lastTime = 0;\r\n return function (callback: FrameRequestCallback): number {\r\n const currTime = new Date().getTime();\r\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n const id = window.setTimeout(() => { callback(currTime + timeToCall); }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n}\r\n\r\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\r\n if (typeof window === 'undefined') {\r\n //@ts-ignore\r\n return () => null;\r\n }\r\n if (window.requestAnimationFrame) {\r\n return window.requestAnimationFrame.bind(window);\r\n }\r\n\r\n const prefix = availablePrefixs.filter(key => `${key}RequestAnimationFrame` in window)[0];\r\n\r\n return prefix\r\n ? (window as any)[`${prefix}RequestAnimationFrame`]\r\n : requestAnimationFramePolyfill();\r\n}\r\n\r\nexport const reqAnimFrame = getRequestAnimationFrame();\r\n","import { Directive, ElementRef, HostBinding, Input, NgZone, Renderer2 } from '@angular/core';\r\nimport { reqAnimFrame } from '../util/request-animation';\r\nimport { toBoolean } from '../util/convert';\r\n\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\n\r\n@Directive({\r\n selector: '[mefdev-tabs-ink-bar]',\r\n host: {\r\n '[class.nav-item]': 'true'\r\n },\r\n standalone: false\r\n})\r\nexport class MefDevTabsInkBarDirective {\r\n private _animated = false;\r\n\r\n @Input()\r\n @HostBinding('class.nav-item-animated')\r\n set Animated(value: boolean) {\r\n this._animated = toBoolean(value);\r\n }\r\n\r\n get Animated(): boolean {\r\n return this._animated;\r\n }\r\n\r\n @Input() PositionMode: TabPositionMode = 'horizontal';\r\n\r\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef, private _ngZone: NgZone) {}\r\n\r\n alignToElement(element: HTMLElement): void {\r\n this.show();\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n reqAnimFrame(() => {\r\n /** when horizontal remove height style and add transfrom left **/\r\n if (this.PositionMode === 'horizontal') {\r\n this._renderer.removeStyle(this._elementRef.nativeElement, 'height');\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'transform', `translate3d(${this._getLeftPosition(element)}, 0px, 0px)`);\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', this._getElementWidth(element));\r\n } else {\r\n /** when vertical remove width style and add transfrom top **/\r\n this._renderer.removeStyle(this._elementRef.nativeElement, 'width');\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'transform', `translate3d(0px, ${this._getTopPosition(element)}, 0px)`);\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'height', this._getElementHeight(element));\r\n }\r\n });\r\n });\r\n }\r\n\r\n show(): void {\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\r\n }\r\n\r\n setDisplay(value: string): void {\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'display', value);\r\n }\r\n\r\n hide(): void {\r\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\r\n }\r\n\r\n _getLeftPosition(element: HTMLElement): string {\r\n return element ? element.offsetLeft + 'px' : '0';\r\n }\r\n\r\n _getElementWidth(element: HTMLElement): string {\r\n return element ? element.offsetWidth + 'px' : '0';\r\n }\r\n\r\n _getTopPosition(element: HTMLElement): string {\r\n return element ? element.offsetTop + 'px' : '0';\r\n }\r\n\r\n _getElementHeight(element: HTMLElement): string {\r\n return element ? element.offsetHeight + 'px' : '0';\r\n }\r\n}\r\n","/** code from https://github.com/angular/material2 */\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n NgZone,\r\n Optional,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription, fromEvent, merge, of as observableOf } from 'rxjs';\r\nimport { auditTime, startWith } from 'rxjs/operators';\r\nimport { toBoolean } from '../util/convert';\r\nimport { MefDevTabLabelDirective } from './tab-label.directive';\r\nimport { MefDevTabsInkBarDirective } from './tabs-ink-bar.directive';\r\n\r\nconst EXAGGERATED_OVERSCROLL = 64;\r\nexport type ScrollDirection = 'after' | 'before';\r\n\r\n/** duplicated defined https://github.com/angular/angular-cli/issues/2034 **/\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\n\r\n@Component({\r\n selector: 'mefdev-tabs-nav',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./tabs-nav.component.html\",\r\n standalone: false\r\n})\r\nexport class MefDevTabsNavComponent implements AfterContentChecked, AfterContentInit {\r\n private _animated = true;\r\n private _hideBar = false;\r\n private _showPagination = true;\r\n\r\n _showPaginationControls = false;\r\n _disableScrollAfter = true;\r\n _disableScrollBefore = true;\r\n _scrollDistance = 0;\r\n _selectedIndexChanged = false;\r\n _realignInkBar: Subscription | null = null;\r\n _tabLabelCount: number;\r\n _scrollDistanceChanged: boolean;\r\n _selectedIndex = 0;\r\n _tabPositionMode: TabPositionMode = 'horizontal';\r\n _tabPosition = 'top';\r\n @Input() Size = 'default';\r\n _type = 'line';\r\n\r\n @Input()\r\n set Animated(value: boolean) {\r\n this._animated = toBoolean(value);\r\n }\r\n\r\n get Animated(): boolean {\r\n return this._animated;\r\n }\r\n\r\n @Input()\r\n set Position(value: string) {\r\n this._tabPosition = value;\r\n }\r\n\r\n get Position(): string {\r\n return this._tabPosition;\r\n }\r\n\r\n @Input()\r\n set HideBar(value: boolean) {\r\n this._hideBar = toBoolean(value);\r\n }\r\n\r\n get HideBar(): boolean {\r\n return this._hideBar;\r\n }\r\n\r\n @Input()\r\n set Type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n get Type(): string {\r\n return this._type;\r\n }\r\n\r\n @ContentChild('tabBarExtraContent', { static: true }) _tabBarExtraContent: TemplateRef<void>;\r\n @ContentChildren(MefDevTabLabelDirective) _labelWrappers: QueryList<MefDevTabLabelDirective>;\r\n @ViewChild(MefDevTabsInkBarDirective, { static: true }) _inkBar: MefDevTabsInkBarDirective;\r\n @ViewChild('tabListContainer', { static: true }) _tabListContainer: ElementRef;\r\n @ViewChild('tabList', { static: true }) _tabList: ElementRef;\r\n\r\n @Input()\r\n set ShowPagination(value: boolean) {\r\n this._showPagination = toBoolean(value);\r\n }\r\n\r\n get ShowPagination(): boolean {\r\n return this._showPagination;\r\n }\r\n\r\n @Input()\r\n set PositionMode(value: TabPositionMode) {\r\n this._tabPositionMode = value;\r\n this._alignInkBarToSelectedTab();\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n }\r\n\r\n get PositionMode(): TabPositionMode {\r\n return this._tabPositionMode;\r\n }\r\n\r\n @Input()\r\n set selectedIndex(value: number) {\r\n this._selectedIndexChanged = this._selectedIndex !== value;\r\n\r\n this._selectedIndex = value;\r\n }\r\n\r\n get selectedIndex(): number {\r\n return this._selectedIndex;\r\n }\r\n\r\n constructor(\r\n public _elementRef: ElementRef,\r\n private _ngZone: NgZone,\r\n private _renderer: Renderer2,\r\n @Optional() private _dir: Directionality\r\n ) {}\r\n\r\n _onContentChanges(): void {\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n this._alignInkBarToSelectedTab();\r\n }\r\n\r\n _scrollHeader(scrollDir: ScrollDirection): void {\r\n // Move the scroll distance one-third the length of the tab list's viewport.\r\n this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * this.viewWidthHeightPix) / 3;\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n if (this._tabLabelCount !== this._labelWrappers.length) {\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n this._tabLabelCount = this._labelWrappers.length;\r\n }\r\n if (this._selectedIndexChanged) {\r\n this._scrollToLabel(this._selectedIndex);\r\n if (this.ShowPagination) {\r\n this._checkScrollingControls();\r\n }\r\n this._alignInkBarToSelectedTab();\r\n this._selectedIndexChanged = false;\r\n }\r\n if (this._scrollDistanceChanged) {\r\n if (this.ShowPagination) {\r\n this._updateTabScrollPosition();\r\n }\r\n this._scrollDistanceChanged = false;\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._realignInkBar = this._ngZone.runOutsideAngular(() => {\r\n const dirChange = this._dir ? this._dir.change : observableOf(null);\r\n const resize = typeof window !== 'undefined' ? fromEvent(window, 'resize').pipe(auditTime(10)) : observableOf(null);\r\n //@ts-ignore\r\n return merge(dirChange, resize)\r\n .pipe(startWith(null))\r\n .subscribe(() => {\r\n if (this.ShowPagination) {\r\n this._updatePagination();\r\n }\r\n this._alignInkBarToSelectedTab();\r\n });\r\n });\r\n }\r\n\r\n _updateTabScrollPosition(): void {\r\n const scrollDistance = this.scrollDistance;\r\n if (this.PositionMode === 'horizontal') {\r\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\r\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', `translate3d(${translateX}px, 0, 0)`);\r\n } else {\r\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', `translate3d(0,${-scrollDistance}px, 0)`);\r\n }\r\n }\r\n\r\n _updatePagination(): void {\r\n this._checkPaginationEnabled();\r\n this._checkScrollingControls();\r\n this._updateTabScrollPosition();\r\n }\r\n\r\n _checkPaginationEnabled(): void {\r\n this._showPaginationControls = this.tabListScrollWidthHeightPix > this.elementRefOffSetWidthHeight;\r\n\r\n if (!this._showPaginationControls) {\r\n this.scrollDistance = 0;\r\n }\r\n }\r\n\r\n _scrollToLabel(labelIndex: number): void {\r\n const selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\r\n\r\n if (!selectedLabel) {\r\n return;\r\n }\r\n\r\n // The view length is the visible width of the tab labels.\r\n\r\n let labelBeforePos: number;\r\n let labelAfterPos: number;\r\n if (this.PositionMode === 'horizontal') {\r\n if (this._getLayoutDirection() === 'ltr') {\r\n labelBeforePos = selectedLabel.getOffsetLeft();\r\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\r\n } else {\r\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\r\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\r\n }\r\n } else {\r\n labelBeforePos = selectedLabel.getOffsetTop();\r\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetHeight();\r\n }\r\n const beforeVisiblePos = this.scrollDistance;\r\n const afterVisiblePos = this.scrollDistance + this.viewWidthHeightPix;\r\n\r\n if (labelBeforePos < beforeVisiblePos) {\r\n // Scroll header to move label to the before direction\r\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\r\n } else if (labelAfterPos > afterVisiblePos) {\r\n // Scroll header to move label to the after direction\r\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\r\n }\r\n }\r\n\r\n _checkScrollingControls(): void {\r\n // Check if the pagination arrows should be activated.\r\n this._disableScrollBefore = this.scrollDistance === 0;\r\n this._disableScrollAfter = this.scrollDistance === this._getMaxScrollDistance();\r\n }\r\n\r\n /**\r\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\r\n * is equal to the difference in width between the tab list container and tab header container.\r\n *\r\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\r\n * should be called sparingly.\r\n */\r\n _getMaxScrollDistance(): number {\r\n return this.tabListScrollWidthHeightPix - this.viewWidthHeightPix || 0;\r\n }\r\n\r\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\r\n set scrollDistance(v: number) {\r\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\r\n\r\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\r\n // transformation can move the header.\r\n this._scrollDistanceChanged = true;\r\n\r\n this._checkScrollingControls();\r\n }\r\n\r\n get scrollDistance(): number {\r\n return this._scrollDistance;\r\n }\r\n\r\n get viewWidthHeightPix(): number {\r\n let PAGINATION_PIX = 0;\r\n if (this._showPaginationControls) {\r\n PAGINATION_PIX = 64;\r\n }\r\n if (this.PositionMode === 'horizontal') {\r\n return this._tabListContainer.nativeElement.offsetWidth - PAGINATION_PIX;\r\n } else {\r\n return this._tabListContainer.nativeElement.offsetHeight - PAGINATION_PIX;\r\n }\r\n }\r\n\r\n get tabListScrollWidthHeightPix(): number {\r\n if (this.PositionMode === 'horizontal') {\r\n return this._tabList.nativeElement.scrollWidth;\r\n } else {\r\n return this._tabList.nativeElement.scrollHeight;\r\n }\r\n }\r\n\r\n get elementRefOffSetWidthHeight(): number {\r\n if (this.PositionMode === 'horizontal') {\r\n return this._elementRef.nativeElement.offsetWidth;\r\n } else {\r\n return this._elementRef.nativeElement.offsetHeight;\r\n }\r\n }\r\n\r\n _getLayoutDirection(): Direction {\r\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n }\r\n\r\n _alignInkBarToSelectedTab(): void {\r\n if (this.Type !== 'fillup') {\r\n const selectedLabelWrapper =\r\n this._labelWrappers && this._labelWrappers.length\r\n ? this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement\r\n : null;\r\n if (this._inkBar) {\r\n this._inkBar.alignToElement(selectedLabelWrapper);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"nav-tabs-wrapper\" [class.scrolling]=\"_showPaginationControls\" #tabListContainer>\r\n <div class=\"nav-wrap\">\r\n <ul\r\n class=\"nav nav-tabs nav-tabs-{{ _type }} nav-tabs-{{ _tabPosition }}\"\r\n [class.tabs-nav-animated]=\"Animated\"\r\n #tabList\r\n (cdkObserveContent)=\"_onContentChanges()\"\r\n >\r\n <div\r\n class=\"active-bar\"\r\n mefdev-tabs-ink-bar\r\n [hidden]=\"HideBar\"\r\n [Animated]=\"Animated\"\r\n [PositionMode]=\"PositionMode\"\r\n style=\"display: block;\"\r\n ></div>\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>","/** code from https://github.com/angular/material2 */\r\n\r\nimport {\r\n AfterContentChecked,\r\n AfterViewInit,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MefDevTabComponent } from './tab.component';\r\nimport { MefDevTabsNavComponent } from './tabs-nav.component';\r\n\r\nexport interface AnimatedInterface {\r\n inkBar: boolean;\r\n tabPane: boolean;\r\n}\r\n\r\nexport class TabChangeEvent {\r\n index: number;\r\n tab: MefDevTabComponent;\r\n}\r\n\r\nexport type TabPosition = 'top' | 'bottom' | 'left' | 'right';\r\nexport type TabPositionMode = 'horizontal' | 'vertical';\r\nexport type TabType = 'line' | 'fillup' | 'linetriangle';\r\n\r\n\r\n/**\r\n * Represents a tab set or tab group component.\r\n * @example\r\n * <mefdev-tabset TabPosition=\"top\" Animated=\"true\" ShowPagination=\"true\">\r\n * <mefdev-tab label=\"Tab 1\">Tab 1 content</mefdev-tab>\r\n * <mefdev-tab label=\"Tab 2\">Tab 2 content</mefdev-tab>\r\n * </mefdev-tabset>\r\n *\r\n * Example of usage:\r\n * <example-url>https://platform.mef.dev/ui_kit_demo/view/page_components/tabset</example-url>\r\n */\r\n@Component({\r\n selector: 'mefdev-tabset',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./tabset.component.html\",\r\n standalone: false\r\n})\r\nexport class MefDevTabSetComponent implements AfterContentChecked, OnInit, AfterViewInit {\r\n _el:any;\r\n _classMap:any;\r\n _prefixCls = 'nav-tabs';\r\n _width:any;\r\n _tabPosition: TabPosition = 'top';\r\n _tabPositionMode: TabPositionMode = 'horizontal';\r\n _indexToSelect: number | null = 0;\r\n _selectedIndex: number | null = null;\r\n _isViewInit = false;\r\n _tabs: MefDevTabComponent[] = [];\r\n _tabAnimation = '';\r\n _extra_tab_class = '';\r\n _extra_tabcontent_class = '';\r\n\r\n /**\r\n * Template reference for additional content to be displayed in the tab bar.\r\n */\r\n @Input() TabBarExtraTemplate: TemplateRef<void>;\r\n @ContentChild('TabBarExtraContent', { static: true }) TabBarExtraContent: TemplateRef<void>;\r\n @ViewChild('tabNav', { static: true }) _tabNav: MefDevTabsNavComponent;\r\n @ViewChild('tabContent', { static: true }) _tabContent: ElementRef;\r\n @ViewChild('hostContent', { static: true }) _hostContent: ElementRef;\r\n\r\n /**\r\n * Whether the tab set is animated. Can be a boolean or an object of type AnimatedInterface.\r\n * @example\r\n * - true (enables animation for both ink bar and tab pane)\r\n * - { inkBar: true, tabPane: false } (enables animation for ink bar only)\r\n * Default: true\r\n */\r\n\r\n @Input() Animated: AnimatedInterface | boolean = true;\r\n\r\n /**\r\n * Whether to show pagination controls for scrolling tabs.\r\n * @example true\r\n * Default: true\r\n */\r\n @Input() ShowPagination = true;\r\n\r\n /**\r\n * Whether the tab set is hidden.\r\n * @example true\r\n * Default: false\r\n */\r\n @Input() Hide = false;\r\n\r\n /**\r\n * The index of the selected tab.\r\n */\r\n @Input()\r\n set SelectedIndex(value: number | null) {\r\n this._indexToSelect = value;\r\n }\r\n\r\n get SelectedIndex(): number | null {\r\n return this._selectedIndex;\r\n }\r\n\r\n /**\r\n * Event emitted when the selected tab index changes.\r\n * @returns An Observable emitting the index of the selected tab.\r\n */\r\n @Output()\r\n get SelectedIndexChange(): Observable<number> {\r\n //@ts-ignore\r\n return this.SelectChange.pipe(map((event:any) => event.index));\r\n }\r\n\r\n /**\r\n * Event emitted when a tab is selected.\r\n * @example\r\n * <mefdev-tabset (SelectChange)=\"onTabSelect($event)\"></mefdev-tabset>\r\n */\r\n @Output() SelectChange: EventEmitter<TabChangeEvent> = new EventEmitter<TabChangeEvent>(true);\r\n\r\n /**\r\n * Size of the tab set. Can be 'default', 'small', or 'large'.\r\n * @example 'large'\r\n * Default: 'default'\r\n */\r\n @Input() Size = 'default';\r\n _type: TabType = 'line';\r\n tabs: MefDevTabComponent[] = [];\r\n\r\n /**\r\n * Position of the tab set. Can be 'top', 'bottom', 'left', or 'right'.\r\n */\r\n @Input()\r\n set TabPosition(value: TabPosition) {\r\n this._tabPosition = value;\r\n this._tabPositionMode = (value === 'top' || value === 'bottom') ? 'horizontal' : 'vertical';\r\n }\r\n get TabPosition(): TabPosition {\r\n return this._tabPosition;\r\n }\r\n\r\n /**\r\n * Additional CSS class for the tabs.\r\n */\r\n @Input()\r\n set extraTabClass(value: string) {\r\n this._extra_tab_class = value;\r\n }\r\n\r\n /**\r\n * Additional CSS class for the tab content.\r\n */\r\n @Input()\r\n set extraTabContentClass(value: string) {\r\n this._extra_tabcontent_class = value;\r\n }\r\n\r\n /**\r\n * Type of the tab set. Can be 'line', 'fillup', or 'linetriangle'.\r\n */\r\n @Input()\r\n set Type(value: TabType) {\r\n if (this._type === value) {\r\n return;\r\n }\r\n this._type = value;\r\n this._setClassMap();\r\n }\r\n\r\n /**\r\n * Animation to apply to the tabs. Accepts CSS animation name.\r\n */\r\n @Input()\r\n set tabAnimation(value: string) {\r\n this._tabAnimation = value;\r\n }\r\n\r\n get Type(): TabType {\r\n return this._type;\r\n }\r\n\r\n _setPosition(value: TabPosition): void {}\r\n\r\n _setClassMap(): void {}\r\n\r\n // Other properties, methods, and lifecycle hooks...\r\n\r\n /**\r\n * Selects the tab at the specified index.\r\n * @param index The index of the tab to select.\r\n * ```\r\n * <button (click)=\"clickLabel(0)\">Select Tab 1</button>\r\n *```\r\n */\r\n clickLabel(index: number): void {\r\n if (this._tabs[index].Disabled) {\r\n } else {\r\n this.SelectedIndex = index;\r\n this._tabs[index].pgClick.emit();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._setClassMap();\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n // Clamp the next selected index to the bounds of 0 and the tabs length. Note the `|| 0`, which\r\n // ensures that values like NaN can't get through and which would otherwise throw the\r\n // component into an infinite loop (since Math.max(NaN, 0) === NaN).\r\n const indexToSelect = (this._indexToSelect = Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0)));\r\n\r\n // If there is a change in selected index, emit a change event. Should not trigger if\r\n // the selected index has not yet been initialized.\r\n if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {\r\n this.SelectChange.emit(this._createChangeEvent(indexToSelect));\r\n }\r\n\r\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\r\n this._tabs.forEach((tab: MefDevTabComponent, index: number) => {\r\n tab.position = index - indexToSelect;\r\n // If there is already a selected tab, then set up an origin for the next selected tab\r\n // if it doesn't have one already.\r\n if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {\r\n tab.origin = indexToSelect - this._selectedIndex;\r\n }\r\n });\r\n this._selectedIndex = indexToSelect;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n }\r\n\r\n private _createChangeEvent(index: number): TabChangeEvent {\r\n const event = new TabChangeEvent();\r\n event.index = index;\r\n if (this._tabs && this._tabs.length) {\r\n event.tab = this._tabs[index];\r\n this._tabs.forEach((item, i) => {\r\n if (i !== index) {\r\n item.pgDeselect.emit();\r\n }\r\n });\r\n event.tab.pgSelect.emit();\r\n }\r\n return event;\r\n }\r\n\r\n get inkBarAnimated(): boolean {\r\n return this.Animated === true || (this.Animated as AnimatedInterface).inkBar === true;\r\n }\r\n\r\n get tabPaneAnimated(): boolean {\r\n return this.Animated === true || (this.Animated as AnimatedInterface).tabPane === true;\r\n }\r\n\r\n constructor(private _renderer: Renderer2) {}\r\n}\r\n","<div class=\"tab-wrapper tab-{{ _tabPositionMode }} {{ _tabPosition }} {{ _type }} {{ _extra_tab_class }}\" #hostContent>\r\n <mefdev-tabs-nav\r\n #tabNav\r\n [Size]=\"Size\"\r\n [Type]=\"Type\"\r\n [ShowPagination]=\"ShowPagination\"\r\n [PositionMode]=\"_tabPositionMode\"\r\n [Position]=\"_tabPosition\"\r\n [Animated]=\"inkBarAnimated\"\r\n [HideBar]=\"Hide\"\r\n [selectedIndex]=\"SelectedIndex\"\r\n >\r\n <ng-template #tabBarExtraContent>\r\n <ng-template [ngTemplateOutlet]=\"TabBarExtraTemplate || TabBarExtraContent\"></ng-template>\r\n </ng-template>\r\n <li mefdev-tab-label [disabled]=\"tab.disabled\" (click)=\"clickLabel(i)\" *ngFor=\"let tab of _tabs; let i = index\">\r\n <a href=\"javascript:void(0);\" class=\"\" [class.active]=\"SelectedIndex == i && !Hide\">\r\n <ng-template [ngTemplateOutlet]=\"tab._tabHeading\"></ng-template>\r\n </a>\r\n </mefdev-tabs-nav>\r\n <div class=\"tab-content-wrapper {{ _extra_tabcontent_class }}\">\r\n <div\r\n class=\"tab-content {{ _tabAnimation }}\"\r\n #tabContent\r\n [class.animated]=\"tabPaneAnimated\"\r\n [class.not-animated]=\"!tabPaneAnimated\"\r\n [style.margin-left.%]=\"tabPaneAnimated && -(SelectedIndex ?? -1) * 100\"\r\n >\r\n <mefdev-tab-body\r\n class=\"tab-pane\"\r\n [class.active]=\"SelectedIndex == i && !Hide\"\r\n [class.inactive]=\"SelectedIndex != i || Hide\"\r\n [content]=\"tab.content\"\r\n *ngFor=\"let tab of _tabs; let i = index\"\r\n >\r\n </mefdev-tab-body>\r\n </div>\r\n </div>\r\n </div>","import {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { toBoolean } from '../util/convert';\r\nimport { MefDevTabSetComponent } from './tabset.component';\r\n\r\n@Component({\r\n selector: 'mefdev-tab',\r\n templateUrl: \"./tab.component.html\",\r\n styles: [],\r\n host: {\r\n '[class.ant-tabs-tabpane]': 'true'\r\n },\r\n standalone: false\r\n})\r\nexport class MefDevTabComponent implements OnDestroy, OnInit {\r\n private disabled = false;\r\n\r\n position: number | null = null;\r\n origin: number | null = null;\r\n\r\n /**\r\n * Sets the disabled state of the tab.\r\n *```html\r\n * <mefdev-tab [Disabled]=\"true\"></mefdev-tab>\r\n * ```\r\n */\r\n @Input()\r\n set Disabled(value: boolean) {\r\n this.disabled = toBoolean(value);\r\n }\r\n\r\n /**\r\n * Gets the disabled state of the tab.\r\n */\r\n get Disabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n /**\r\n * Event emitted when the tab is selected.\r\n *```html\r\n * <mefdev-tab (pgSelect)=\"onTabSelect()\"></mefdev-tab>\r\n * ```\r\n */\r\n @Output() pgSelect = new EventEmitter();\r\n\r\n /**\r\n * Event emitted when the tab is clicked.\r\n *```html\r\n * <mefdev-tab (pgClick)=\"onTabClick()\"></mefdev-tab>\r\n * ```\r\n */\r\n @Output() pgClick = new EventEmitter();\r\n\r\n /**\r\n * Event emitted when the tab is deselected.\r\n *```html\r\n * <mefdev-tab (pgDeselect)=\"onTabDeselect()\"></mefdev-tab>\r\n *```\r\n */\r\n @Output() pgDeselect = new EventEmitter();\r\n\r\n /**\r\n * Reference to the template for the tab heading.\r\n */\r\n @ContentChild('TabHeading', { static: true }) _tabHeading: TemplateRef<void>;\r\n\r\n /**\r\n * Reference to the template for the tab content.\r\n */\r\n @ViewChild(TemplateRef, { static: true }) _content: TemplateRef<void>;\r\n\r\n /**\r\n * Gets the template for the tab content.\r\n *```html\r\n * <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n *```\r\n */\r\n get content(): TemplateRef<void> | null {\r\n return this._content;\r\n }\r\n\r\n constructor(private MefDevTabSetComponent: MefDevTabSetComponent) {}\r\n\r\n /**\r\n * Initializes the tab component.\r\n */\r\n ngOnInit(): void {\r\n this.MefDevTabSetComponent._tabs.push(this);\r\n }\r\n\r\n /**\r\n * Cleans up resources when the tab component is destroyed.\r\n */\r\n ngOnDestroy(): void {\r\n // Remove the tab from the parent tabset component when destroyed\r\n this.MefDevTabSetComponent._tabs.splice(this.MefDevTabSetComponent._tabs.indexOf(this), 1);\r\n }\r\n}\r\n","<ng-template>\r\n <ng-content></ng-content>\r\n </ng-template>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MefDevTabBodyComponent } from './tab-body.component';\r\nimport { MefDevTabLabelDirective } from './tab-label.directive';\r\nimport { MefDevTabComponent } from './tab.component';\r\nimport { MefDevTabsInkBarDirective } from './tabs-ink-bar.directive';\r\nimport { MefDevTabsNavComponent } from './tabs-nav.component';\r\nimport { MefDevTabSetComponent } from './tabset.component';\r\n\r\n@NgModule({\r\n declarations: [MefDevTabComponent, MefDevTabSetComponent, MefDevTabsNavComponent, MefDevTabLabelDirective, MefDevTabsInkBarDirective, MefDevTabBodyComponent],\r\n exports: [MefDevTabComponent, MefDevTabSetComponent, MefDevTabsNavComponent, MefDevTabLabelDirective, MefDevTabsInkBarDirective, MefDevTabBodyComponent],\r\n imports: [CommonModule]\r\n})\r\nexport class MefDevTabsModule {}\r\n","import {InjectionToken} from '@angular/core';\r\nimport {CdkAccordion} from '@angular/cdk/accordion';\r\n\r\nexport type AccordionDisplayMode = 'default' | 'flat';\r\n\r\nexport type AccordionTogglePosition = 'before' | 'after';\r\n\r\nexport interface AccordionBase extends CdkAccordion {\r\n hideToggle: boolean;\r\n\r\n displayMode: AccordionDisplayMode;\r\n\r\n togglePosition: AccordionTogglePosition;\r\n\r\n _handleHeaderKeydown: (event: KeyboardEvent) => void;\r\n\r\n _handleHeaderFocus: (header: any) => void;\r\n}\r\n\r\nexport const ACCORDION = new InjectionToken<AccordionBase>('ACCORDION');","import {InjectionToken} from '@angular/core';\r\nimport {CdkAccordionItem} from '@angular/cdk/accordion';\r\n\r\n\r\nexport interface ExpansionPanelBase extends CdkAccordionItem {\r\n hideToggle: boolean;\r\n}\r\n\r\n\r\nexport const MD_EXPANSION_PANEL = new InjectionToken<ExpansionPanelBase>('MD_EXPANSION_PANEL');","import {Directive, TemplateRef, inject} from '@angular/core';\r\nimport {MD_EXPANSION_PANEL, ExpansionPanelBase} from './expansion-panel-base';\r\n\r\n@Directive({\r\n selector: 'ng-template[mdExpansionPanelContent]',\r\n})\r\nexport class MDExpansionPanelContent {\r\n _template = inject<TemplateRef<any>>(TemplateRef);\r\n _expansionPanel = inject<ExpansionPanelBase>(MD_EXPANSION_PANEL, {optional: true});\r\n\r\n constructor() {}\r\n}","import {CdkAccordionItem} from '@angular/cdk/accordion';\r\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\r\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\r\n\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n InjectionToken,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n inject,\r\n NgZone,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {_IdGenerator} from '@angular/cdk/a11y';\r\nimport {Subject} from 'rxjs';\r\nimport {filter, startWith, take} from 'rxjs/operators';\r\nimport {AccordionBase, AccordionTogglePosition, ACCORDION} from './accordion-base';\r\nimport {MD_EXPANSION_PANEL} from './expansion-panel-base';\r\nimport {MDExpansionPanelContent} from './expansion-panel-content';;\r\n\r\n/** Visual state of the panel used by host bindings/classes. */\r\nexport type ExpansionPanelState = 'expanded' | 'collapsed';\r\n\r\n/** Optional DI defaults for panel behavior and look. */\r\nexport interface ExpansionPanelDefaultOptions {\r\n expandedHeight: string;\r\n collapsedHeight: string;\r\n hideToggle: boolean;\r\n}\r\n\r\n/** Injection token for providing default expansion-panel options. */\r\nexport const EXPANSION_PANEL_DEFAULT_OPTIONS =\r\n new InjectionToken<ExpansionPanelDefaultOptions>('EXPANSION_PANEL_DEFAULT_OPTIONS');\r\n\r\n@Component({\r\n styleUrl: 'expansion-panel.scss',\r\n selector: 'md-expansion-panel',\r\n exportAs: 'expansionPanel',\r\n templateUrl: 'expansion-panel.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n // Provide a standalone accordion context when used outside a parent accordion.\r\n {provide: ACCORDION, useValue: undefined},\r\n // Expose this concrete implementation under the base token.\r\n {provide: MD_EXPANSION_PANEL, useExisting: MDExpansionPanel},\r\n ],\r\n host: {\r\n class: 'expansion-panel',\r\n '[class.expanded]': 'expanded',\r\n '[class.expansion-panel-spacing]': '_hasSpacing()',\r\n },\r\n imports: [CdkPortalOutlet],\r\n})\r\nexport class MDExpansionPanel\r\n extends CdkAccordionItem\r\n implements AfterContentInit, OnChanges, OnDestroy\r\n{\r\n /** View container for lazily attaching projected content via portals. */\r\n private _viewContainerRef = inject(ViewContainerRef);\r\n\r\n /** Global animation toggle for this component instance. */\r\n private readonly _animationsDisabled = false;\r\n\r\n /** Document reference for focus containment checks. */\r\n private _document = inject(DOCUMENT);\r\n\r\n /** NgZone to run listeners outside Angular and re-enter only on emit. */\r\n private _ngZone = inject(NgZone);\r\n\r\n /** Host element ref for event binding and CSS class toggles. */\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n /** Renderer used to register `transitionend` listeners. */\r\n private _renderer = inject(Renderer2);\r\n\r\n /** Cleanup function returned by Renderer2.listen; called on destroy. */\r\n private _cleanupTransitionEnd: (() => void) | undefined;\r\n\r\n /** Whether the toggle indicator should be hidden (local or inherited). */\r\n @Input({transform: booleanAttribute})\r\n get hideToggle(): boolean {\r\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\r\n }\r\n set hideToggle(value: boolean) {\r\n this._hideToggle = value;\r\n }\r\n private _hideToggle = false;\r\n\r\n /** Toggle position relative to header content (local or inherited). */\r\n @Input()\r\n get togglePosition(): AccordionTogglePosition {\r\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\r\n }\r\n set togglePosition(value: AccordionTogglePosition) {\r\n this._togglePosition = value;\r\n }\r\n private _togglePosition: AccordionTogglePosition;\r\n\r\n /** Fires after the expand transition completes. */\r\n @Output() readonly afterExpand = new EventEmitter<void>();\r\n /** Fires after the collapse transition completes. */\r\n @Output() readonly afterCollapse = new EventEmitter<void>();\r\n\r\n /** Emits whenever any @Input changes (for consumers to react). */\r\n readonly _inputChanges = new Subject<SimpleChanges>();\r\n\r\n /** Optional parent accordion context (if inside an accordion). */\r\n override accordion = inject<AccordionBase>(ACCORDION, {optional: true, skipSelf: true})!;\r\n\r\n /** Lazily-projected body content (<ng-template mdExpansionPanelContent>). */\r\n @ContentChild(MDExpansionPanelContent) _lazyContent: MDExpansionPanelContent;\r\n\r\n /** Body host element (focus containment & transition target). */\r\n @ViewChild('body') _body: ElementRef<HTMLElement>;\r\n\r\n /** Wrapper element that handles the grid/height transition. */\r\n @ViewChild('bodyWrapper')\r\n protected _bodyWrapper: ElementRef<HTMLElement> | undefined;\r\n\r\n /** Portal wrapping the lazy content; created on first open. */\r\n _portal: TemplatePortal;\r\n\r\n /** Header id for aria-controls/label association. */\r\n _headerId: string = inject(_IdGenerator).getId('expansion-panel-header-');\r\n\r\n constructor() {\r\n super();\r\n\r\n // Read defaults from DI if provided.\r\n const defaultOptions = inject<ExpansionPanelDefaultOptions>(\r\n EXPANSION_PANEL_DEFAULT_OPTIONS,\r\n {optional: true},\r\n );\r\n\r\n // Use UniqueSelectionDispatcher from CDKAccordionItem base (ensures single expand if configured).\r\n this._expansionDispatcher = inject(UniqueSelectionDispatcher);\r\n\r\n if (defaultOptions) {\r\n this.hideToggle = defaultOptions.hideToggle;\r\n }\r\n }\r\n\r\n /** Host CSS helper: spacing only in default display mode when expanded. */\r\n _hasSpacing(): boolean {\r\n if (this.accordion) {\r\n return this.expanded && this.accordion.displayMode === 'default';\r\n }\r\n return false;\r\n }\r\n\r\n /** Map boolean expanded flag to the public state union. */\r\n _getExpandedState(): ExpansionPanelState {\r\n return this.expanded ? 'expanded' : 'collapsed';\r\n }\r\n\r\n /** Programmatic toggle (overrides base to flip expanded flag). */\r\n override toggle(): void {\r\n this.expanded = !this.expanded;\r\n }\r\n\r\n /** Programmatic close. */\r\n override close(): void {\r\n this.expanded = false;\r\n }\r\n\r\n /** Programmatic open. */\r\n override open(): void {\r\n this.expanded = true;\r\n }\r\n\r\n /** Set up lazy content portal and animation listeners once content is ready. */\r\n ngAfterContentInit() {\r\n // Lazily attach content the first time the panel opens.\r\n if (this._lazyContent && this._lazyContent._expansionPanel === this) {\r\n this.opened\r\n .pipe(\r\n startWith(null),\r\n filter(() => this.expanded && !this._portal),\r\n take(1),\r\n )\r\n .subscribe(() => {\r\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\r\n });\r\n }\r\n\r\n this._setupAnimationEvents();\r\n }\r\n\r\n /** Forward raw input changes to a Subject for external observers. */\r\n ngOnChanges(changes: SimpleChanges) {\r\n this._inputChanges.next(changes);\r\n }\r\n\r\n /** Cleanup listeners and subjects. */\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._cleanupTransitionEnd?.();\r\n this._inputChanges.complete();\r\n }\r\n\r\n /** Whether the current document focus is inside the panel body. */\r\n _containsFocus(): boolean {\r\n if (this._body) {\r\n const focusedElement = this._document.activeElement;\r\n const bodyElement = this._body.nativeElement;\r\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Transitionend handler:\r\n * - Ensures we react only to the body wrapper's grid-height transition.\r\n * - Emits the appropriate afterExpand/afterCollapse event inside Angular.\r\n */\r\n private _transitionEndListener = ({target, propertyName}: TransitionEvent) => {\r\n if (target === this._bodyWrapper?.nativeElement && propertyName === 'grid-template-rows') {\r\n this._ngZone.run(() => {\r\n if (this.expanded) {\r\n this.afterExpand.emit();\r\n } else {\r\n this.afterCollapse.emit();\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Registers animation listeners:\r\n * - In no-animation mode, emit completion events immediately on state streams.\r\n * - Otherwise, add a `transitionend` listener and a CSS class to enable transitions,\r\n * after a short timeout so the initial render settles.\r\n */\r\n protected _setupAnimationEvents() {\r\n this._ngZone.runOutsideAngular(() => {\r\n if (this._animationsDisabled) {\r\n this.opened.subscribe(() => this._ngZone.run(() => this.afterExpand.emit()));\r\n this.closed.subscribe(() => this._ngZone.run(() => this.afterCollapse.emit()));\r\n } else {\r\n setTimeout(() => {\r\n const element = this._elementRef.nativeElement;\r\n this._cleanupTransitionEnd = this._renderer.listen(\r\n element,\r\n 'transitionend',\r\n this._transitionEndListener,\r\n );\r\n element.classList.add('expansion-panel-animations-enabled');\r\n }, 200);\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Simple action-row wrapper for projected buttons/links inside the panel body.\r\n * Provides a stable class hook for styling.\r\n */\r\n@Directive({\r\n selector: 'action-row',\r\n host: {\r\n class: 'action-row',\r\n },\r\n})\r\nexport class ExpansionPanelActionRow {}\r\n","<ng-content select=\"md-expansion-panel-header\"></ng-content>\r\n<div class=\"expansion-panel-content-wrapper\" [attr.inert]=\"expanded ? null : ''\" #bodyWrapper>\r\n <div class=\"expansion-panel-content\"\r\n role=\"region\"\r\n [attr.aria-labelledby]=\"_headerId\"\r\n [id]=\"id\"\r\n #body>\r\n <div class=\"expansion-panel-body\">\r\n <ng-content></ng-content>\r\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\r\n </div>\r\n <ng-content select=\"action-row\"></ng-content>\r\n </div>\r\n</div>","import {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\r\nimport {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n Input,\r\n numberAttribute,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n inject,\r\n HostAttributeToken,\r\n} from '@angular/core';\r\nimport {EMPTY, merge, Subscription} from 'rxjs';\r\nimport {filter} from 'rxjs/operators';\r\nimport {AccordionTogglePosition} from './accordion-base';\r\nimport {\r\n MDExpansionPanel,\r\n ExpansionPanelDefaultOptions,\r\n EXPANSION_PANEL_DEFAULT_OPTIONS,\r\n} from './expansion-panel';\r\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\r\n\r\n/**\r\n * Header component for an expansion panel.\r\n * - Acts as the interactive control (button role) that toggles the panel.\r\n * - Manages aria attributes and keyboard interaction.\r\n * - Syncs with parent accordion/panel inputs and emits change detection marks.\r\n */\r\n@Component({\r\n selector: 'md-expansion-panel-header',\r\n styleUrl: 'expansion-panel-header.scss',\r\n templateUrl: 'expansion-panel-header.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n // Semantic and a11y\r\n 'class': 'expansion-panel-header focus-indicator',\r\n 'role': 'button',\r\n '[attr.id]': 'panel._headerId',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '[attr.aria-controls]': '_getPanelId()',\r\n '[attr.aria-expanded]': '_isExpanded()',\r\n '[attr.aria-disabled]': 'panel.disabled',\r\n\r\n // Visual state\r\n '[class.expanded]': '_isExpanded()',\r\n '[class.expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\r\n '[class.expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\r\n '[style.height]': '_getHeaderHeight()',\r\n\r\n // Interaction\r\n '(click)': '_toggle()',\r\n '(keydown)': '_keydown($event)',\r\n },\r\n})\r\nexport class MDExpansionPanelHeader implements AfterViewInit, OnDestroy, FocusableOption {\r\n /** Owning panel (injected from host). */\r\n panel = inject(MDExpansionPanel, {host: true});\r\n /** Host element reference (focus & DOM ops). */\r\n private _element = inject(ElementRef);\r\n /** FocusMonitor for origin-aware focus management. */\r\n private _focusMonitor = inject(FocusMonitor);\r\n /** Marks for check on state changes (OnPush). */\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** Subscriptions to panel/accordion streams. */\r\n private _parentChangeSubscription = Subscription.EMPTY;\r\n\r\n constructor() {\r\n const panel = this.panel;\r\n\r\n // Optional defaults for header heights.\r\n const defaultOptions = inject<ExpansionPanelDefaultOptions>(\r\n EXPANSION_PANEL_DEFAULT_OPTIONS,\r\n {optional: true},\r\n );\r\n\r\n // Allow host to set tabindex; default to 0.\r\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\r\n this.tabIndex = parseInt(tabIndex || '') || 0;\r\n\r\n // Re-render when panel opens/closes or when inherited inputs change.\r\n const accordionHideToggleChange = panel.accordion\r\n ? panel.accordion._stateChanges.pipe(\r\n filter(changes => !!(changes['hideToggle'] || changes['togglePosition'])),\r\n )\r\n : EMPTY;\r\n\r\n this._parentChangeSubscription = merge(\r\n panel.opened,\r\n panel.closed,\r\n accordionHideToggleChange,\r\n panel._inputChanges.pipe(\r\n filter(changes => {\r\n return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\r\n }),\r\n ),\r\n ).subscribe(() => this._changeDetectorRef.markForCheck());\r\n\r\n // If focus is inside the body when the panel closes, return focus to header.\r\n panel.closed\r\n .pipe(filter(() => panel._containsFocus()))\r\n .subscribe(() => this._focusMonitor.focusVia(this._element, 'program'));\r\n\r\n // Apply defaults for expanded/collapsed heights, if provided.\r\n if (defaultOptions) {\r\n this.expandedHeight = defaultOptions.expandedHeight;\r\n this.collapsedHeight = defaultOptions.collapsedHeight;\r\n }\r\n }\r\n\r\n /** Custom height when the panel is expanded (CSS length). */\r\n @Input() expandedHeight: string;\r\n /** Custom height when the panel is collapsed (CSS length). */\r\n @Input() collapsedHeight: string;\r\n\r\n /**\r\n * Keyboard tab stop order for the header.\r\n * Normalized via numberAttribute; defaults to 0 if null/undefined.\r\n */\r\n @Input({\r\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n })\r\n tabIndex: number = 0;\r\n\r\n /** Whether the header is effectively disabled (delegates to panel). */\r\n get disabled(): boolean {\r\n return this.panel.disabled;\r\n }\r\n\r\n /** Click/keyboard toggle handler. */\r\n _toggle(): void {\r\n if (!this.disabled) {\r\n this.panel.toggle();\r\n }\r\n }\r\n\r\n /** Current expanded state as boolean. */\r\n _isExpanded(): boolean {\r\n return this.panel.expanded;\r\n }\r\n\r\n /** Expanded state string used by templates/host bindings. */\r\n _getExpandedState(): string {\r\n return this.panel._getExpandedState();\r\n }\r\n\r\n /** ID of the associated panel body (for aria-controls). */\r\n _getPanelId(): string {\r\n return this.panel.id;\r\n }\r\n\r\n /** Toggle indicator placement relative to header content. */\r\n _getTogglePosition(): AccordionTogglePosition {\r\n return this.panel.togglePosition;\r\n }\r\n\r\n /** Whether to show the toggle indicator (inherits hideToggle/disabled). */\r\n _showToggle(): boolean {\r\n return !this.panel.hideToggle && !this.panel.disabled;\r\n }\r\n\r\n /** Compute header height based on state and provided inputs. */\r\n _getHeaderHeight(): string | null {\r\n const isExpanded = this._isExpanded();\r\n if (isExpanded && this.expandedHeight) {\r\n return this.expandedHeight;\r\n } else if (!isExpanded && this.collapsedHeight) {\r\n return this.collapsedHeight;\r\n }\r\n return null;\r\n }\r\n\r\n /** Keydown handler: Space/Enter toggles; delegate others to accordion. */\r\n _keydown(event: KeyboardEvent) {\r\n switch (event.keyCode) {\r\n case SPACE:\r\n case ENTER:\r\n if (!hasModifierKey(event)) {\r\n event.preventDefault();\r\n this._toggle();\r\n }\r\n break;\r\n default:\r\n if (this.panel.accordion) {\r\n this.panel.accordion._handleHeaderKeydown(event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n /** FocusableOption implementation with origin-aware focus. */\r\n focus(origin?: FocusOrigin, options?: FocusOptions) {\r\n if (origin) {\r\n this._focusMonitor.focusVia(this._element, origin, options);\r\n } else {\r\n this._element.nativeElement.focus(options);\r\n }\r\n }\r\n\r\n /** Start monitoring focus and notify accordion when header gains focus. */\r\n ngAfterViewInit() {\r\n this._focusMonitor.monitor(this._element).subscribe(origin => {\r\n if (origin && this.panel.accordion) {\r\n this.panel.accordion._handleHeaderFocus(this);\r\n }\r\n });\r\n }\r\n\r\n /** Cleanup subscriptions and focus monitoring. */\r\n ngOnDestroy() {\r\n this._parentChangeSubscription.unsubscribe();\r\n this._focusMonitor.stopMonitoring(this._element);\r\n }\r\n}\r\n\r\n/** Projected description container inside the header (styling hook). */\r\n@Directive({\r\n selector: 'panel-description',\r\n host: {\r\n class: 'expansion-panel-header-description',\r\n },\r\n})\r\nexport class ExpansionPanelDescription {}\r\n\r\n/** Projected title container inside the header (styling hook). */\r\n@Directive({\r\n selector: 'panel-title',\r\n host: {\r\n class: 'expansion-panel-header-title',\r\n },\r\n})\r\nexport class ExpansionPanelTitle {}\r\n","<span class=\"content\" [class.content-hide-toggle]=\"!_showToggle()\">\r\n <ng-content select=\"md-panel-title\"></ng-content>\r\n <ng-content select=\"md-panel-description\"></ng-content>\r\n <ng-content></ng-content>\r\n</span>\r\n\r\n@if (_showToggle()) {\r\n <span class=\"expansion-indicator\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 -960 960 960\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\">\r\n <path d=\"M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z\"/>\r\n </svg>\r\n </span>\r\n}","import {\r\n Directive,\r\n Input,\r\n ContentChildren,\r\n QueryList,\r\n AfterContentInit,\r\n OnDestroy,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { CdkAccordion } from '@angular/cdk/accordion';\r\nimport { FocusKeyManager } from '@angular/cdk/a11y';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { ACCORDION, AccordionBase, AccordionDisplayMode, AccordionTogglePosition } from './accordion-base';\r\nimport { MDExpansionPanelHeader } from './expansion-panel-header';\r\n\r\n/**\r\n * Accordion container that coordinates multiple expansion panels.\r\n * - Provides the ACCORDION token for children to read common settings.\r\n * - Manages roving focus across panel headers with FocusKeyManager.\r\n * - Filters projected headers so only this accordion’s own headers are managed.\r\n */\r\n@Directive({\r\n selector: 'md-accordion',\r\n exportAs: 'mdAccordion',\r\n providers: [\r\n {\r\n provide: ACCORDION,\r\n useExisting: Accordion,\r\n },\r\n ],\r\n host: {\r\n class: 'accordion',\r\n // Visual hint when multi-selection is enabled (inherited from CdkAccordion).\r\n '[class.accordion-multi]': 'this.multi',\r\n },\r\n})\r\nexport class Accordion extends CdkAccordion implements AccordionBase, AfterContentInit, OnDestroy {\r\n /** Keyboard manager for roving focus (Home/End/Arrow navigation). */\r\n private _keyManager: FocusKeyManager<MDExpansionPanelHeader>;\r\n\r\n /**\r\n * Local QueryList containing only headers owned by this accordion.\r\n * We derive it from `_headers` because projected content could include\r\n * nested accordions or headers belonging to another parent.\r\n */\r\n private _ownHeaders = new QueryList<MDExpansionPanelHeader>();\r\n\r\n /** All descendant headers from projected content (may include foreign ones). */\r\n @ContentChildren(MDExpansionPanelHeader, { descendants: true })\r\n _headers: QueryList<MDExpansionPanelHeader>;\r\n\r\n /** Hides the toggle arrow/indicator on all child panels. */\r\n @Input({ transform: booleanAttribute })\r\n hideToggle: boolean = false;\r\n\r\n /** Display mode that affects spacing/styling of panels. */\r\n @Input() displayMode: AccordionDisplayMode = 'default';\r\n\r\n /** Placement of the toggle indicator relative to header content. */\r\n @Input() togglePosition: AccordionTogglePosition = 'after';\r\n\r\n /** After content init, filter and wire focus management. */\r\n ngAfterContentInit() {\r\n // Keep `_ownHeaders` in sync with only the headers whose `panel.accordion === this`.\r\n this._headers.changes\r\n .pipe(startWith(this._headers))\r\n .subscribe((headers: QueryList<MDExpansionPanelHeader>) => {\r\n this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\r\n this._ownHeaders.notifyOnChanges();\r\n });\r\n\r\n // Enable wrap-around and Home/End navigation across owned headers.\r\n this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\r\n }\r\n\r\n /** Delegate keydown from a header to the key manager (arrow/home/end handling). */\r\n _handleHeaderKeydown(event: KeyboardEvent) {\r\n this._keyManager.onKeydown(event);\r\n }\r\n\r\n /** Update the active item when a particular header gains focus. */\r\n _handleHeaderFocus(header: MDExpansionPanelHeader) {\r\n this._keyManager.updateActiveItem(header);\r\n }\r\n\r\n /** Tear down key manager and QueryList on destroy; call base cleanup too. */\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._keyManager?.destroy();\r\n this._ownHeaders.destroy();\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { Accordion } from './accordion';\r\nimport { MDExpansionPanel, ExpansionPanelActionRow } from './expansion-panel';\r\nimport { ExpansionPanelDescription, MDExpansionPanelHeader, ExpansionPanelTitle } from './expansion-panel-header';\r\nimport { MDExpansionPanelContent } from './expansion-panel-content';\r\n\r\nexport const components = [\r\n Accordion,\r\n MDExpansionPanel,\r\n ExpansionPanelActionRow,\r\n MDExpansionPanelHeader,\r\n ExpansionPanelTitle,\r\n ExpansionPanelDescription,\r\n MDExpansionPanelContent,\r\n];\r\n\r\n@NgModule({\r\n exports: [...components],\r\n imports: [CommonModule, ...components],\r\n})\r\nexport class MDCollapseModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n InjectionToken,\r\n Input,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Public API type that controls the overall visual style of the card.\r\n * - `'outlined'` — draws an outline around the card.\r\n * - `'raised'` — default look with elevation (shadow).\r\n * - `'filled'` — filled background emphasis.\r\n */\r\nexport type CardAppearance = 'outlined' | 'raised' | 'filled';\r\n\r\n/**\r\n * Optional DI-provided configuration for MDCard defaults.\r\n * Allows setting application-wide defaults without touching each instance.\r\n */\r\nexport interface CardConfig {\r\n /** Default appearance applied to all cards unless overridden per instance. */\r\n appearance?: CardAppearance;\r\n}\r\n\r\n/**\r\n * Injection token for providing a global {@link CardConfig}.\r\n *\r\n * @example App-wide default\r\n * ```ts\r\n * providers: [{ provide: CARD_CONFIG, useValue: { appearance: 'filled' } as CardConfig }]\r\n * ```\r\n */\r\nexport const CARD_CONFIG = new InjectionToken<CardConfig>('CARD_CONFIG');\r\n\r\n/**\r\n * Root Card component.\r\n *\r\n * @remarks\r\n * - Renders a Material Design–like card container.\r\n * - Applies host CSS classes based on the {@link appearance} input.\r\n * - Reads optional defaults from DI via {@link CARD_CONFIG}.\r\n *\r\n * Template & styles:\r\n * - `templateUrl: 'card.html'` — defines the card structure/slots.\r\n * - `styleUrl: 'card.scss'` — variants and section styling.\r\n *\r\n * Performance:\r\n * - `ChangeDetectionStrategy.OnPush` to minimize change detection work.\r\n *\r\n * Export:\r\n * - `exportAs: 'mdCard'` — allows `#card=\"mdCard\"` in templates.\r\n */\r\n@Component({\r\n selector: 'md-card',\r\n templateUrl: 'card.html',\r\n styleUrl: 'card.scss',\r\n host: {\r\n class: 'mdc-card mdc-card',\r\n '[class.mdc-card-outlined]': 'appearance === \"outlined\"',\r\n '[class.mdc-card--outlined]': 'appearance === \"outlined\"',\r\n '[class.mdc-card-filled]': 'appearance === \"filled\"',\r\n '[class.mdc-card--filled]': 'appearance === \"filled\"',\r\n },\r\n exportAs: 'mdCard',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MDCard {\r\n /**\r\n * Controls the visual style of the card.\r\n *\r\n * @default 'raised' (or {@link CARD_CONFIG}.appearance if provided)\r\n */\r\n @Input() appearance: CardAppearance;\r\n\r\n constructor() {\r\n const config = inject<CardConfig>(CARD_CONFIG, { optional: true });\r\n this.appearance = config?.appearance || 'raised';\r\n }\r\n}\r\n\r\n/**\r\n * Title directive.\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-title>Title</md-card-title>\r\n * <div md-card-title>Title</div>\r\n * <div [mdCardTitle]>Title</div>\r\n * ```\r\n *\r\n * Adds a semantic class for styling the title area.\r\n */\r\n@Directive({\r\n selector: `md-card-title, [md-card-title], [mdCardTitle]`,\r\n host: { class: 'mdc-card-title' },\r\n})\r\nexport class MDCardTitle {}\r\n\r\n/**\r\n * Title group component.\r\n * Encapsulates grouped title-related content (e.g., title + subtitle + avatar).\r\n * Template is defined in `card-title-group.html`.\r\n */\r\n@Component({\r\n selector: 'md-card-title-group',\r\n templateUrl: 'card-title-group.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'mdc-card-title-group' },\r\n})\r\nexport class MDCardTitleGroup {}\r\n\r\n/**\r\n * Content directive for the main textual/body area of the card.\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-content>...</md-card-content>\r\n * ```\r\n */\r\n@Directive({\r\n selector: 'md-card-content',\r\n host: { class: 'mdc-card-content' },\r\n})\r\nexport class MDCardContent {}\r\n\r\n/**\r\n * Subtitle directive.\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-subtitle>Subtitle</md-card-subtitle>\r\n * <div md-card-subtitle>Subtitle</div>\r\n * <div [mdCardSubtitle]>Subtitle</div>\r\n * ```\r\n *\r\n * Adds a semantic class for styling the subtitle text.\r\n */\r\n@Directive({\r\n selector: `md-card-subtitle, [md-card-subtitle], [mdCardSubtitle]`,\r\n host: { class: 'mdc-card-subtitle' },\r\n})\r\nexport class MDCardSubtitle {}\r\n\r\n/**\r\n * Actions directive.\r\n * Represents the action row (e.g., buttons) at the bottom or top of a card.\r\n *\r\n * Host classes:\r\n * - Base: `'mdc-card-actions mdc-card__actions'`\r\n * - If `align === 'end'`, also applies `'mdc-card-actions-align-end'`.\r\n */\r\n@Directive({\r\n selector: 'md-card-actions',\r\n exportAs: 'mdCardActions',\r\n host: {\r\n class: 'mdc-card-actions mdc-card__actions',\r\n '[class.mdc-card-actions-align-end]': 'align === \"end\"',\r\n },\r\n})\r\nexport class MDCardActions {\r\n /**\r\n * Controls horizontal alignment of actions.\r\n * - `'start'` — actions align to the start edge\r\n * - `'end'` — actions align to the end edge\r\n *\r\n * @default 'start'\r\n *\r\n * @example\r\n * ```html\r\n * <md-card-actions align=\"end\">\r\n * <button md-button>Save</button>\r\n * </md-card-actions>\r\n * ```\r\n */\r\n @Input() align: 'start' | 'end' = 'start';\r\n}\r\n\r\n/**\r\n * Header component.\r\n * A dedicated container for card header content (e.g., avatar, title/subtitle group).\r\n * Template is defined in `card-header.html`.\r\n */\r\n@Component({\r\n selector: 'md-card-header',\r\n templateUrl: 'card-header.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'mdc-card-header' },\r\n})\r\nexport class MDCardHeader {}\r\n\r\n/**\r\n * Footer directive.\r\n * A semantic area for card footers—secondary info, meta, or supplementary actions.\r\n */\r\n@Directive({\r\n selector: 'md-card-footer',\r\n host: { class: 'mdc-card-footer' },\r\n})\r\nexport class MDCardFooter {}\r\n\r\n/**\r\n * Image directive (default size).\r\n * Applies media-related classes to display a cover/media area inside the card.\r\n *\r\n * @example\r\n * ```html\r\n * <div md-card-image style=\"background-image:url(...)\"></div>\r\n * <div [mdCardImage]></div>\r\n * ```\r\n *\r\n * Note: Actual sizing (height/ratio) should be defined in `card.scss`.\r\n */\r\n@Directive({\r\n selector: '[md-card-image], [mdCardImage]',\r\n host: { class: 'mdc-card-image mdc-card__media' },\r\n})\r\nexport class MDCardImage {}\r\n\r\n/**\r\n * Small image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n selector: '[md-card-sm-image], [mdCardImageSmall]',\r\n host: { class: 'mdc-card-sm-image mdc-card__media' },\r\n})\r\nexport class MDCardSmImage {}\r\n\r\n/**\r\n * Medium image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n selector: '[md-card-md-image], [mdCardImageMedium]',\r\n host: { class: 'mdc-card-md-image mdc-card__media' },\r\n})\r\nexport class MDCardMdImage {}\r\n\r\n/**\r\n * Large image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n selector: '[md-card-lg-image], [mdCardImageLarge]',\r\n host: { class: 'mdc-card-lg-image mdc-card__media' },\r\n})\r\nexport class MDCardLgImage {}\r\n\r\n/**\r\n * Extra-large image directive.\r\n * Adds the same base media classes; size differences should be implemented in CSS.\r\n */\r\n@Directive({\r\n selector: '[md-card-xl-image], [mdCardImageXLarge]',\r\n host: { class: 'mdc-card-xl-image mdc-card__media' },\r\n})\r\nexport class MDCardXlImage {}\r\n\r\n/**\r\n * Avatar directive.\r\n * Intended for small, typically circular images near the title/header area.\r\n * The concrete size/shape should be controlled via CSS (e.g., width/height/border-radius).\r\n */\r\n@Directive({\r\n selector: '[md-card-avatar], [mdCardAvatar]',\r\n host: { class: 'mdc-card-avatar' },\r\n})\r\nexport class MDCardAvatar {}\r\n","<ng-content></ng-content>","<div>\r\n <ng-content\r\n select=\"card-title, card-subtitle,\r\n [card-title], [card-subtitle],\r\n [cardTitle], [cardSubtitle]\"\r\n ></ng-content>\r\n</div>\r\n<ng-content\r\n select=\"[card-image], [cardImage],\r\n [card-sm-image], [cardImageSmall],\r\n [card-md-image], [cardImageMedium],\r\n [card-lg-image], [cardImageLarge],\r\n [card-xl-image], [cardImageXLarge]\"\r\n></ng-content>\r\n<ng-content></ng-content>\r\n","<ng-content select=\"[card-avatar], [cardAvatar]\"></ng-content>\r\n<div class=\"mdc-card-header-text\">\r\n <ng-content\r\n select=\"card-title, card-subtitle,\r\n [card-title], [card-subtitle],\r\n [cardTitle], [cardSubtitle]\"\r\n ></ng-content>\r\n</div>\r\n<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport {\r\n MDCard,\r\n MDCardActions,\r\n MDCardAvatar,\r\n MDCardContent,\r\n MDCardFooter,\r\n MDCardHeader,\r\n MDCardImage,\r\n MDCardLgImage,\r\n MDCardMdImage,\r\n MDCardSmImage,\r\n MDCardSubtitle,\r\n MDCardTitle,\r\n MDCardTitleGroup,\r\n MDCardXlImage,\r\n} from './card';\r\n\r\nconst CARD_DIRECTIVES = [\r\n MDCard,\r\n MDCardActions,\r\n MDCardAvatar,\r\n MDCardContent,\r\n MDCardFooter,\r\n MDCardHeader,\r\n MDCardImage,\r\n MDCardLgImage,\r\n MDCardMdImage,\r\n MDCardSmImage,\r\n MDCardSubtitle,\r\n MDCardTitle,\r\n MDCardTitleGroup,\r\n MDCardXlImage,\r\n];\r\n\r\n@NgModule({\r\n imports: CARD_DIRECTIVES,\r\n exports: CARD_DIRECTIVES,\r\n})\r\nexport class MDCardModule {}\r\n","import {ViewContainerRef, Injector} from '@angular/core';\r\nimport {Direction} from '@angular/cdk/bidi';\r\nimport {ScrollStrategy} from '@angular/cdk/overlay';\r\nimport {DialogConfig} from '@angular/cdk/dialog';\r\n\r\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\r\n\r\nexport type DialogRole = 'dialog' | 'alertdialog';\r\n\r\nexport interface DialogPosition {\r\n top?: string;\r\n bottom?: string;\r\n left?: string;\r\n right?: string;\r\n}\r\n\r\nexport class MefDevDialogConfig<D = any> {\r\n viewContainerRef?: ViewContainerRef;\r\n injector?: Injector;\r\n id?: string;\r\n role?: DialogRole = 'dialog';\r\n panelClass?: string | string[] = '';\r\n hasBackdrop?: boolean = true;\r\n backdropClass?: string | string[] = '';\r\n disableClose?: boolean = false;\r\n closePredicate?: <\r\n Result = unknown,\r\n Component = unknown,\r\n Config extends DialogConfig = MefDevDialogConfig,\r\n >(\r\n result: Result | undefined,\r\n config: Config,\r\n componentInstance: Component | null,\r\n ) => boolean;\r\n width?: string = '';\r\n height?: string = '';\r\n minWidth?: number | string;\r\n minHeight?: number | string;\r\n maxWidth?: number | string;\r\n maxHeight?: number | string;\r\n position?: DialogPosition;\r\n data?: D | null = null;\r\n direction?: Direction;\r\n ariaDescribedBy?: string | null = null;\r\n ariaLabelledBy?: string | null = null;\r\n ariaLabel?: string | null = null;\r\n ariaModal?: boolean = false;\r\n autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\r\n restoreFocus?: boolean = true;\r\n delayFocusTrap?: boolean = true;\r\n scrollStrategy?: ScrollStrategy;\r\n closeOnNavigation?: boolean = true;\r\n enterAnimationDuration?: string | number;\r\n exitAnimationDuration?: string | number;\r\n animationPosition?: 'top' | 'right' | 'bottom' | 'left';\r\n}\r\n","import {FocusOrigin} from '@angular/cdk/a11y';\r\nimport {merge, Observable, Subject} from 'rxjs';\r\nimport {DialogRef} from '@angular/cdk/dialog';\r\nimport {DialogPosition, MefDevDialogConfig} from './dialog-config';\r\nimport {MDDialogContainer} from './dialog-container';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\r\nimport {GlobalPositionStrategy} from '@angular/cdk/overlay';\r\nimport {ComponentRef} from '@angular/core';\r\n\r\n/**\r\n * Internal finite state for a dialog's lifecycle.\r\n * - OPEN: visible and interactive\r\n * - CLOSING: exit animation playing or teardown in progress\r\n * - CLOSED: fully closed and resources released\r\n */\r\nexport enum DialogState {\r\n OPEN,\r\n CLOSING,\r\n CLOSED,\r\n}\r\n\r\n/**\r\n * Strongly-typed wrapper around CDK's DialogRef with MEF/MD container integration.\r\n *\r\n * Responsibilities:\r\n * - Expose open/close lifecycle streams (afterOpened, beforeClosed, afterClosed).\r\n * - Respect `disableClose`, ESC and backdrop click behavior.\r\n * - Start/await container animations and provide a fallback close timeout.\r\n * - Bridge size/position/panel class updates to the underlying CDK dialog.\r\n * - Track the interaction type (mouse/keyboard) that triggered close for focus restoration.\r\n */\r\nexport class MefDevDialogRef<T, R = any> {\r\n /** Instance of the component hosted inside the dialog (if opened via component). */\r\n componentInstance: T;\r\n\r\n /** Low-level componentRef for advanced users (null for TemplateRef opens). */\r\n readonly componentRef: ComponentRef<T> | null;\r\n\r\n /** When true, ESC and backdrop click won't close the dialog. */\r\n disableClose: boolean | undefined;\r\n\r\n /** Dialog id (auto-generated unless provided in config). */\r\n id: string;\r\n\r\n /** Emits once when the dialog has finished its enter animation. */\r\n private readonly _afterOpened = new Subject<void>();\r\n\r\n /** Emits right before the dialog starts closing (with the result). */\r\n private readonly _beforeClosed = new Subject<R | undefined>();\r\n\r\n /** Cached result passed to `close(result)`; emitted via afterClosed. */\r\n private _result: R | undefined;\r\n\r\n /** Fallback timer that triggers `_finishDialogClose` if animation events don't arrive. */\r\n private _closeFallbackTimeout: ReturnType<typeof setTimeout>;\r\n\r\n /** Current lifecycle state of the dialog. */\r\n private _state = DialogState.OPEN;\r\n\r\n /** Input modality that caused the close (used for focus origin on restore). */\r\n private _closeInteractionType: FocusOrigin | undefined;\r\n\r\n constructor(\r\n /** Underlying CDK dialog ref. */\r\n private _ref: DialogRef<R, T>,\r\n /** Immutable configuration used to open this dialog. */\r\n private _config: MefDevDialogConfig,\r\n /** Reference to the container component that hosts animations and structure. */\r\n public _containerInstance: MDDialogContainer,\r\n ) {\r\n this.disableClose = _config.disableClose;\r\n this.id = _ref.id;\r\n\r\n // Apply a base host class for theming/layout.\r\n _ref.addPanelClass('mdc-dialog-panel');\r\n\r\n // When container reports it's fully opened, emit and complete `afterOpened`.\r\n _containerInstance._animationStateChanged\r\n .pipe(filter(event => event.state === 'opened'), take(1))\r\n .subscribe(() => {\r\n this._afterOpened.next();\r\n this._afterOpened.complete();\r\n });\r\n\r\n // When container reports it's fully closed, cancel fallback and finalize close.\r\n _containerInstance._animationStateChanged\r\n .pipe(filter(event => event.state === 'closed'), take(1))\r\n .subscribe(() => {\r\n clearTimeout(this._closeFallbackTimeout);\r\n this._finishDialogClose();\r\n });\r\n\r\n // If the overlay detaches (e.g., parent destroyed), finalize close immediately.\r\n _ref.overlayRef.detachments().subscribe(() => {\r\n this._beforeClosed.next(this._result);\r\n this._beforeClosed.complete();\r\n this._finishDialogClose();\r\n });\r\n\r\n // Default close interactions: backdrop click and ESC (unless disabled).\r\n merge(\r\n this.backdropClick(),\r\n this.keydownEvents().pipe(\r\n filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)),\r\n ),\r\n ).subscribe(event => {\r\n if (!this.disableClose) {\r\n event.preventDefault();\r\n _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : 'mouse');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Programmatically close the dialog with an optional result.\r\n * Respects an optional `closePredicate` to veto the close.\r\n */\r\n close(dialogResult?: R): void {\r\n const closePredicate = this._config.closePredicate;\r\n\r\n // Allow the caller to veto closing based on the result, config, or component state.\r\n if (closePredicate && !closePredicate(dialogResult, this._config, this.componentInstance)) {\r\n return;\r\n }\r\n\r\n this._result = dialogResult;\r\n\r\n // When container transitions to \"closing\", emit beforeClosed and start fallback timer.\r\n this._containerInstance._animationStateChanged\r\n .pipe(filter(event => event.state === 'closing'), take(1))\r\n .subscribe(event => {\r\n this._beforeClosed.next(dialogResult);\r\n this._beforeClosed.complete();\r\n\r\n // Remove the backdrop immediately to hint that closing has started.\r\n this._ref.overlayRef.detachBackdrop();\r\n\r\n // Fallback to ensure `_finishDialogClose` runs even if `closed` event doesn't fire.\r\n this._closeFallbackTimeout = setTimeout(\r\n () => this._finishDialogClose(),\r\n event.totalTime + 100,\r\n );\r\n });\r\n\r\n // Move into the CLOSING state and kick off exit animation on the container.\r\n this._state = DialogState.CLOSING;\r\n this._containerInstance._startExitAnimation();\r\n }\r\n\r\n /** Stream that emits once the dialog is fully opened (after enter animation). */\r\n afterOpened(): Observable<void> {\r\n return this._afterOpened;\r\n }\r\n\r\n /** Stream that emits the result after the dialog is fully closed and disposed. */\r\n afterClosed(): Observable<R | undefined> {\r\n return this._ref.closed;\r\n }\r\n\r\n /** Stream that emits right before the dialog starts closing with the result (if any). */\r\n beforeClosed(): Observable<R | undefined> {\r\n return this._beforeClosed;\r\n }\r\n\r\n /** Backdrop click stream (useful for custom close logic / analytics). */\r\n backdropClick(): Observable<MouseEvent> {\r\n return this._ref.backdropClick;\r\n }\r\n\r\n /** Keydown stream scoped to the dialog overlay (e.g., listen for ESC). */\r\n keydownEvents(): Observable<KeyboardEvent> {\r\n return this._ref.keydownEvents;\r\n }\r\n\r\n /**\r\n * Updates the dialog position. If top/bottom or left/right are not provided,\r\n * the dialog will be centered on that axis.\r\n */\r\n updatePosition(position?: DialogPosition): this {\r\n let strategy = this._ref.config.positionStrategy as GlobalPositionStrategy;\r\n\r\n if (position && (position.left || position.right)) {\r\n position.left ? strategy.left(position.left) : strategy.right(position.right);\r\n } else {\r\n strategy.centerHorizontally();\r\n }\r\n\r\n if (position && (position.top || position.bottom)) {\r\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\r\n } else {\r\n strategy.centerVertically();\r\n }\r\n\r\n this._ref.updatePosition();\r\n return this;\r\n }\r\n\r\n /** Updates dialog width/height (CSS length values, e.g. '600px', '80vh'). */\r\n updateSize(width: string = '', height: string = ''): this {\r\n this._ref.updateSize(width, height);\r\n return this;\r\n }\r\n\r\n /** Adds one or more CSS classes to the overlay panel. */\r\n addPanelClass(classes: string | string[]): this {\r\n this._ref.addPanelClass(classes);\r\n return this;\r\n }\r\n\r\n /** Removes one or more CSS classes from the overlay panel. */\r\n removePanelClass(classes: string | string[]): this {\r\n this._ref.removePanelClass(classes);\r\n return this;\r\n }\r\n\r\n /** Returns the current lifecycle state of the dialog. */\r\n getState(): DialogState {\r\n return this._state;\r\n }\r\n\r\n /**\r\n * Finalizes the closing sequence:\r\n * - Sets state to CLOSED\r\n * - Closes underlying CDK ref (emits afterClosed with the result)\r\n * - Clears strong reference to the component instance\r\n */\r\n private _finishDialogClose() {\r\n this._state = DialogState.CLOSED;\r\n this._ref.close(this._result, {focusOrigin: this._closeInteractionType});\r\n this.componentInstance = null!;\r\n }\r\n}\r\n\r\n/**\r\n * Helper to close a dialog and tag the close with the interaction origin.\r\n * Used by default ESC/backdrop handlers to restore focus appropriately.\r\n */\r\nexport function _closeDialogVia<R>(ref: MefDevDialogRef<R>, interactionType: FocusOrigin, result?: R) {\r\n (ref as unknown as {_closeInteractionType: FocusOrigin})._closeInteractionType = interactionType;\r\n return ref.close(result);\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MefDevDialogConfig } from './dialog-config';\r\nimport { CdkDialogContainer } from '@angular/cdk/dialog';\r\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\r\n\r\n/** Legacy-style animation event payload used by the dialog service/ref. */\r\ninterface LegacyDialogAnimationEvent {\r\n state: 'opened' | 'opening' | 'closing' | 'closed';\r\n totalTime: number;\r\n}\r\n\r\n/** BEM-style classes toggled during open/close sequences. */\r\nconst OPEN_CLASS = 'mdc-dialog--open';\r\nconst OPENING_CLASS = 'mdc-dialog--opening';\r\nconst CLOSING_CLASS = 'mdc-dialog--closing';\r\n\r\n/** Default animation durations (ms) if not overridden by config. */\r\nexport const OPEN_ANIMATION_DURATION = 150;\r\nexport const CLOSE_ANIMATION_DURATION = 75;\r\n\r\n@Component({\r\n selector: 'md-dialog-container',\r\n templateUrl: 'dialog-container.html',\r\n styleUrl: 'dialog.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n imports: [CdkPortalOutlet],\r\n host: {\r\n class: 'mdc-dialog-container mdc-dialog',\r\n tabindex: '-1',\r\n '[attr.aria-modal]': '_config.ariaModal',\r\n '[id]': '_config.id',\r\n '[attr.role]': '_config.role',\r\n // If an explicit ariaLabel is provided, don't set aria-labelledby.\r\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledByQueue[0]',\r\n '[attr.aria-label]': '_config.ariaLabel',\r\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\r\n '[class.animation-noopable]': '!_animationsEnabled',\r\n '[class.mdc-dialog-container-with-actions]': '_actionSectionCount > 0',\r\n },\r\n})\r\nexport class MDDialogContainer extends CdkDialogContainer<MefDevDialogConfig> implements OnDestroy {\r\n /** Emits animation lifecycle states understood by the dialog ref. */\r\n _animationStateChanged = new EventEmitter<LegacyDialogAnimationEvent>();\r\n\r\n /** Master flag to enable/disable animations for this container instance. */\r\n _animationsEnabled = true;\r\n\r\n /** Count of projected action sections (affects layout class). */\r\n protected _actionSectionCount = 0;\r\n\r\n /** Cached host element for class and style mutations. */\r\n private _hostElement: HTMLElement = this._elementRef.nativeElement;\r\n\r\n /** Effective enter animation duration derived from config (or defaults). */\r\n private _enterAnimationDuration = this._animationsEnabled\r\n ? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION\r\n : 0;\r\n\r\n /** Effective exit animation duration derived from config (or defaults). */\r\n private _exitAnimationDuration = this._animationsEnabled\r\n ? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION\r\n : 0;\r\n\r\n /** Timer id for open/close fallback completion. */\r\n private _animationTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n /** After content is attached, kick off the open animation. */\r\n protected override _contentAttached(): void {\r\n super._contentAttached();\r\n this._startOpenAnimation();\r\n }\r\n\r\n /** Optional position modifier class for origin-based animations. */\r\n private ANIMATION_POSITION_CLASS = this._config.animationPosition\r\n ? `mdc-animation-position-${this._config.animationPosition}`\r\n : null;\r\n\r\n /** Starts the open animation sequence and emits \"opening\". */\r\n private _startOpenAnimation() {\r\n this._animationStateChanged.emit({ state: 'opening', totalTime: this._enterAnimationDuration });\r\n\r\n if (this._animationsEnabled) {\r\n // Expose duration to CSS via a custom property if styles rely on it.\r\n this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._enterAnimationDuration}ms`);\r\n\r\n // Defer class application to the next frame to ensure transitions kick in.\r\n this._requestAnimationFrame(() => {\r\n this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS);\r\n if (this.ANIMATION_POSITION_CLASS) {\r\n this._hostElement.classList.add(this.ANIMATION_POSITION_CLASS);\r\n }\r\n });\r\n\r\n // Provide a JS fallback in case transition events aren't delivered.\r\n this._waitForAnimationToComplete(this._enterAnimationDuration, this._finishDialogOpen);\r\n } else {\r\n // No animations: immediately mark as open and finish sequence in a microtask.\r\n this._hostElement.classList.add(OPEN_CLASS);\r\n Promise.resolve().then(() => this._finishDialogOpen());\r\n }\r\n }\r\n\r\n /** Public entrypoint called by the ref to start the close sequence. */\r\n _startExitAnimation(): void {\r\n this._animationStateChanged.emit({ state: 'closing', totalTime: this._exitAnimationDuration });\r\n this._hostElement.classList.remove(OPEN_CLASS);\r\n\r\n if (this._animationsEnabled) {\r\n this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._exitAnimationDuration}ms`);\r\n\r\n this._requestAnimationFrame(() => {\r\n this._hostElement.classList.add(CLOSING_CLASS);\r\n if (this.ANIMATION_POSITION_CLASS) {\r\n this._hostElement.classList.add(this.ANIMATION_POSITION_CLASS);\r\n }\r\n });\r\n\r\n // JS fallback for the exit sequence as well.\r\n this._waitForAnimationToComplete(this._exitAnimationDuration, this._finishDialogClose);\r\n } else {\r\n Promise.resolve().then(() => this._finishDialogClose());\r\n }\r\n }\r\n\r\n /** Tracks action sections; used to toggle a host layout class. */\r\n _updateActionSectionCount(delta: number) {\r\n this._actionSectionCount += delta;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Finishes open sequence: clear classes and emit \"opened\". */\r\n private _finishDialogOpen = () => {\r\n this._clearAnimationClasses();\r\n this._openAnimationDone(this._enterAnimationDuration);\r\n };\r\n\r\n /** Finishes close sequence: clear classes and emit \"closed\". */\r\n private _finishDialogClose = () => {\r\n this._clearAnimationClasses();\r\n this._animationStateChanged.emit({ state: 'closed', totalTime: this._exitAnimationDuration });\r\n };\r\n\r\n /** Removes transient animation classes (and optional position class). */\r\n private _clearAnimationClasses() {\r\n this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);\r\n if (this.ANIMATION_POSITION_CLASS) {\r\n this._hostElement.classList.remove(this.ANIMATION_POSITION_CLASS);\r\n }\r\n }\r\n\r\n /**\r\n * Sets/refreshes a timeout to complete the animation sequence. This acts as a\r\n * fallback when relying on CSS transitions without guaranteed end events.\r\n */\r\n private _waitForAnimationToComplete(duration: number, callback: () => void) {\r\n if (this._animationTimer !== null) {\r\n clearTimeout(this._animationTimer);\r\n }\r\n this._animationTimer = setTimeout(callback, duration);\r\n }\r\n\r\n /**\r\n * Schedules a callback on the next animation frame, outside Angular,\r\n * to ensure CSS transitions are applied predictably.\r\n */\r\n private _requestAnimationFrame(callback: () => void) {\r\n this._ngZone.runOutsideAngular(() => {\r\n if (typeof requestAnimationFrame === 'function') {\r\n requestAnimationFrame(callback);\r\n } else {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n /** Focus handling after content attachment depending on `delayFocusTrap` config. */\r\n protected override _captureInitialFocus(): void {\r\n if (!this._config.delayFocusTrap) {\r\n this._trapFocus();\r\n }\r\n }\r\n\r\n /** Called when open animation completes to emit \"opened\" and (optionally) trap focus. */\r\n protected _openAnimationDone(totalTime: number) {\r\n if (this._config.delayFocusTrap) {\r\n this._trapFocus();\r\n }\r\n this._animationStateChanged.next({ state: 'opened', totalTime });\r\n }\r\n\r\n /** Cleanup any pending timers on destroy. */\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n if (this._animationTimer !== null) {\r\n clearTimeout(this._animationTimer);\r\n }\r\n }\r\n\r\n /**\r\n * Decorates the root component host element with a class so that card/panel\r\n * styles can target it specifically when used inside a dialog.\r\n */\r\n override attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\r\n const ref = super.attachComponentPortal(portal);\r\n ref.location.nativeElement.classList.add('mdc-dialog-component-host');\r\n return ref;\r\n }\r\n}\r\n\r\n/** CSS custom property used by styles to read the transition duration. */\r\nconst TRANSITION_DURATION_PROPERTY = '--dialog-transition-duration';\r\n\r\n/**\r\n * Parses a CSS time value (e.g., '150ms', '0.15s', '0') into milliseconds.\r\n * Returns null when the input is undefined or cannot be parsed.\r\n */\r\nfunction parseCssTime(time: string | number | undefined): number | null {\r\n if (time == null) {\r\n return null;\r\n }\r\n if (typeof time === 'number') {\r\n return time;\r\n }\r\n if (time.endsWith('ms')) {\r\n return coerceNumberProperty(time.substring(0, time.length - 2));\r\n }\r\n if (time.endsWith('s')) {\r\n return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;\r\n }\r\n if (time === '0') {\r\n return 0;\r\n }\r\n return null;\r\n}\r\n","<div class=\"mdc-dialog-inner-container mdc-dialog__container\">\r\n <div class=\"mdc-dialog-surface mdc-dialog__surface\">\r\n <ng-template cdkPortalOutlet />\r\n </div>\r\n</div>","import {\r\n ComponentType,\r\n createBlockScrollStrategy,\r\n createGlobalPositionStrategy,\r\n ScrollStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentRef,\r\n Injectable,\r\n InjectionToken,\r\n Injector,\r\n OnDestroy,\r\n TemplateRef,\r\n Type,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport {defer, Observable, Subject} from 'rxjs';\r\nimport {Dialog, DialogConfig} from '@angular/cdk/dialog';\r\nimport {startWith} from 'rxjs/operators';\r\nimport {_IdGenerator} from '@angular/cdk/a11y';\r\nimport { MefDevDialogConfig } from './dialog-config';\r\nimport { MefDevDialogRef } from './dialog-ref';\r\nimport { MDDialogContainer } from './dialog-container';\r\n\r\n/** Injection token used to pass arbitrary data into a dialog instance. */\r\nexport const DIALOG_DATA = new InjectionToken<any>('MdcDialogData');\r\n\r\n/** Token for providing global/default dialog configuration. */\r\nexport const DIALOG_DEFAULT_OPTIONS = new InjectionToken<MefDevDialogConfig>(\r\n 'mdc-dialog-default-options',\r\n);\r\n\r\n/**\r\n * Token that provides a factory for the scroll strategy used by dialogs.\r\n * Defaults to `createBlockScrollStrategy` which prevents body scrolling while a dialog is open.\r\n */\r\nexport const DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\r\n 'mdc-dialog-scroll-strategy',\r\n {\r\n providedIn: 'root',\r\n factory: () => {\r\n const injector = inject(Injector);\r\n return () => createBlockScrollStrategy(injector);\r\n },\r\n },\r\n);\r\n\r\n/**\r\n * High-level dialog service wrapping CDK Dialog with MDC/MEF-specific defaults.\r\n *\r\n * Features:\r\n * - Merges provided config with app-level defaults.\r\n * - Creates a global centered position strategy by default.\r\n * - Emits streams for \"after opened\" and \"after all closed\".\r\n * - Keeps a stack of open dialogs and coordinates teardown.\r\n * - Bridges to a custom `MDDialogContainer` and `MefDevDialogRef`.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class MDDialog implements OnDestroy {\r\n /** Optional application-wide defaults injected via `DIALOG_DEFAULT_OPTIONS`. */\r\n private _defaultOptions = inject<MefDevDialogConfig>(DIALOG_DEFAULT_OPTIONS, {optional: true});\r\n /** Factory for the body scroll strategy while a dialog is open. */\r\n private _scrollStrategy = inject(DIALOG_SCROLL_STRATEGY);\r\n /** Optional parent dialog service (supports hierarchical injectors / lazy modules). */\r\n private _parentDialog = inject(MDDialog, {optional: true, skipSelf: true});\r\n /** Id generator for dialog instances. */\r\n private _idGenerator = inject(_IdGenerator);\r\n /** Root injector needed for CDK helpers (position strategy, etc.). */\r\n private _injector = inject(Injector);\r\n /** Underlying CDK Dialog service. */\r\n protected _dialog = inject(Dialog);\r\n /** Global flag to disable dialog enter/exit animations. */\r\n private _animationsDisabled = false;\r\n\r\n /** Stack of open dialogs at the current injector level. */\r\n private readonly _openDialogsAtThisLevel: MefDevDialogRef<any>[] = [];\r\n /** Completes after the last dialog at this level has been closed. */\r\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\r\n /** Emits each time a dialog is opened at this level. */\r\n private readonly _afterOpenedAtThisLevel = new Subject<MefDevDialogRef<any>>();\r\n /** Class reference used for providing config to the container. */\r\n protected dialogConfigClass = MefDevDialogConfig;\r\n\r\n /** Concrete types used to construct dialog refs/containers and provide DIALOG_DATA. */\r\n private readonly _dialogRefConstructor: Type<MefDevDialogRef<any>>;\r\n private readonly _dialogContainerType: Type<MDDialogContainer>;\r\n private readonly _dialogDataToken: InjectionToken<any>;\r\n\r\n /** Public list of open dialogs (delegates to parent if present). */\r\n get openDialogs(): MefDevDialogRef<any>[] {\r\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\r\n }\r\n\r\n /** Stream that emits after each dialog is opened (delegates to parent if present). */\r\n get afterOpened(): Subject<MefDevDialogRef<any>> {\r\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\r\n }\r\n\r\n /** Internal accessor for the \"after all closed\" subject (handles parent delegation). */\r\n private _getAfterAllClosed(): Subject<void> {\r\n const parent = this._parentDialog;\r\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\r\n }\r\n\r\n /**\r\n * Emits when all dialogs (in this hierarchy) are closed.\r\n * If there are no open dialogs at subscription time, it emits once immediately.\r\n */\r\n readonly afterAllClosed: Observable<void> = defer(() =>\r\n this.openDialogs.length\r\n ? this._getAfterAllClosed()\r\n : this._getAfterAllClosed().pipe(startWith(undefined)),\r\n ) as Observable<any>;\r\n\r\n constructor() {\r\n // Bind concrete implementations used when opening dialogs.\r\n this._dialogRefConstructor = MefDevDialogRef;\r\n this._dialogContainerType = MDDialogContainer;\r\n this._dialogDataToken = DIALOG_DATA;\r\n }\r\n\r\n /** Overload signatures for component vs template dialogs. */\r\n open<T, D = any, R = any>(\r\n component: ComponentType<T>,\r\n config?: MefDevDialogConfig<D>,\r\n ): MefDevDialogRef<T, R>;\r\n open<T, D = any, R = any>(\r\n template: TemplateRef<T>,\r\n config?: MefDevDialogConfig<D>,\r\n ): MefDevDialogRef<T, R>;\r\n open<T, D = any, R = any>(\r\n template: ComponentType<T> | TemplateRef<T>,\r\n config?: MefDevDialogConfig<D>,\r\n ): MefDevDialogRef<T, R>;\r\n\r\n /**\r\n * Opens a new dialog for either a Component or a TemplateRef.\r\n * - Merges provided config with defaults.\r\n * - Creates and returns a `MefDevDialogRef` for control and observability.\r\n */\r\n open<T, D = any, R = any>(\r\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\r\n config: MefDevDialogConfig<D> = {},\r\n ): MefDevDialogRef<T, R> {\r\n let dialogRef: MefDevDialogRef<T, R>;\r\n\r\n // Merge caller config with global defaults; ensure id/scrollStrategy are set.\r\n config = {...(this._defaultOptions || new MefDevDialogConfig()), ...config};\r\n config.id = config.id || this._idGenerator.getId('mdc-dialog-');\r\n config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();\r\n\r\n // Delegate creation to CDK Dialog with our container/ref wiring and MDC-ish defaults.\r\n const cdkRef = this._dialog.open<R, D, T>(componentOrTemplateRef, {\r\n ...config,\r\n // Center the dialog horizontally and vertically by default.\r\n positionStrategy: createGlobalPositionStrategy(this._injector)\r\n .centerHorizontally()\r\n .centerVertically(),\r\n // The service manages close conditions; turning off CDK's default \"click outside to close\".\r\n disableClose: true,\r\n closePredicate: undefined,\r\n closeOnDestroy: false,\r\n closeOnOverlayDetachments: false,\r\n // Compute whether animations should be disabled (global flag or 0 duration).\r\n disableAnimations:\r\n this._animationsDisabled ||\r\n config.enterAnimationDuration?.toLocaleString() === '0' ||\r\n config.exitAnimationDuration?.toString() === '0',\r\n // Use a custom container component and provide both our and CDK config into it.\r\n container: {\r\n type: this._dialogContainerType,\r\n providers: () => [\r\n {provide: this.dialogConfigClass, useValue: config},\r\n {provide: DialogConfig, useValue: config},\r\n ],\r\n },\r\n // Expose the dialogRef as template context when opening from a TemplateRef.\r\n templateContext: () => ({dialogRef}),\r\n // Provide dialogRef, container and data to the component instance.\r\n providers: (ref, cdkConfig, dialogContainer) => {\r\n dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);\r\n dialogRef.updatePosition(config?.position);\r\n\r\n return [\r\n {provide: this._dialogContainerType, useValue: dialogContainer},\r\n {provide: this._dialogDataToken, useValue: cdkConfig.data},\r\n {provide: this._dialogRefConstructor, useValue: dialogRef},\r\n ];\r\n },\r\n });\r\n\r\n // Bridge CDK ref to our custom ref for convenience.\r\n (dialogRef! as {componentRef: ComponentRef<T>}).componentRef = cdkRef.componentRef!;\r\n dialogRef!.componentInstance = cdkRef.componentInstance!;\r\n\r\n // Track in the open stack and emit \"after opened\".\r\n this.openDialogs.push(dialogRef!);\r\n this.afterOpened.next(dialogRef!);\r\n\r\n // When closed, remove from stack and emit \"after all closed\" if it was the last one.\r\n dialogRef!.afterClosed().subscribe(() => {\r\n const index = this.openDialogs.indexOf(dialogRef);\r\n if (index > -1) {\r\n this.openDialogs.splice(index, 1);\r\n if (!this.openDialogs.length) {\r\n this._getAfterAllClosed().next();\r\n }\r\n }\r\n });\r\n\r\n return dialogRef!;\r\n }\r\n\r\n /** Closes all currently open dialogs (in stack order). */\r\n closeAll(): void {\r\n this._closeDialogs(this.openDialogs);\r\n }\r\n\r\n /** Finds an open dialog by id (if any). */\r\n getDialogById(id: string): MefDevDialogRef<any> | undefined {\r\n return this.openDialogs.find(dialog => dialog.id === id);\r\n }\r\n\r\n /** On service destroy, close dialogs owned at this injector level and complete streams. */\r\n ngOnDestroy() {\r\n this._closeDialogs(this._openDialogsAtThisLevel);\r\n this._afterAllClosedAtThisLevel.complete();\r\n this._afterOpenedAtThisLevel.complete();\r\n }\r\n\r\n /** Helper that iterates and closes dialogs without changing array identity. */\r\n private _closeDialogs(dialogs: MefDevDialogRef<any>[]) {\r\n let i = dialogs.length;\r\n while (i--) {\r\n dialogs[i].close();\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges,\r\n inject,\r\n} from '@angular/core';\r\nimport {_IdGenerator} from '@angular/cdk/a11y';\r\nimport {CdkScrollable} from '@angular/cdk/scrolling';\r\n\r\nimport {MDDialog} from './dialog';\r\nimport {_closeDialogVia, MefDevDialogRef} from './dialog-ref';\r\n\r\n/**\r\n * Button-like directive that closes the nearest dialog when clicked.\r\n *\r\n * Usage:\r\n * <button md-dialog-close>Close</button>\r\n * <button mdDialogClose=\"resultValue\">Save</button>\r\n *\r\n * - It tries to inject the current MefDevDialogRef; if not available,\r\n * it finds the nearest dialog container in the DOM and resolves the ref from MDDialog.openDialogs.\r\n * - On click, it calls `_closeDialogVia` with an interaction origin ('mouse' or 'keyboard')\r\n * so the focus can be restored appropriately.\r\n */\r\n@Directive({\r\n selector: '[md-dialog-close], [mdDialogClose]',\r\n exportAs: 'mdDialogClose',\r\n host: {\r\n '(click)': '_onButtonClick($event)',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.type]': 'type',\r\n },\r\n})\r\nexport class MDDialogClose implements OnInit, OnChanges {\r\n /** Injected dialog ref when available (undefined if used outside projected dialog content). */\r\n dialogRef = inject<MefDevDialogRef<any>>(MefDevDialogRef, {optional: true})!;\r\n /** Host element reference (used for DOM traversal when ref is not injected). */\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n /** Dialog service used to access `openDialogs` for fallback lookup. */\r\n private _dialog = inject(MDDialog);\r\n\r\n /** Optional aria-label for the closing button. */\r\n @Input('aria-label') ariaLabel: string;\r\n /** Native button type; defaults to \"button\" to avoid accidental form submit. */\r\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\r\n /** Preferred input for a close result (dash-cased attribute). */\r\n @Input('dialog-close') dialogResult: any;\r\n /** CamelCased alias of the same input (kept for API parity & template style). */\r\n @Input('dialogClose') dialogClose: any;\r\n\r\n constructor() {}\r\n\r\n /** Resolve dialogRef if it wasn't injected (e.g., directive used in a nested view). */\r\n ngOnInit() {\r\n if (!this.dialogRef) {\r\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\r\n }\r\n }\r\n\r\n /** Mirror `dialogClose` into `dialogResult` when either input changes. */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const proxiedChange = changes['dialogClose'] || changes['dialogCloseResult'];\r\n if (proxiedChange) {\r\n this.dialogResult = proxiedChange.currentValue;\r\n }\r\n }\r\n\r\n /** Click handler: close the dialog and tag the interaction origin for focus restoration. */\r\n _onButtonClick(event: MouseEvent) {\r\n _closeDialogVia(\r\n this.dialogRef,\r\n // Heuristic: 0/0 screen coords generally indicate keyboard activation (e.g., Space/Enter).\r\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse',\r\n this.dialogResult,\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Base class for directives that represent structural sections within a dialog\r\n * (e.g., title area, actions area). It:\r\n * - Resolves the dialog ref by injection or DOM traversal.\r\n * - Calls `_onAdd()` when attached to the DOM (after microtask) so the container\r\n * can update ARIA attributes or layout counts.\r\n * - Calls `_onRemove()` when destroyed so the container can revert those changes.\r\n */\r\n@Directive()\r\nexport abstract class DialogLayoutSection implements OnInit, OnDestroy {\r\n /** Reference to the owning dialog (if any). */\r\n protected _dialogRef = inject<MefDevDialogRef<any>>(MefDevDialogRef, {optional: true})!;\r\n /** Host element reference for DOM traversal fallback. */\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n /** Dialog service used for fallback dialog lookup. */\r\n private _dialog = inject(MDDialog);\r\n\r\n // Overload kept for symmetry with other directives.\r\n constructor(...args: unknown[]);\r\n constructor() {}\r\n\r\n /** Hook for subclasses to add themselves to the container (e.g., ARIA wiring, layout counters). */\r\n protected abstract _onAdd(): void;\r\n /** Hook for subclasses to remove themselves from the container. */\r\n protected abstract _onRemove(): void;\r\n\r\n ngOnInit() {\r\n if (!this._dialogRef) {\r\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\r\n }\r\n if (this._dialogRef) {\r\n // Defer to next microtask so container/DOM are fully ready.\r\n Promise.resolve().then(() => {\r\n this._onAdd();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n const instance = this._dialogRef?._containerInstance;\r\n if (instance) {\r\n // Defer to keep symmetry with _onAdd timing and avoid mid-change CD issues.\r\n Promise.resolve().then(() => {\r\n this._onRemove();\r\n });\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Dialog title directive.\r\n *\r\n * - Adds semantic/title classes to the host.\r\n * - Generates a unique id that is used to label the dialog via `aria-labelledby`.\r\n * - Notifies the container to add/remove this id from its aria-labelledby list.\r\n */\r\n@Directive({\r\n selector: '[md-dialog-title], [mdDialogTitle]',\r\n exportAs: 'mdDialogTitle',\r\n host: {\r\n 'class': 'mdc-dialog-title mdc-dialog__title',\r\n '[id]': 'id',\r\n },\r\n})\r\nexport class MDDialogTitle extends DialogLayoutSection {\r\n /** Unique id used by the container for aria-labelledby. */\r\n @Input() id: string = inject(_IdGenerator).getId('mdc-dialog-title-');\r\n\r\n /** Register this title id with the container for a11y. */\r\n protected _onAdd() {\r\n this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id);\r\n }\r\n\r\n /** Unregister this title id on destroy. */\r\n protected override _onRemove(): void {\r\n this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id);\r\n }\r\n}\r\n\r\n/**\r\n * Scrollable content section of the dialog.\r\n * - Applies MDC content classes.\r\n * - Attaches `CdkScrollable` so consumers/tools can query/observe scroll.\r\n */\r\n@Directive({\r\n selector: `[md-dialog-content], md-dialog-content, [mdDialogContent]`,\r\n host: {'class': 'mdc-dialog-content mdc-dialog__content'},\r\n hostDirectives: [CdkScrollable],\r\n})\r\nexport class MDDialogContent {}\r\n\r\n/**\r\n * Action row of the dialog (typically hosts buttons).\r\n * - Applies alignment classes based on `align` input.\r\n * - Notifies the container about the presence of an actions section so it can\r\n * adjust layout (e.g., paddings, separators).\r\n */\r\n@Directive({\r\n selector: `[md-dialog-actions], md-dialog-actions, [mdDialogActions]`,\r\n host: {\r\n 'class': 'mdc-dialog-actions mdc-dialog__actions',\r\n '[class.mdc-dialog-actions-align-start]': 'align === \"start\"',\r\n '[class.mdc-dialog-actions-align-center]': 'align === \"center\"',\r\n '[class.mdc-dialog-actions-align-end]': 'align === \"end\"',\r\n },\r\n})\r\nexport class MDDialogActions extends DialogLayoutSection {\r\n /** Horizontal alignment for the action buttons. */\r\n @Input() align?: 'start' | 'center' | 'end';\r\n\r\n /** Tell the container an actions section was added. */\r\n protected _onAdd() {\r\n this._dialogRef._containerInstance?._updateActionSectionCount?.(1);\r\n }\r\n\r\n /** Tell the container an actions section was removed. */\r\n protected override _onRemove(): void {\r\n this._dialogRef._containerInstance?._updateActionSectionCount?.(-1);\r\n }\r\n}\r\n\r\n/**\r\n * Finds the closest MD dialog container element in the ancestors of `element`\r\n * and returns its corresponding MefDevDialogRef from the `openDialogs` stack.\r\n *\r\n * This is a fallback for cases where directives are used outside of the primary\r\n * injection context but still live inside the dialog DOM subtree.\r\n */\r\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MefDevDialogRef<any>[]) {\r\n let parent: HTMLElement | null = element.nativeElement.parentElement;\r\n while (parent && !parent.classList.contains('mdc-dialog-container')) {\r\n parent = parent.parentElement;\r\n }\r\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MDDialogContainer } from './dialog-container';\r\nimport { MDDialogActions, MDDialogClose, MDDialogContent, MDDialogTitle } from './dialog-content-directives';\r\nimport { DialogModule } from '@angular/cdk/dialog';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { MDDialog } from './dialog';\r\n\r\n\r\nconst DIRECTIVES = [\r\n MDDialogContainer,\r\n MDDialogClose,\r\n MDDialogTitle,\r\n MDDialogActions,\r\n MDDialogContent,\r\n];\r\n\r\n@NgModule({\r\n imports: [DialogModule, OverlayModule, PortalModule, ...DIRECTIVES],\r\n exports: [...DIRECTIVES],\r\n providers: [MDDialog],\r\n})\r\nexport class MDModalModule {}\r\n","import { Directive } from '@angular/core';\r\nimport { CdkStepLabel } from '@angular/cdk/stepper';\r\n\r\n/**\r\n * Marks an embedded template as the label for a step.\r\n *\r\n * Usage:\r\n * <ng-template mdStepLabel>Custom label</ng-template>\r\n *\r\n * Extends Angular CDK's CdkStepLabel so the stepper can project\r\n * and render this template in the step header area.\r\n */\r\n@Directive({\r\n selector: '[mdStepLabel]',\r\n})\r\nexport class MDStepLabel extends CdkStepLabel {}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Intl/i18n service for the stepper.\r\n * Holds user-facing strings and exposes a `changes` stream so components\r\n * can re-render when labels are updated at runtime.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class StepperIntl {\r\n /** Emits whenever any of the labels change. Consumers should mark for check on emission. */\r\n readonly changes: Subject<void> = new Subject<void>();\r\n\r\n /** Label shown next to steps that are marked as optional. */\r\n optionalLabel: string = 'Optional';\r\n\r\n /** Label used to announce or describe completed steps. */\r\n completedLabel: string = 'Completed';\r\n\r\n /** Label indicating that a step is editable. */\r\n editableLabel: string = 'Editable';\r\n}\r\n\r\n/**\r\n * Factory that returns the closest parent StepperIntl if available,\r\n * otherwise creates a new instance.\r\n *\r\n * This allows apps/libraries to provide a single shared StepperIntl\r\n * higher in the injector tree and have all steppers reuse it.\r\n */\r\nexport function STEPPER_INTL_PROVIDER_FACTORY(parentIntl: StepperIntl) {\r\n return parentIntl || new StepperIntl();\r\n}\r\n\r\n/**\r\n * Provider that prefers an ancestor StepperIntl, falling back to a fresh one\r\n * created via the factory above when none is found.\r\n *\r\n * Usage in a module or component:\r\n * providers: [STEPPER_INTL_PROVIDER]\r\n */\r\nexport const STEPPER_INTL_PROVIDER = {\r\n provide: StepperIntl,\r\n deps: [[new Optional(), new SkipSelf(), StepperIntl]],\r\n useFactory: STEPPER_INTL_PROVIDER_FACTORY,\r\n};\r\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n TemplateRef,\r\n AfterViewInit,\r\n inject,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MDStepLabel } from './step-label';\r\nimport { StepperIntl } from './stepper-intl';\r\nimport { StepperIconContext } from './stepper-icon';\r\nimport { CdkStepHeader, StepState } from '@angular/cdk/stepper';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { _VisuallyHiddenLoader } from '@angular/cdk/private';\r\n\r\n/**\r\n * Header (tab) for a step in the stepper.\r\n * Responsibilities:\r\n * - Renders label, state icon/text, and optional/error hints.\r\n * - Manages focus (including origin-aware focus for a11y styling).\r\n * - Reacts to i18n changes from StepperIntl and marks for check.\r\n */\r\n@Component({\r\n selector: 'md-step-header',\r\n templateUrl: 'step-header.html',\r\n styleUrl: 'step-header.scss',\r\n host: {\r\n class: 'step-header',\r\n '[class.mat-step-header-empty-label]': '_hasEmptyLabel()',\r\n // Apply color host class or fallback to \"primary\"\r\n '[class]': '(color || \"primary\")',\r\n role: 'tab',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class MDStepHeader extends CdkStepHeader implements AfterViewInit, OnDestroy {\r\n /** Stepper i18n service (emits when labels change). */\r\n _intl = inject(StepperIntl);\r\n /** Focus monitor to track focus origin on the host element. */\r\n private _focusMonitor = inject(FocusMonitor);\r\n\r\n /** Subscription to StepperIntl changes for OnPush CD. */\r\n private _intlSubscription: Subscription;\r\n\r\n /** Visual/logical state of this step (e.g., 'number' | 'done' | 'error' | 'edit'). */\r\n @Input() state: StepState;\r\n /** Label can be a template (MDStepLabel) or plain string. */\r\n @Input() label: MDStepLabel | string;\r\n /** Error message displayed when state === 'error'. */\r\n @Input() errorMessage: string;\r\n /** Optional templates to override the default icons by state. */\r\n @Input() iconOverrides: { [key: string]: TemplateRef<StepperIconContext> };\r\n /** 0-based index of the step within the stepper. */\r\n @Input() index: number;\r\n /** Whether this step is selected (active tab). */\r\n @Input() selected: boolean;\r\n /** Whether this step is currently active (focused/engaged). */\r\n @Input() active: boolean;\r\n /** Marks the step as optional (affects label rendering). */\r\n @Input() optional: boolean;\r\n /** Disables ripple effects on header interactions. */\r\n @Input() disableRipple: boolean;\r\n\r\n constructor() {\r\n super();\r\n\r\n const changeDetectorRef = inject(ChangeDetectorRef);\r\n // Re-render when i18n strings change.\r\n this._intlSubscription = this._intl.changes.subscribe(() => changeDetectorRef.markForCheck());\r\n }\r\n\r\n /** Begin monitoring focus on the header to apply origin-aware styles. */\r\n ngAfterViewInit() {\r\n this._focusMonitor.monitor(this._elementRef, true);\r\n }\r\n\r\n /** Cleanup subscriptions and focus monitoring. */\r\n ngOnDestroy() {\r\n this._intlSubscription.unsubscribe();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n /**\r\n * Programmatic focus with optional origin (mouse/keyboard/touch/program).\r\n * Falls back to direct focus if no origin is provided.\r\n */\r\n override focus(origin?: FocusOrigin, options?: FocusOptions) {\r\n if (origin) {\r\n this._focusMonitor.focusVia(this._elementRef, origin, options);\r\n } else {\r\n this._elementRef.nativeElement.focus(options);\r\n }\r\n }\r\n\r\n /** Returns string label if provided directly, otherwise null. */\r\n _stringLabel(): string | null {\r\n return this.label instanceof MDStepLabel ? null : this.label;\r\n }\r\n\r\n /** Returns template label if provided, otherwise null. */\r\n _templateLabel(): MDStepLabel | null {\r\n return this.label instanceof MDStepLabel ? this.label : null;\r\n }\r\n\r\n /** Host element getter used by base classes/templates. */\r\n _getHostElement() {\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n /**\r\n * Default text for built-in states when an icon template isn’t provided.\r\n * - 'number' → (index + 1) as text\r\n * - 'edit' → 'create'\r\n * - 'error' → 'warning'\r\n * - otherwise returns the state string itself\r\n */\r\n _getDefaultTextForState(state: StepState): string {\r\n if (state == 'number') {\r\n return `${this.index + 1}`;\r\n }\r\n if (state == 'edit') {\r\n return 'create';\r\n }\r\n if (state == 'error') {\r\n return 'warning';\r\n }\r\n return state;\r\n }\r\n\r\n /** True if no label, no optional/error labels — used for styling empty headers. */\r\n protected _hasEmptyLabel() {\r\n return !this._stringLabel() && !this._templateLabel() && !this._hasOptionalLabel() && !this._hasErrorLabel();\r\n }\r\n\r\n /** True if the step is optional and not in error state. */\r\n protected _hasOptionalLabel() {\r\n return this.optional && this.state !== 'error';\r\n }\r\n\r\n /** True if the current state is 'error'. */\r\n protected _hasErrorLabel() {\r\n return this.state === 'error';\r\n }\r\n}\r\n","<div class=\"step-icon-state-{{state}} step-icon\" [class.step-icon-selected]=\"selected\">\r\n <div class=\"step-icon-content\">\r\n @if (iconOverrides && iconOverrides[state]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconOverrides[state]\"\r\n [ngTemplateOutletContext]=\"{index, active, optional}\"></ng-container>\r\n } @else {\r\n @switch (state) {\r\n @case ('number') {\r\n <span aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</span>\r\n }\r\n\r\n @default {\r\n @if (state === 'done') {\r\n <span class=\"cdk-visually-hidden\">{{_intl.completedLabel}}</span>\r\n } @else if (state === 'edit') {\r\n <span class=\"cdk-visually-hidden\">{{_intl.editableLabel}}</span>\r\n }\r\n @switch (state) {\r\n @case ('done') {\r\n <div class=\"icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\">\r\n <path\r\n d=\"M530.8 134.1C545.1 144.5 548.3 164.5 537.9 178.8L281.9 530.8C276.4 538.4 267.9 543.1 258.5 543.9C249.1 544.7 240 541.2 233.4 534.6L105.4 406.6C92.9 394.1 92.9 373.8 105.4 361.3C117.9 348.8 138.2 348.8 150.7 361.3L252.2 462.8L486.2 141.1C496.6 126.8 516.6 123.6 530.9 134z\"\r\n />\r\n </svg>\r\n </div>\r\n }\r\n @case ('edit') {\r\n <div class=\"icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\">\r\n <path\r\n d=\"M416.9 85.2L372 130.1L509.9 268L554.8 223.1C568.4 209.6 576 191.2 576 172C576 152.8 568.4 134.4 554.8 120.9L519.1 85.2C505.6 71.6 487.2 64 468 64C448.8 64 430.4 71.6 416.9 85.2zM338.1 164L122.9 379.1C112.2 389.8 104.4 403.2 100.3 417.8L64.9 545.6C62.6 553.9 64.9 562.9 71.1 569C77.3 575.1 86.2 577.5 94.5 575.2L222.3 539.7C236.9 535.6 250.2 527.9 261 517.1L476 301.9L338.1 164z\"\r\n />\r\n </svg>\r\n </div>\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n </div>\r\n</div>\r\n<div class=\"step-label\"\r\n [class.step-label-active]=\"active\"\r\n [class.step-label-selected]=\"selected\"\r\n [class.step-label-error]=\"state == 'error'\">\r\n @if (_templateLabel(); as templateLabel) {\r\n <div class=\"step-text-label\">\r\n <ng-container [ngTemplateOutlet]=\"templateLabel.template\"></ng-container>\r\n </div>\r\n } @else if (_stringLabel()) {\r\n <div class=\"step-text-label\">{{label}}</div>\r\n }\r\n\r\n @if (_hasOptionalLabel()) {\r\n <div class=\"step-optional\">{{_intl.optionalLabel}}</div>\r\n }\r\n\r\n @if (_hasErrorLabel()) {\r\n <div class=\"step-sub-label-error\">{{errorMessage}}</div>\r\n }\r\n</div>","import { Directive, Input, TemplateRef, inject } from '@angular/core';\r\nimport { StepState } from '@angular/cdk/stepper';\r\n\r\n/**\r\n * Context passed into a custom stepper icon template.\r\n * Consumers can use these values inside the template to\r\n * render state-aware icons (e.g., different glyphs/colors).\r\n */\r\nexport interface StepperIconContext {\r\n /** 0-based index of the step. */\r\n index: number;\r\n /** True if this step is currently active/selected. */\r\n active: boolean;\r\n /** True if this step is marked as optional. */\r\n optional: boolean;\r\n}\r\n\r\n/**\r\n * Marks an <ng-template> as a custom icon for a particular step state.\r\n *\r\n * Usage:\r\n * <ng-template mdStepperIcon=\"done\" let-ctx>\r\n * <!-- ctx: StepperIconContext -->\r\n * <my-done-icon [highlight]=\"ctx.active\"></my-done-icon>\r\n * </ng-template>\r\n *\r\n * Bind the `stepperIcon` input to one of the StepState values\r\n * (e.g., 'number' | 'edit' | 'done' | 'error'), and the stepper\r\n * will project this template when the step is in that state.\r\n */\r\n@Directive({\r\n selector: 'ng-template[mdStepperIcon]',\r\n})\r\nexport class MDStepperIcon {\r\n /** Reference to the provided template, instantiated by the stepper as needed. */\r\n templateRef = inject<TemplateRef<StepperIconContext>>(TemplateRef);\r\n\r\n /** Step state that this icon template should represent. */\r\n @Input('stepperIcon') name: StepState;\r\n\r\n constructor() {}\r\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n/**\r\n * Marks an <ng-template> as the content for a step.\r\n * Usage:\r\n * <ng-template mdStepContent> ... </ng-template>\r\n *\r\n * The directive exposes the underlying TemplateRef so parent\r\n * components (e.g., a stepper) can instantiate it on demand.\r\n */\r\n@Directive({\r\n selector: 'ng-template[mdStepContent]',\r\n})\r\nexport class MDStepContent {\r\n /** Reference to the template to be rendered for this step. */\r\n _template = inject<TemplateRef<any>>(TemplateRef);\r\n\r\n constructor() {}\r\n}\r\n","import {CdkStep, CdkStepper} from '@angular/cdk/stepper';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n signal,\r\n TemplateRef,\r\n ViewChildren,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {NgTemplateOutlet} from '@angular/common';\r\nimport {Platform} from '@angular/cdk/platform';\r\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\r\nimport {Subscription} from 'rxjs';\r\nimport {takeUntil, map, startWith, switchMap} from 'rxjs/operators';\r\n\r\nimport {MDStepHeader} from './step-header';\r\nimport {MDStepLabel} from './step-label';\r\nimport {MDStepperIcon, StepperIconContext} from './stepper-icon';\r\nimport {MDStepContent} from './step-content';\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {FormGroupDirective, AbstractControl, NgForm} from '@angular/forms';\r\n\r\n/**\r\n * ErrorStateMatcher that shows errors only once a control is dirty\r\n * (or when the parent form was submitted). Useful for “show on edit”.\r\n */\r\n@Injectable()\r\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\r\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\r\n }\r\n}\r\n\r\n/**\r\n * Default ErrorStateMatcher used across the stepper.\r\n * Marks error when a control is invalid and touched, or the form is submitted.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class ErrorStateMatcher {\r\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\r\n }\r\n}\r\n\r\n/**\r\n * Single step inside the stepper.\r\n * - Extends CdkStep and plugs in lazy content via <ng-template mdStepContent>.\r\n * - Provides ErrorStateMatcher so the step can decide its own error state.\r\n */\r\n@Component({\r\n selector: 'md-step',\r\n templateUrl: 'step.html',\r\n providers: [\r\n // Provide the step instance wherever ErrorStateMatcher or CdkStep is requested.\r\n {provide: ErrorStateMatcher, useExisting: MDStep},\r\n {provide: CdkStep, useExisting: MDStep},\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'mdStep',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CdkPortalOutlet],\r\n host: {\r\n // Keep steps hidden by default; container controls visibility.\r\n 'hidden': '',\r\n },\r\n})\r\nexport class MDStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy {\r\n /** Parent-provided matcher used as a baseline in isErrorState. */\r\n private _errorStateMatcher = inject(ErrorStateMatcher, {skipSelf: true});\r\n /** View container used to create a portal for lazy content. */\r\n private _viewContainerRef = inject(ViewContainerRef);\r\n /** Subscription to selected-state changes (to attach lazy content). */\r\n private _isSelected = Subscription.EMPTY;\r\n\r\n /** Optional projected label for the step header. */\r\n @ContentChild(MDStepLabel) override stepLabel: MDStepLabel = undefined!;\r\n\r\n /** Optional lazy body content template: <ng-template mdStepContent>…</ng-template> */\r\n @ContentChild(MDStepContent, {static: false}) _lazyContent: MDStepContent;\r\n\r\n /** Portal instance created when the step first becomes selected. */\r\n _portal: TemplatePortal;\r\n\r\n /** Attach lazy content when this step becomes selected for the first time. */\r\n ngAfterContentInit() {\r\n this._isSelected = this._stepper.steps.changes\r\n .pipe(\r\n switchMap(() => {\r\n return this._stepper.selectionChange.pipe(\r\n map(event => event.selectedStep === this),\r\n startWith(this._stepper.selected === this),\r\n );\r\n }),\r\n )\r\n .subscribe(isSelected => {\r\n if (isSelected && this._lazyContent && !this._portal) {\r\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef!);\r\n }\r\n });\r\n }\r\n\r\n /** Cleanup subscription on destroy. */\r\n ngOnDestroy() {\r\n this._isSelected.unsubscribe();\r\n }\r\n\r\n /**\r\n * ErrorStateMatcher implementation for this step.\r\n * Combines the injected default matcher with “interacted” state so that\r\n * a step can show errors after the user interacted with the step controls.\r\n */\r\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\r\n const customErrorState = !!(control && control.invalid && this.interacted);\r\n return originalErrorState || customErrorState;\r\n }\r\n}\r\n\r\n/**\r\n * The stepper container that manages a sequence of md-step children.\r\n * - Handles orientation, header/label positioning, and animations.\r\n * - Tracks and emits animation lifecycle.\r\n * - Supports custom icon overrides via <ng-template mdStepperIcon name=\"...\">.\r\n */\r\n@Component({\r\n selector: 'md-stepper, md-vertical-stepper, md-horizontal-stepper, [mdStepper]',\r\n exportAs: 'mdStepper, mdVerticalStepper, mdHorizontalStepper',\r\n templateUrl: 'stepper.html',\r\n styleUrl: 'stepper.scss',\r\n host: {\r\n // Orientation & layout classes.\r\n '[class.stepper-horizontal]': 'orientation === \"horizontal\"',\r\n '[class.stepper-vertical]': 'orientation === \"vertical\"',\r\n '[class.stepper-label-position-end]':\r\n 'orientation === \"horizontal\" && labelPosition == \"end\"',\r\n '[class.stepper-label-position-bottom]':\r\n 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\r\n '[class.stepper-header-position-bottom]': 'headerPosition === \"bottom\"',\r\n\r\n // Animation state + duration CSS variable.\r\n '[class.stepper-animating]': '_isAnimating()',\r\n '[style.stepper-animation-duration]': '_getAnimationDuration()',\r\n\r\n // ARIA role for a list of tabs.\r\n '[attr.aria-orientation]': 'orientation',\r\n 'role': 'tablist',\r\n },\r\n providers: [{provide: CdkStepper, useExisting: MDStepper}],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgTemplateOutlet, MDStepHeader],\r\n})\r\nexport class MDStepper extends CdkStepper implements AfterViewInit, AfterContentInit, OnDestroy {\r\n /** Run transition listeners outside Angular for perf. */\r\n private _ngZone = inject(NgZone);\r\n /** Used to set up/tear down transitionend listeners. */\r\n private _renderer = inject(Renderer2);\r\n /** Disable animations flag (useful for testing or SSR). */\r\n private _animationsDisabled = false;\r\n /** Cleanup handle for the transitionend listener. */\r\n private _cleanupTransition: (() => void) | undefined;\r\n /** Reactive animating flag used by host binding. */\r\n protected _isAnimating = signal(false);\r\n\r\n /** All step headers rendered by the template. */\r\n @ViewChildren(MDStepHeader) override _stepHeader: QueryList<MDStepHeader> = undefined!;\r\n\r\n /** Animated containers used to detect when transitions finish. */\r\n @ViewChildren('animatedContainer') _animatedContainers: QueryList<ElementRef>;\r\n\r\n /** All descendant steps (supports nested usage; CdkStepper handles scoping). */\r\n @ContentChildren(MDStep, {descendants: true}) override _steps: QueryList<MDStep> = undefined!;\r\n\r\n /** Public alias of _steps used by base class. */\r\n override readonly steps: QueryList<MDStep> = new QueryList<MDStep>();\r\n\r\n /** Any custom icon templates projected via mdStepperIcon. */\r\n @ContentChildren(MDStepperIcon, {descendants: true}) _icons: QueryList<MDStepperIcon>;\r\n\r\n /** Emits when a view transition animation has completed. */\r\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Disables ink ripple on headers (passed to children). */\r\n @Input() disableRipple: boolean;\r\n\r\n /** Horizontal label position (end/bottom when orientation is horizontal). */\r\n @Input()\r\n labelPosition: 'bottom' | 'end' = 'end';\r\n\r\n /** Step header position (top/bottom). */\r\n @Input()\r\n headerPosition: 'top' | 'bottom' = 'top';\r\n\r\n /** Map of step state → custom icon template overrides. */\r\n _iconOverrides: Record<string, TemplateRef<StepperIconContext>> = {};\r\n\r\n /** Duration for transitions (e.g. \"500ms\" | \"0ms\"). */\r\n @Input()\r\n get animationDuration(): string {\r\n return this._animationDuration;\r\n }\r\n set animationDuration(value: string) {\r\n // Normalize plain numeric to milliseconds.\r\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\r\n }\r\n private _animationDuration = '';\r\n\r\n /** SSR guard (avoid DOM APIs when not in browser). */\r\n protected _isServer: boolean = !inject(Platform).isBrowser;\r\n\r\n // Overload kept to match construction signature patterns.\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n\r\n // Infer orientation from host element name when using alias tags.\r\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\r\n this.orientation = nodeName === 'vertical-stepper' ? 'vertical' : 'horizontal';\r\n }\r\n\r\n /**\r\n * After content init:\r\n * - Collect custom icon templates.\r\n * - React to step list changes to recalc state.\r\n * - Toggle animating flag on selected index changes and prepare CSS listeners.\r\n */\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n // Gather mdStepperIcon overrides by name.\r\n this._icons.forEach(({name, templateRef}) => (this._iconOverrides[name] = templateRef));\r\n\r\n // When steps change, notify base to recompute.\r\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => this._stateChanged());\r\n\r\n // When selection changes, start/stop animating depending on duration.\r\n this.selectedIndexChange.pipe(takeUntil(this._destroyed)).subscribe(() => {\r\n const duration = this._getAnimationDuration();\r\n if (duration === '0ms' || duration === '0s') {\r\n this._onAnimationDone();\r\n } else {\r\n this._isAnimating.set(true);\r\n }\r\n });\r\n\r\n // Enable CSS transition listeners a short time after init (avoids first-paint glitches).\r\n this._ngZone.runOutsideAngular(() => {\r\n if (!this._animationsDisabled) {\r\n setTimeout(() => {\r\n this._elementRef.nativeElement.classList.add('stepper-animations-enabled');\r\n this._cleanupTransition = this._renderer.listen(\r\n this._elementRef.nativeElement,\r\n 'transitionend',\r\n this._handleTransitionend,\r\n );\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * After view init:\r\n * - Emit initial animationDone once containers are rendered.\r\n * - Recompute alignment/layout on container list changes.\r\n */\r\n override ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n if (typeof queueMicrotask === 'function') {\r\n let hasEmittedInitial = false;\r\n\r\n this._animatedContainers.changes\r\n .pipe(startWith(null), takeUntil(this._destroyed))\r\n .subscribe(() =>\r\n queueMicrotask(() => {\r\n // Fire once after the very first render so consumers can react.\r\n if (!hasEmittedInitial) {\r\n hasEmittedInitial = true;\r\n this.animationDone.emit();\r\n }\r\n this._stateChanged();\r\n }),\r\n );\r\n }\r\n }\r\n\r\n /** Tear down transition listener on destroy. */\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this._cleanupTransition?.();\r\n }\r\n\r\n /** Resolve the effective animation duration string applied to CSS. */\r\n _getAnimationDuration() {\r\n if (this._animationsDisabled) {\r\n return '0ms';\r\n }\r\n if (this.animationDuration) {\r\n return this.animationDuration;\r\n }\r\n // Defaults: match Material timings (horizontal slower than vertical).\r\n return this.orientation === 'horizontal' ? '500ms' : '225ms';\r\n }\r\n\r\n /**\r\n * Global transitionend handler:\r\n * - Detects the active animated container based on orientation and CSS properties.\r\n * - Calls _onAnimationDone when the relevant transition completes.\r\n */\r\n private _handleTransitionend = (event: TransitionEvent) => {\r\n const target = event.target as HTMLElement | null;\r\n if (!target) {\r\n return;\r\n }\r\n\r\n // Horizontal stepper finishes when the \"current\" content transform ends.\r\n const isHorizontalActiveElement =\r\n this.orientation === 'horizontal' &&\r\n event.propertyName === 'transform' &&\r\n target.classList.contains('horizontal-stepper-content-current');\r\n\r\n // Vertical stepper finishes when the active container grid-rows change ends.\r\n const isVerticalActiveElement =\r\n this.orientation === 'vertical' &&\r\n event.propertyName === 'grid-template-rows' &&\r\n target.classList.contains('vertical-content-container-active');\r\n\r\n // Ensure the event target is one of our tracked containers.\r\n const shouldEmit =\r\n (isHorizontalActiveElement || isVerticalActiveElement) &&\r\n this._animatedContainers.find(ref => ref.nativeElement === target);\r\n\r\n if (shouldEmit) {\r\n this._onAnimationDone();\r\n }\r\n };\r\n\r\n /** Clear the animating flag and emit animationDone to consumers. */\r\n private _onAnimationDone() {\r\n this._isAnimating.set(false);\r\n this.animationDone.emit();\r\n }\r\n}\r\n","<ng-template>\r\n <ng-content></ng-content>\r\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\r\n</ng-template>","@if (_isServer) {\r\n <ng-content/>\r\n}\r\n\r\n@switch (orientation) {\r\n @case ('horizontal') {\r\n <div class=\"horizontal-stepper-wrapper\">\r\n <div class=\"horizontal-stepper-header-container\">\r\n @for (step of steps; track step) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"stepTemplate\"\r\n [ngTemplateOutletContext]=\"{step}\"/>\r\n @if (!$last) {\r\n <div class=\"stepper-horizontal-line\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"horizontal-content-container\">\r\n @for (step of steps; track step) {\r\n <div\r\n #animatedContainer\r\n class=\"horizontal-stepper-content\"\r\n role=\"tabpanel\"\r\n [id]=\"_getStepContentId($index)\"\r\n [attr.aria-labelledby]=\"_getStepLabelId($index)\"\r\n [class]=\"'horizontal-stepper-content-' + _getAnimationDirection($index)\"\r\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('vertical') {\r\n @for (step of steps; track step) {\r\n <div class=\"step\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"stepTemplate\"\r\n [ngTemplateOutletContext]=\"{step}\"/>\r\n <div\r\n #animatedContainer\r\n class=\"vertical-content-container\"\r\n [class.stepper-vertical-line]=\"!$last\"\r\n [class.vertical-content-container-active]=\"selectedIndex === $index\"\r\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n <div class=\"vertical-stepper-content\"\r\n role=\"tabpanel\"\r\n [id]=\"_getStepContentId($index)\"\r\n [attr.aria-labelledby]=\"_getStepLabelId($index)\">\r\n <div class=\"vertical-content\">\r\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n}\r\n\r\n<ng-template let-step=\"step\" #stepTemplate>\r\n <md-step-header\r\n [class.horizontal-stepper-header]=\"orientation === 'horizontal'\"\r\n [class.vertical-stepper-header]=\"orientation === 'vertical'\"\r\n (click)=\"step.select()\"\r\n (keydown)=\"_onKeydown($event)\"\r\n [tabIndex]=\"_getFocusIndex() === step.index() ? 0 : -1\"\r\n [id]=\"_getStepLabelId(step.index())\"\r\n [attr.aria-posinset]=\"step.index() + 1\"\r\n [attr.aria-setsize]=\"steps.length\"\r\n [attr.aria-controls]=\"_getStepContentId(step.index())\"\r\n [attr.aria-selected]=\"step.isSelected()\"\r\n [attr.aria-label]=\"step.ariaLabel || null\"\r\n [attr.aria-labelledby]=\"(!step.ariaLabel && step.ariaLabelledby) ? step.ariaLabelledby : null\"\r\n [attr.aria-disabled]=\"step.isNavigable() ? null : true\"\r\n [index]=\"step.index()\"\r\n [state]=\"step.indicatorType()\"\r\n [label]=\"step.stepLabel || step.label\"\r\n [selected]=\"step.isSelected()\"\r\n [active]=\"step.isNavigable()\"\r\n [optional]=\"step.optional\"\r\n [errorMessage]=\"step.errorMessage\"\r\n [iconOverrides]=\"_iconOverrides\"\r\n [disableRipple]=\"disableRipple || !step.isNavigable()\"\r\n [color]=\"step.color || color\"/>\r\n</ng-template>","import { CdkStepperNext, CdkStepperPrevious } from '@angular/cdk/stepper';\r\nimport { Directive } from '@angular/core';\r\n\r\n/**\r\n * Button directive that advances the stepper to the next step.\r\n *\r\n * Usage:\r\n * <button mdStepperNext>Next</button>\r\n *\r\n * Extends CDK's CdkStepperNext; this wrapper only provides\r\n * a semantic selector and host classes/attrs for styling.\r\n */\r\n@Directive({\r\n selector: 'button[mdStepperNext]',\r\n host: {\r\n class: 'stepper-next',\r\n // Preserve the native button type (bound by CdkStepperNext).\r\n '[type]': 'type',\r\n },\r\n})\r\nexport class MDStepperNext extends CdkStepperNext {}\r\n\r\n/**\r\n * Button directive that moves the stepper to the previous step.\r\n *\r\n * Usage:\r\n * <button mdStepperPrevious>Back</button>\r\n *\r\n * Extends CDK's CdkStepperPrevious; this wrapper only provides\r\n * a semantic selector and host classes/attrs for styling.\r\n */\r\n@Directive({\r\n selector: 'button[mdStepperPrevious]',\r\n host: {\r\n class: 'stepper-previous',\r\n // Preserve the native button type (bound by CdkStepperPrevious).\r\n '[type]': 'type',\r\n },\r\n})\r\nexport class MDStepperPrevious extends CdkStepperPrevious {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { MDStep, MDStepper } from './stepper';\r\nimport { MDStepLabel } from './step-label';\r\nimport { MDStepperNext, MDStepperPrevious } from './stepper-button';\r\nimport { MDStepHeader } from './step-header';\r\nimport { MDStepperIcon } from './stepper-icon';\r\nimport { MDStepContent } from './step-content';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [\r\n CommonModule,\r\n MDStep,\r\n MDStepLabel,\r\n MDStepper,\r\n MDStepperNext,\r\n MDStepperPrevious,\r\n MDStepHeader,\r\n MDStepperIcon,\r\n MDStepContent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n PortalModule,\r\n CdkStepperModule,\r\n MDStep,\r\n MDStepLabel,\r\n MDStepper,\r\n MDStepperNext,\r\n MDStepperPrevious,\r\n MDStepHeader,\r\n MDStepperIcon,\r\n MDStepContent,\r\n ],\r\n})\r\nexport class MDStepExecutorModule {}\r\n","import { _IdGenerator } from '@angular/cdk/a11y';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n inject,\r\n Input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MDSelect } from 'ui-kit-lib';\r\n\r\n@Component({\r\n selector: 'md-option-group',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './option-group.html',\r\n styleUrls: ['./option-group.scss'],\r\n standalone: true,\r\n host: {\r\n class: 'mdc-optgroup',\r\n },\r\n})\r\n/**\r\n * Groups related `<md-option>` items under a labeled header.\r\n *\r\n * @remarks\r\n * - When `disabled` is `true`, the entire group is rendered inert.\r\n * - The generated label id is exposed as {@link _labelId} for a11y wiring.\r\n *\r\n * @example\r\n * ```html\r\n * <md-option-group label=\"Fruits\">\r\n * <md-option value=\"ap\">Apple</md-option>\r\n * <md-option value=\"ba\">Banana</md-option>\r\n * </md-option-group>\r\n * ```\r\n */\r\nexport class MDOptionGroup {\r\n /** Visible group header shown above the contained options. */\r\n @Input() label: string;\r\n\r\n /**\r\n * Disables the entire group (non-interactive/inert rendering).\r\n * @default false\r\n */\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n /**\r\n * Unique id used to associate the rendered label with the grouped options for a11y.\r\n * Useful as `aria-labelledby` target on the options container.\r\n */\r\n _labelId: string = inject(_IdGenerator).getId('optgroup-label-');\r\n\r\n /**\r\n * Internal flag for templates to make the group non-interactive without altering ARIA.\r\n * Can be toggled by the parent template if additional gating is needed.\r\n * @internal\r\n */\r\n _inert: boolean;\r\n\r\n /**\r\n * Optional reference to the parent select; useful for contextual checks in the template.\r\n * Kept for side-effects/context only; not required for basic grouping behavior.\r\n */\r\n constructor() {\r\n const parent = inject<MDSelect>(MDSelect, { optional: true });\r\n }\r\n}\r\n","<span\r\n class=\"mdc-optgroup-label\"\r\n role=\"presentation\"\r\n [class.mdc-list-item--disabled]=\"disabled\"\r\n [id]=\"_labelId\">\r\n <span class=\"mdc-list-item__primary-text\">{{ label }} <ng-content></ng-content></span>\r\n</span>\r\n\r\n<ng-content select=\"md-option, ng-container\"></ng-content>","import { SelectionModel } from '@angular/cdk/collections';\r\nimport {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedPosition,\r\n Overlay,\r\n ScrollStrategy,\r\n ViewportRuler,\r\n} from '@angular/cdk/overlay';\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n InjectionToken,\r\n Input,\r\n numberAttribute,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\r\nimport { _countGroupLabelsBeforeOption, _getOptionScrollPosition, MDOption, MDOptionSelectionChange } from './option';\r\nimport { MDOptionGroup } from './option-group';\r\nimport { _IdGenerator, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { defer, filter, map, merge, Observable, startWith, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\r\nimport {\r\n A,\r\n DOWN_ARROW,\r\n ENTER,\r\n ESCAPE,\r\n hasModifierKey,\r\n LEFT_ARROW,\r\n RIGHT_ARROW,\r\n SPACE,\r\n UP_ARROW,\r\n} from '@angular/cdk/keycodes';\r\n\r\n/** Event payload emitted when the select's value changes. */\r\nexport class SelectChange<T = any> {\r\n constructor(public source: MDSelect, public value: T) {}\r\n}\r\n\r\n/** Token for projecting a custom trigger template (optional). */\r\nexport const MD_SELECT_TRIGGER = new InjectionToken<MDSelectTrigger>('MDSelectTrigger');\r\n\r\n@Component({\r\n selector: 'md-select',\r\n templateUrl: './select.html',\r\n styleUrls: ['./select.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'combobox',\r\n 'aria-haspopup': 'listbox',\r\n class: 'mdc-select',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\r\n '[attr.aria-expanded]': 'panelOpen',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-required]': 'required.toString()',\r\n '[attr.aria-disabled]': 'disabled.toString()',\r\n '[attr.aria-invalid]': 'errorState',\r\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\r\n '[class.mdc-select-disabled]': 'disabled',\r\n '[class.mdc-select-invalid]': 'errorState',\r\n '[class.mdc-select-required]': 'required',\r\n '[class.mdc-select-empty]': 'empty',\r\n '[class.mdc-select-multiple]': 'multiple',\r\n '(keydown)': '_handleKeydown($event)',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()',\r\n '(click)': 'onContainerClick()',\r\n },\r\n standalone: true,\r\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\r\n})\r\n/**\r\n * Material-like Select component with overlayed panel, single/multiple selection,\r\n * full a11y (combobox + listbox semantics), and CVA integration.\r\n *\r\n * @remarks\r\n * - Uses `ActiveDescendantKeyManager` for keyboard navigation & typeahead.\r\n * - Supports custom value comparison via `compareWith`.\r\n * - Works with {@link MDOption} and {@link MDOptionGroup} descendants.\r\n * - Emits `valueChange`, and structured `selectionChange` ({@link SelectChange}).\r\n */\r\nexport class MDSelect implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n /** Viewport ruler for resize/orientation tracking to recompute overlay width. */\r\n protected _viewportRuler = inject(ViewportRuler);\r\n\r\n /** Change detector for OnPush; used throughout for manual marks. */\r\n protected _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** Host element reference. */\r\n readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n\r\n /** CDK Overlay service. */\r\n readonly _overlay = inject(Overlay);\r\n\r\n /** RTL/LTR direction (optional). */\r\n private _dir = inject(Directionality, { optional: true });\r\n\r\n /** Emits once content is fully initialized. */\r\n private _initialized = new Subject<void>();\r\n\r\n /** Control accessor hookup (if used inside forms). */\r\n ngControl = inject(NgControl, { self: true, optional: true })!;\r\n\r\n /** Id generator for trigger/value elements. */\r\n private _idGenerator = inject(_IdGenerator);\r\n\r\n /** Cleanup fn for overlay detach (animation end / fallback). */\r\n private _cleanupDetach: (() => void) | undefined;\r\n\r\n /** Renderer for low-level DOM ops. */\r\n private _renderer = inject(Renderer2);\r\n\r\n /** CSS class(es) applied to the overlay panel container. */\r\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\r\n\r\n /** Disabled state for the whole control. */\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n /** Multiple selection toggle. */\r\n @Input({ transform: booleanAttribute })\r\n get multiple(): boolean {\r\n return this._multiple;\r\n }\r\n set multiple(value: boolean) {\r\n this._multiple = value;\r\n }\r\n private _multiple: boolean = false;\r\n\r\n /** Current model value (single or array for multiple). */\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(newValue: any) {\r\n const hasAssigned = this._assignValue(newValue);\r\n if (hasAssigned) {\r\n this._onChange(newValue);\r\n }\r\n }\r\n private _value: any;\r\n\r\n /** Host tabindex (applies when not disabled). */\r\n @Input({\r\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\r\n })\r\n tabIndex: number = 0;\r\n\r\n /**\r\n * Required flag; auto-derives from `Validators.required` on the bound control\r\n * if not provided explicitly.\r\n */\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n private _required: boolean | undefined;\r\n\r\n /** Custom comparator for complex option values. */\r\n @Input()\r\n get compareWith() {\r\n return this._compareWith;\r\n }\r\n set compareWith(fn: (o1: any, o2: any) => boolean) {\r\n this._compareWith = fn;\r\n if (this._selectionModel) {\r\n this._initializeSelection();\r\n }\r\n }\r\n private _compareWith = (o1: any, o2: any) => o1 === o2;\r\n\r\n /** Placeholder/label when nothing is selected. */\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = 'placeholder';\r\n\r\n /** Allow selecting null/undefined values in single mode. */\r\n @Input({ transform: booleanAttribute })\r\n canSelectNullableOptions: boolean = false;\r\n\r\n /** Optional custom sorting for selected values (multiple mode). */\r\n @Input() sortComparator: (a: MDOption, b: MDOption, options: MDOption[]) => number;\r\n\r\n /** Emits raw value whenever internal value changes. */\r\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** Emits {@link SelectChange} with source/value when selection changes. */\r\n @Output() readonly selectionChange = new EventEmitter<SelectChange>();\r\n\r\n /** Emits `true/false` when panel opens/closes. */\r\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /** Convenience stream: fires once on open. */\r\n @Output('opened') readonly _openedStream: Observable<void> = this.openedChange.pipe(\r\n filter((o) => o),\r\n map(() => {})\r\n );\r\n\r\n /** Convenience stream: fires once on close. */\r\n @Output('closed') readonly _closedStream: Observable<void> = this.openedChange.pipe(\r\n filter((o) => !o),\r\n map(() => {})\r\n );\r\n\r\n /** Trigger element ref (default trigger template). */\r\n @ViewChild('trigger') trigger: ElementRef;\r\n\r\n /** Panel container ref. */\r\n @ViewChild('panel') panel: ElementRef;\r\n\r\n /** Overlay directive for positioning/attach/detach. */\r\n @ViewChild(CdkConnectedOverlay) protected _overlayDir: CdkConnectedOverlay;\r\n\r\n /** Optional projected custom trigger via injection token. */\r\n @ContentChild(MD_SELECT_TRIGGER) customTrigger: MDSelectTrigger;\r\n\r\n /** Descendant options in the content. */\r\n @ContentChildren(MDOption, { descendants: true }) options: QueryList<MDOption>;\r\n\r\n /** Descendant option groups in the content. */\r\n @ContentChildren(MDOptionGroup, { descendants: true }) optionGroups: QueryList<MDOptionGroup>;\r\n\r\n /** Preferred connected positions for overlay. */\r\n _positions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n /** True when host is focused or panel is open. */\r\n get focused(): boolean {\r\n return this._focused || this._panelOpen;\r\n }\r\n private _focused = false;\r\n\r\n /** Emits when any input that affects layout/state changes. */\r\n readonly stateChanges = new Subject<void>();\r\n\r\n /** Destroy notifier for subscriptions. */\r\n protected readonly _destroy = new Subject<void>();\r\n\r\n /** Panel visibility flag. */\r\n private _panelOpen = false;\r\n\r\n /** Computed overlay width (synced on viewport size changes). */\r\n _overlayWidth: string | number;\r\n\r\n /** Scroll strategy for overlay panel. */\r\n _scrollStrategy: ScrollStrategy = this._overlay.scrollStrategies.reposition();\r\n\r\n /** Selected options model. */\r\n _selectionModel: SelectionModel<any>;\r\n\r\n /** ControlValueAccessor change fn. */\r\n _onChange: (value: any) => void = () => {};\r\n\r\n /** ControlValueAccessor touched fn. */\r\n _onTouched = () => {};\r\n\r\n /** Keyboard manager for activeDescendant/roving focus/typeahead. */\r\n _keyManager: ActiveDescendantKeyManager<MDOption>;\r\n\r\n /** Stream of child option selection events, lazily wired. */\r\n readonly optionSelectionChanges: Observable<MDOptionSelectionChange> = defer(() => {\r\n const options = this.options;\r\n if (options) {\r\n return options.changes.pipe(\r\n startWith(options),\r\n switchMap(() => merge(...options.map((option) => option.onSelectionChange)))\r\n );\r\n }\r\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\r\n });\r\n\r\n /** Id for the trigger value region (for aria). */\r\n _valueId = this._idGenerator.getId('select-value-');\r\n\r\n /** True when no selection is present. */\r\n get empty(): boolean {\r\n return !this._selectionModel || this._selectionModel.isEmpty();\r\n }\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n /** Lifecycle: react to `@Input` changes (reserved for future use). */\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n /** After content init: wire key manager, selection model synchronization. */\r\n ngAfterContentInit(): void {\r\n this._initialized.next();\r\n this._initialized.complete();\r\n this._initKeyManager();\r\n\r\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe((event) => {\r\n event.added.forEach((option) => option.select());\r\n event.removed.forEach((option) => option.deselect());\r\n });\r\n\r\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\r\n this._resetOptions();\r\n this._initializeSelection();\r\n });\r\n }\r\n\r\n /** Initialize selection model and subscribe to viewport changes. */\r\n ngOnInit() {\r\n this._selectionModel = new SelectionModel<MDOption>(this.multiple);\r\n this.stateChanges.next();\r\n\r\n this._viewportRuler\r\n .change()\r\n .pipe(takeUntil(this._destroy))\r\n .subscribe(() => {\r\n if (this.panelOpen) {\r\n this._overlayWidth = this._getOverlayWidth();\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n /** Cleanup listeners/subscriptions. */\r\n ngOnDestroy(): void {\r\n this._keyManager?.destroy();\r\n this._destroy.next();\r\n this._destroy.complete();\r\n }\r\n\r\n /** Public: whether the panel is currently open. */\r\n get panelOpen(): boolean {\r\n return this._panelOpen;\r\n }\r\n\r\n /** Public: current selection (single `MDOption` or array for multiple). */\r\n get selected(): MDOption | MDOption[] {\r\n return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\r\n }\r\n\r\n /** Human-readable value for the trigger display. */\r\n get triggerValue(): string {\r\n if (this.empty) return '';\r\n if (this._multiple) {\r\n const selectedOptions = this._selectionModel.selected.map((option) => option.viewValue);\r\n if (this._isRtl()) selectedOptions.reverse();\r\n return selectedOptions.join(', ');\r\n }\r\n return this._selectionModel.selected[0].viewValue;\r\n }\r\n\r\n // ───────────────────────────── ControlValueAccessor ─────────────────────────────\r\n\r\n writeValue(value: any): void {\r\n this._assignValue(value);\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => {}): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n // ───────────────────────────── Opening / Closing ─────────────────────────────\r\n\r\n /** Guard: can we open now (not disabled, have options, overlay ready)? */\r\n protected _canOpen(): boolean {\r\n return !this._panelOpen && !this.disabled && this.options?.length > 0 && !!this._overlayDir;\r\n }\r\n\r\n /** Open the panel and prepare keyboard/scroll state. */\r\n open(): void {\r\n if (!this._canOpen()) return;\r\n\r\n this._cleanupDetach?.();\r\n this._overlayWidth = this._getOverlayWidth();\r\n this._panelOpen = true;\r\n\r\n this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\r\n this._changeDetectorRef.detectChanges();\r\n this._positioningSettled();\r\n });\r\n\r\n this._overlayDir.attachOverlay();\r\n this._keyManager.withHorizontalOrientation(null);\r\n this._highlightCorrectOption();\r\n this._changeDetectorRef.markForCheck();\r\n this.stateChanges.next();\r\n\r\n Promise.resolve().then(() => this.openedChange.emit(true));\r\n }\r\n\r\n /** Pick initial active item on open (first enabled or selected). */\r\n private _highlightCorrectOption(): void {\r\n if (!this._keyManager) return;\r\n\r\n if (this.empty) {\r\n let firstEnabledOptionIndex = -1;\r\n for (let index = 0; index < this.options.length; index++) {\r\n const option = this.options.get(index)!;\r\n if (!option.disabled) {\r\n firstEnabledOptionIndex = index;\r\n break;\r\n }\r\n }\r\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\r\n } else {\r\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\r\n }\r\n }\r\n\r\n /** After attach: ensure active option is scrolled into view. */\r\n private _positioningSettled() {\r\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\r\n }\r\n\r\n /** Close panel, restore orientation, mark touched, and emit. */\r\n close(): void {\r\n if (!this._panelOpen) return;\r\n\r\n this._panelOpen = false;\r\n this._exitAndDetach();\r\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\r\n this._changeDetectorRef.markForCheck();\r\n this._onTouched();\r\n this.stateChanges.next();\r\n\r\n Promise.resolve().then(() => this.openedChange.emit(false));\r\n }\r\n\r\n /** Play exit animation (if available), then detach overlay. */\r\n private _exitAndDetach() {\r\n if (!this.panel) {\r\n this._detachOverlay();\r\n return;\r\n }\r\n\r\n this._cleanupDetach?.();\r\n this._cleanupDetach = () => {\r\n cleanupEvent();\r\n clearTimeout(exitFallbackTimer);\r\n this._cleanupDetach = undefined;\r\n };\r\n\r\n const panel: HTMLElement = this.panel.nativeElement;\r\n const cleanupEvent = this._renderer.listen(panel, 'animationend', (event: AnimationEvent) => {\r\n if (event.animationName === 'select-exit') {\r\n this._cleanupDetach?.();\r\n this._detachOverlay();\r\n }\r\n });\r\n\r\n const exitFallbackTimer = setTimeout(() => {\r\n this._cleanupDetach?.();\r\n this._detachOverlay();\r\n }, 200);\r\n\r\n panel.classList.add('select-panel-exit');\r\n }\r\n\r\n /** Detach overlay and request change detection. */\r\n private _detachOverlay() {\r\n this._overlayDir.detachOverlay();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n // ───────────────────────────── Keyboard handling ─────────────────────────────\r\n\r\n /** RTL helper. */\r\n _isRtl(): boolean {\r\n return this._dir ? this._dir.value === 'rtl' : false;\r\n }\r\n\r\n _handleKeydown(event: KeyboardEvent): void {\r\n if (this.disabled) return;\r\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\r\n }\r\n\r\n /** When closed: open with Enter/Space; navigate single selection. */\r\n private _handleClosedKeydown(event: KeyboardEvent): void {\r\n const keyCode = event.keyCode;\r\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\r\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\r\n const manager = this._keyManager;\r\n\r\n if ((!manager.isTyping() && isOpenKey && !hasModifierKey(event)) || ((this.multiple || event.altKey) && isArrowKey)) {\r\n event.preventDefault();\r\n this.open();\r\n } else if (!this.multiple) {\r\n const previouslySelectedOption = this.selected;\r\n manager.onKeydown(event);\r\n const selectedOption = this.selected;\r\n // Example: announce selection change to screen readers if needed.\r\n }\r\n }\r\n\r\n /** When open: navigate/select, Ctrl+A (multiple), Alt+Arrow closes. */\r\n private _handleOpenKeydown(event: KeyboardEvent): void {\r\n const manager = this._keyManager;\r\n const keyCode = event.keyCode;\r\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\r\n const isTyping = manager.isTyping();\r\n\r\n if (isArrowKey && event.altKey) {\r\n event.preventDefault();\r\n this.close();\r\n } else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem && !hasModifierKey(event)) {\r\n event.preventDefault();\r\n manager.activeItem._selectViaInteraction();\r\n } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\r\n event.preventDefault();\r\n const hasDeselectedOptions = this.options.some((opt) => !opt.disabled && !opt.selected);\r\n this.options.forEach((option) => {\r\n if (!option.disabled) hasDeselectedOptions ? option.select() : option.deselect();\r\n });\r\n } else {\r\n const previouslyFocusedIndex = manager.activeItemIndex;\r\n manager.onKeydown(event);\r\n\r\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {\r\n manager.activeItem._selectViaInteraction();\r\n }\r\n }\r\n }\r\n\r\n /** For overlay container keydown (ESC closes). */\r\n protected _handleOverlayKeydown(event: KeyboardEvent): void {\r\n if (event.keyCode === ESCAPE && !hasModifierKey(event)) {\r\n event.preventDefault();\r\n this.close();\r\n }\r\n }\r\n\r\n // ───────────────────────────── Selection & value sync ─────────────────────────────\r\n\r\n /** Assign value and synchronize selection from external model. */\r\n private _assignValue(newValue: any | any[]): boolean {\r\n if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\r\n if (this.options) {\r\n this._setSelectionByValue(newValue);\r\n }\r\n this._value = newValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Compute overlay width from host bounding box. */\r\n private _getOverlayWidth(): string | number {\r\n return this._elementRef.nativeElement.getBoundingClientRect().width;\r\n }\r\n\r\n /** Update selection based on a (possibly array) value. */\r\n private _setSelectionByValue(value: any | any[]): void {\r\n this.options.forEach((option) => option.setInactiveStyles());\r\n this._selectionModel.clear();\r\n\r\n if (this.multiple && value) {\r\n value.forEach((currentValue: any) => this._selectOptionByValue(currentValue));\r\n this._sortValues();\r\n } else {\r\n const correspondingOption = this._selectOptionByValue(value);\r\n if (correspondingOption) {\r\n this._keyManager.updateActiveItem(correspondingOption);\r\n } else if (!this.panelOpen) {\r\n this._keyManager.updateActiveItem(-1);\r\n }\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Find option that matches value (using compareWith) and select it. */\r\n private _selectOptionByValue(value: any): MDOption | undefined {\r\n const correspondingOption = this.options.find((option: MDOption) => {\r\n if (this._selectionModel.isSelected(option)) return false;\r\n try {\r\n return (option.value != null || this.canSelectNullableOptions) && this._compareWith(option.value, value);\r\n } catch (error) {\r\n if (typeof ngDevMode === 'undefined' || ngDevMode) console.warn(error);\r\n return false;\r\n }\r\n });\r\n\r\n if (correspondingOption) this._selectionModel.select(correspondingOption);\r\n return correspondingOption;\r\n }\r\n\r\n /** Move focus to host (useful after closing). */\r\n focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n }\r\n\r\n /** Default container click behavior: focus + open. */\r\n onContainerClick() {\r\n this.focus();\r\n this.open();\r\n }\r\n\r\n /** Initialize selection from bound form control or internal value. */\r\n private _initializeSelection(): void {\r\n Promise.resolve().then(() => {\r\n if (this.ngControl) {\r\n this._value = this.ngControl.value;\r\n }\r\n this._setSelectionByValue(this._value);\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n /** Skip disabled options while panel is closed (for key manager). */\r\n private _skipPredicate = (option: MDOption) => {\r\n if (this.panelOpen) return false;\r\n return option.disabled;\r\n };\r\n\r\n /** Ensure a given option index is fully visible inside the panel. */\r\n _scrollOptionIntoView(index: number): void {\r\n const option = this.options.toArray()[index];\r\n if (!option) return;\r\n\r\n const panel: HTMLElement = this.panel.nativeElement;\r\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\r\n const element = option._getHostElement();\r\n\r\n if (index === 0 && labelCount === 1) {\r\n panel.scrollTop = 0;\r\n } else {\r\n panel.scrollTop = _getOptionScrollPosition(\r\n element.offsetTop,\r\n element.offsetHeight,\r\n panel.scrollTop,\r\n panel.offsetHeight\r\n );\r\n }\r\n }\r\n\r\n /** Wire option streams and handle user-driven selection/changes. */\r\n private _resetOptions(): void {\r\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\r\n\r\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe((event) => {\r\n this._onSelect(event.source, event.isUserInput);\r\n if (event.isUserInput && !this.multiple && this._panelOpen) {\r\n this.close();\r\n this.focus();\r\n }\r\n });\r\n\r\n merge(...this.options.map((option) => option._stateChanges))\r\n .pipe(takeUntil(changedOrDestroyed))\r\n .subscribe(() => {\r\n this._changeDetectorRef.detectChanges();\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n /** Handle a single option's (de)selection and propagate changes. */\r\n private _onSelect(option: MDOption, isUserInput: boolean): void {\r\n const wasSelected = this._selectionModel.isSelected(option);\r\n\r\n if (option.value == null && !this._multiple) {\r\n option.deselect();\r\n this._selectionModel.clear();\r\n\r\n if (this.value != null) {\r\n this._propagateChanges(option.value);\r\n }\r\n } else {\r\n if (wasSelected !== option.selected) {\r\n option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\r\n }\r\n\r\n if (isUserInput) {\r\n this._keyManager.setActiveItem(option);\r\n }\r\n\r\n if (this.multiple) {\r\n this._sortValues();\r\n if (isUserInput) this.focus();\r\n }\r\n }\r\n\r\n if (wasSelected !== this._selectionModel.isSelected(option)) {\r\n this._propagateChanges();\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n /** Sort selected values using custom comparator or DOM order. */\r\n private _sortValues() {\r\n if (!this.multiple) return;\r\n\r\n const options = this.options.toArray();\r\n this._selectionModel.sort((a, b) => {\r\n return this.sortComparator ? this.sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\r\n });\r\n this.stateChanges.next();\r\n }\r\n\r\n /** Build `SelectChange` payload. */\r\n private _getChangeEvent(value: any) {\r\n return new SelectChange(this, value);\r\n }\r\n\r\n /** Emit valueChange, call CVA onChange, emit selectionChange, mark for check. */\r\n private _propagateChanges(fallbackValue?: any): void {\r\n let valueToEmit: any;\r\n\r\n if (this.multiple) {\r\n valueToEmit = (this.selected as MDOption[]).map((option) => option.value);\r\n } else {\r\n valueToEmit = this.selected ? (this.selected as MDOption).value : fallbackValue;\r\n }\r\n\r\n this._value = valueToEmit;\r\n this.valueChange.emit(valueToEmit);\r\n this._onChange(valueToEmit);\r\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Initialize keyboard manager for navigation, typeahead, and tabOut. */\r\n private _initKeyManager() {\r\n this._keyManager = new ActiveDescendantKeyManager<MDOption>(this.options)\r\n .withTypeAhead(200)\r\n .withVerticalOrientation()\r\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\r\n .withHomeAndEnd()\r\n .withPageUpDown()\r\n .withAllowedModifierKeys(['shiftKey'])\r\n .skipPredicate(this._skipPredicate);\r\n\r\n this._keyManager.tabOut.subscribe(() => {\r\n if (this.panelOpen) {\r\n if (!this.multiple && this._keyManager.activeItem) {\r\n this._keyManager.activeItem._selectViaInteraction();\r\n }\r\n this.focus();\r\n this.close();\r\n }\r\n });\r\n\r\n this._keyManager.change.subscribe(() => {\r\n if (this._panelOpen && this.panel) {\r\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\r\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\r\n this._keyManager.activeItem._selectViaInteraction();\r\n }\r\n });\r\n }\r\n\r\n /** `aria-activedescendant` points to the active option when panel is open. */\r\n _getAriaActiveDescendant(): string | null {\r\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\r\n return this._keyManager.activeItem.id;\r\n }\r\n return null;\r\n }\r\n\r\n /** Focus-in handler: set focused state (unless disabled). */\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this._focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Focus-out handler: mark touched when closed; cancel typeahead. */\r\n _onBlur() {\r\n this._focused = false;\r\n this._keyManager?.cancelTypeahead();\r\n\r\n if (!this.disabled && !this.panelOpen) {\r\n this._onTouched();\r\n this._changeDetectorRef.markForCheck();\r\n this.stateChanges.next();\r\n }\r\n }\r\n}\r\n\r\n/** Optional directive to project a custom trigger area for the select. */\r\n@Directive({\r\n selector: 'select-trigger',\r\n providers: [{ provide: MD_SELECT_TRIGGER, useExisting: MDSelectTrigger }],\r\n standalone: false,\r\n})\r\nexport class MDSelectTrigger {}\r\n","<div cdk-overlay-origin\r\n class=\"mdc-select-trigger\"\r\n (click)=\"open()\"\r\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\r\n #trigger>\r\n\r\n <div class=\"mdc-select-value\" [attr.id]=\"_valueId\">\r\n @if (empty) {\r\n <span class=\"mdc-select-placeholder mdc-select-min-line\">{{placeholder}}</span>\r\n } @else {\r\n <span class=\"mdc-select-value-text\">\r\n @if (customTrigger) {\r\n <ng-content select=\"select-trigger\"></ng-content>\r\n } @else {\r\n <span class=\"mdc-select-min-line\">{{triggerValue}}</span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"mdc-select-arrow-wrapper\">\r\n <div class=\"mdc-select-arrow\">\r\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\r\n <path d=\"M7 10l5 5 5-5z\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template\r\n cdk-connected-overlay\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayDisableClose]=\"true\"\r\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"fallbackOverlayOrigin\"\r\n [cdkConnectedOverlayPositions]=\"_positions\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n (detach)=\"close()\"\r\n (backdropClick)=\"close()\"\r\n (overlayKeydown)=\"_handleOverlayKeydown($event)\"\r\n>\r\n <div\r\n #panel\r\n role=\"listbox\"\r\n tabindex=\"-1\"\r\n class=\"mdc-select-panel mdc-menu-surface select-panel-animations-enabled mdc-menu-surface--open\"\r\n [attr.id]=\"id + '-panel'\"\r\n [attr.aria-multiselectable]=\"multiple\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [ngClass]=\"panelClass\"\r\n (keydown)=\"_handleKeydown($event)\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>","import { Component, ViewEncapsulation, Input, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n/** Visual states for the pseudo checkbox glyph. */\r\nexport type PseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'pseudo-checkbox',\r\n styleUrl: 'pseudo-checkbox.scss',\r\n template: '',\r\n host: {\r\n class: 'pseudo-checkbox',\r\n '[class.pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\r\n '[class.pseudo-checkbox-checked]': 'state === \"checked\"',\r\n '[class.pseudo-checkbox-disabled]': 'disabled',\r\n '[class.pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\r\n '[class.pseudo-checkbox-full]': 'appearance === \"full\"',\r\n },\r\n standalone: true,\r\n})\r\n/**\r\n * Minimal visual-only checkbox glyph.\r\n *\r\n * @remarks\r\n * - This component renders no interactive behavior by itself; it’s intended as a purely\r\n * presentational indicator (e.g., inside list options).\r\n * - Host classes reflect the current `state`, `disabled`, and `appearance` values.\r\n */\r\nexport class PseudoCheckbox {\r\n /**\r\n * Visual state of the glyph.\r\n * Affects host classes only; no behavior is implied.\r\n * @default 'checked'\r\n */\r\n @Input() state: PseudoCheckboxState = 'checked';\r\n\r\n /**\r\n * Applies a disabled look.\r\n * Parent/consumer is responsible for actual interactivity.\r\n * @default false\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * Size/style variant of the glyph.\r\n * - `'minimal'` — compact indicator\r\n * - `'full'` — standard checkbox visuals\r\n * @default 'full'\r\n */\r\n @Input() appearance: 'minimal' | 'full' = 'full';\r\n\r\n constructor() {\r\n // Example side effect: log the initial state after a tick.\r\n // (Kept as-is; remove in production if not needed.)\r\n setTimeout(() => {\r\n console.log(this.state);\r\n }, 1000);\r\n }\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n QueryList,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { _IdGenerator, FocusOrigin } from '@angular/cdk/a11y';\r\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\r\nimport { Subject } from 'rxjs';\r\nimport { MDOptionGroup } from './option-group';\r\nimport { MDSelect } from './select';\r\nimport { PseudoCheckbox } from './pseudo-checkbox';\r\n\r\n/**\r\n * Event payload emitted when an option's selection state changes.\r\n *\r\n * @template T Model value type.\r\n */\r\nexport class MDOptionSelectionChange<T = any> {\r\n constructor(public source: MDOption<T>, public isUserInput = false) {}\r\n}\r\n\r\n@Component({\r\n selector: 'md-option',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './option.html',\r\n styleUrls: ['./option.scss'],\r\n host: {\r\n role: 'option',\r\n '[class.mdc-list-item--selected]': 'selected',\r\n '[class.mdc-option-multiple]': 'multiple',\r\n '[class.mdc-option-active]': 'active',\r\n '[class.mdc-list-item--disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[attr.aria-selected]': 'selected',\r\n '[attr.aria-disabled]': 'disabled.toString()',\r\n '(click)': '_selectViaInteraction()',\r\n '(keydown)': '_handleKeydown($event)',\r\n class: 'mdc-option mdc-list-item',\r\n },\r\n standalone: true,\r\n imports: [PseudoCheckbox],\r\n})\r\n/**\r\n * Single selectable option used inside {@link MDSelect} and similar controls.\r\n *\r\n * @remarks\r\n * - Supports single and multiple selection modes (derived from parent select).\r\n * - Inherits disabled state from the nearest {@link MDOptionGroup}, if present.\r\n * - Emits {@link MDOption.onSelectionChange} on user/programmatic updates.\r\n */\r\nexport class MDOption<T = any> {\r\n /** Host element reference for focus & DOM access. */\r\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n /** Change detector for OnPush-friendly manual marks. */\r\n _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** Optional parent select to derive `multiple` and for coordination. */\r\n private _parent = inject<MDSelect>(MDSelect, { optional: true });\r\n\r\n /** Optional parent group to inherit disabled state. */\r\n group = inject<MDOptionGroup>(MDOptionGroup, { optional: true });\r\n\r\n /** Internal selection state. */\r\n private _selected = false;\r\n\r\n /** Internal active (highlighted) state used by typeahead/keyboard nav. */\r\n private _active = false;\r\n\r\n /** Model value associated with this option. */\r\n @Input() value: T;\r\n\r\n /** Unique id for the option (used by host/id bindings). */\r\n @Input() id: string = inject(_IdGenerator).getId('md-option-');\r\n\r\n /**\r\n * Disabled state: `true` if the group is disabled OR the individual disabled signal is `true`.\r\n * Group-level disabled takes precedence and is observed reactively.\r\n */\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n return (this.group && this.group.disabled) || this._disabled();\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled.set(value);\r\n }\r\n\r\n /** Internal reactive flag for individual disabled state. */\r\n private _disabled = signal(false);\r\n\r\n /** Whether the parent select is in multi-selection mode. */\r\n get multiple() {\r\n return this._parent && this._parent.multiple;\r\n }\r\n\r\n /** Public read-only selection flag. */\r\n get selected(): boolean {\r\n return this._selected;\r\n }\r\n\r\n /** Emits whenever selection state changes (user or programmatic). */\r\n @Output() readonly onSelectionChange = new EventEmitter<MDOptionSelectionChange<T>>();\r\n\r\n /**\r\n * Reference to the visible text node inside option.\r\n * Used to compute {@link viewValue} / {@link getLabel}.\r\n */\r\n @ViewChild('text', { static: true }) _text: ElementRef<HTMLElement> | undefined;\r\n\r\n /** Stream used by parent components to observe state changes. */\r\n readonly _stateChanges = new Subject<void>();\r\n\r\n constructor() {}\r\n\r\n /** Whether this option is currently \"active\" (keyboard highlight). */\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n /**\r\n * Select this option programmatically.\r\n * @param emitEvent When `true` (default), emits {@link onSelectionChange}.\r\n */\r\n select(emitEvent = true): void {\r\n if (!this._selected) {\r\n this._selected = true;\r\n this._changeDetectorRef.markForCheck();\r\n\r\n if (emitEvent) {\r\n this._emitSelectionChangeEvent();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handle keyboard selection: `ENTER`/`SPACE` toggles selection\r\n * when no modifier keys are pressed.\r\n */\r\n _handleKeydown(event: KeyboardEvent): void {\r\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\r\n this._selectViaInteraction();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Toggle/select via click or keyboard; respects disabled and multiple modes.\r\n * Marks for check and emits user-input-flavored selection event.\r\n */\r\n _selectViaInteraction(): void {\r\n if (!this.disabled) {\r\n this._selected = this.multiple ? !this._selected : true;\r\n this._changeDetectorRef.markForCheck();\r\n this._emitSelectionChangeEvent(true);\r\n }\r\n }\r\n\r\n /**\r\n * Deselect this option programmatically.\r\n * @param emitEvent When `true` (default), emits {@link onSelectionChange}.\r\n */\r\n deselect(emitEvent = true): void {\r\n if (this._selected) {\r\n this._selected = false;\r\n this._changeDetectorRef.markForCheck();\r\n\r\n if (emitEvent) {\r\n this._emitSelectionChangeEvent();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Move focus to this option's host element.\r\n * @param _origin Optional {@link FocusOrigin} (not used by default).\r\n * @param options Standard {@link FocusOptions}.\r\n */\r\n focus(_origin?: FocusOrigin, options?: FocusOptions): void {\r\n const element = this._getHostElement();\r\n if (typeof element.focus === 'function') {\r\n element.focus(options);\r\n }\r\n // No change detection needed; focus is imperative.\r\n }\r\n\r\n /** Visible string representation of the option (trimmed text content). */\r\n get viewValue(): string {\r\n return (this._text?.nativeElement.textContent || '').trim();\r\n }\r\n\r\n /** Alias for {@link viewValue}; kept for API parity with other option components. */\r\n getLabel(): string {\r\n return this.viewValue;\r\n }\r\n\r\n /** Apply \"active\" visual styles (used by parent for keyboard navigation). */\r\n setActiveStyles(): void {\r\n if (!this._active) {\r\n this._active = true;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Remove \"active\" visual styles. */\r\n setInactiveStyles(): void {\r\n if (this._active) {\r\n this._active = false;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Return the underlying host `HTMLElement`. */\r\n _getHostElement(): HTMLElement {\r\n return this._element.nativeElement;\r\n }\r\n\r\n /**\r\n * Emit selection change payload; optionally mark as user-driven.\r\n * @param isUserInput Whether the change originated from user interaction.\r\n */\r\n private _emitSelectionChangeEvent(isUserInput = false): void {\r\n this.onSelectionChange.emit(new MDOptionSelectionChange<T>(this, isUserInput));\r\n }\r\n}\r\n\r\n/**\r\n * Count how many group labels appear before a given option index.\r\n * Useful for computing aria-posinset / active-descendant offsets when groups are present.\r\n *\r\n * @param optionIndex Index of the target option among all rendered options.\r\n * @param options `QueryList` of all `MDOption` items (in render order).\r\n * @param optionGroups `QueryList` of `MDOptionGroup` (in render order).\r\n * @returns Number of group headers preceding the option.\r\n */\r\nexport function _countGroupLabelsBeforeOption(\r\n optionIndex: number,\r\n options: QueryList<MDOption>,\r\n optionGroups: QueryList<MDOptionGroup>\r\n): number {\r\n if (optionGroups.length) {\r\n let optionsArray = options.toArray();\r\n let groups = optionGroups.toArray();\r\n let groupCounter = 0;\r\n\r\n for (let i = 0; i < optionIndex + 1; i++) {\r\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\r\n groupCounter++;\r\n }\r\n }\r\n return groupCounter;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Compute the `scrollTop` needed to bring an option fully into view inside a panel.\r\n *\r\n * @param optionOffset Distance (px) from top of panel to the top of the option.\r\n * @param optionHeight Height of the option (px).\r\n * @param currentScrollPosition Current `scrollTop` of the panel.\r\n * @param panelHeight Visible height of the panel (px).\r\n * @returns Desired `scrollTop` to ensure full visibility (or current if already visible).\r\n */\r\nexport function _getOptionScrollPosition(\r\n optionOffset: number,\r\n optionHeight: number,\r\n currentScrollPosition: number,\r\n panelHeight: number\r\n): number {\r\n if (optionOffset < currentScrollPosition) {\r\n return optionOffset;\r\n }\r\n\r\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\r\n return Math.max(0, optionOffset - panelHeight + optionHeight);\r\n }\r\n\r\n return currentScrollPosition;\r\n}\r\n","@if (multiple) {\r\n<pseudo-checkbox\r\n class=\"mdc-option-pseudo-checkbox\"\r\n [disabled]=\"disabled\"\r\n [state]=\"selected ? 'checked' : 'unchecked'\"\r\n aria-hidden=\"true\"\r\n></pseudo-checkbox>\r\n}\r\n\r\n<ng-content select=\"icon\"></ng-content>\r\n\r\n<span class=\"mdc-list-item__primary-text\" #text><ng-content></ng-content></span>\r\n\r\n@if (!multiple && selected) {\r\n<pseudo-checkbox\r\n class=\"mdc-option-pseudo-checkbox\"\r\n [disabled]=\"disabled\"\r\n state=\"checked\"\r\n aria-hidden=\"true\"\r\n appearance=\"minimal\"\r\n></pseudo-checkbox>\r\n}","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MDSelect } from './select';\r\nimport { MDOption } from './option';\r\nimport { MDOptionGroup } from './option-group';\r\nimport { PseudoCheckbox } from './pseudo-checkbox';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, OverlayModule, MDOption, MDOptionGroup, MDSelect, PseudoCheckbox],\r\n exports: [MDOption, MDOptionGroup, MDSelect],\r\n})\r\nexport class MDSelectModule {}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n computed,\r\n Directive,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n@Directive({ standalone: true })\r\n/**\r\n * Base class for editable form-like components using Angular Signals and CVA.\r\n *\r\n * @remarks\r\n * - Implements `ControlValueAccessor` so children participate in Angular Forms.\r\n * - Exposes a signal-based `modelValue` and signalized inputs for UI state.\r\n * - Provides helpers for disabled-state handling and change detection.\r\n *\r\n * @example\r\n * ```ts\r\n * @Component({...})\r\n * export class MyToggle extends BaseEditableHolder {\r\n * // call this.writeModelValue(newValue) on user action\r\n * // and this.onModelChange(this.modelValue()) to propagate to the form.\r\n * }\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class BaseEditableHolder implements ControlValueAccessor {\r\n /** Change detector used by children to mark for check after updates. */\r\n cd = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * Reactive internal value for the control (Signal).\r\n * @default undefined\r\n */\r\n modelValue = signal<string | string[] | any | undefined>(undefined);\r\n\r\n /**\r\n * Optional \"required\" flag as a signalized input.\r\n * @remarks Value is transformed via `booleanAttribute`.\r\n */\r\n required = input(undefined, { transform: booleanAttribute });\r\n\r\n /**\r\n * Optional \"invalid\" flag as a signalized input (used for UI state).\r\n * @remarks Value is transformed via `booleanAttribute`.\r\n */\r\n invalid = input(undefined, { transform: booleanAttribute });\r\n\r\n /**\r\n * Disabled input as a signal (explicit/external).\r\n * @remarks Value is transformed via `booleanAttribute`.\r\n */\r\n disabled = input(undefined, { transform: booleanAttribute });\r\n\r\n /** Optional control name (useful for forms & a11y attributes). */\r\n name = input<string | undefined>();\r\n\r\n /**\r\n * Internal disabled state set via CVA's `setDisabledState`.\r\n * @default false\r\n * @internal\r\n */\r\n _disabled = signal<boolean>(false);\r\n\r\n /**\r\n * Effective disabled state:\r\n * `true` if either the input `disabled()` is truthy OR `setDisabledState(true)` was called.\r\n */\r\n $disabled = computed(() => {\r\n return this.disabled() || this._disabled();\r\n });\r\n\r\n /** CVA onChange callback (assigned by Angular Forms). */\r\n onModelChange: Function = () => {};\r\n\r\n /** CVA onTouched callback (assigned by Angular Forms). */\r\n onModelTouched: Function = () => {};\r\n\r\n /**\r\n * Programmatically set the internal disabled state (used by `setDisabledState`).\r\n * @param value New disabled state.\r\n */\r\n writeDisabledState(value: boolean) {\r\n this._disabled.set(value);\r\n }\r\n\r\n /**\r\n * Overridable hook invoked by `writeValue`.\r\n * Child components can coerce or transform incoming values here.\r\n * Call `setModelValue(value)` to persist.\r\n *\r\n * @param value Incoming value from the external model.\r\n * @param setModelValue Callback to update the internal `modelValue`.\r\n * @protected\r\n */\r\n protected writeControlValue(value: any, setModelValue?: (value: any) => void) {}\r\n\r\n /**\r\n * CVA: writes an external value into the control.\r\n * Delegates to {@link writeControlValue} so children can customize behavior.\r\n *\r\n * @param value Value coming from the Angular Forms model.\r\n */\r\n writeValue(value: any) {\r\n this.writeControlValue(value, this.writeModelValue.bind(this));\r\n }\r\n\r\n /**\r\n * Updates the internal value signal (`modelValue`) from the component itself\r\n * (e.g., on user input). This does **not** notify the Forms API by itself.\r\n * Invoke {@link onModelChange} after this to propagate when appropriate.\r\n *\r\n * @param value New internal value to set.\r\n */\r\n writeModelValue(value: any) {\r\n this.modelValue.set(value);\r\n }\r\n\r\n /**\r\n * CVA: registers the callback to propagate value changes to Angular Forms.\r\n * @param fn Callback invoked when the control's value changes.\r\n */\r\n registerOnChange(fn: Function) {\r\n this.onModelChange = fn;\r\n }\r\n\r\n /**\r\n * CVA: registers the callback to mark the control as touched.\r\n * @param fn Callback invoked when the control is touched.\r\n */\r\n registerOnTouched(fn: Function) {\r\n this.onModelTouched = fn;\r\n }\r\n\r\n /**\r\n * CVA: enables/disables the control from the Forms API.\r\n * @param val `true` to disable, `false` to enable.\r\n */\r\n setDisabledState(val: boolean) {\r\n this.writeDisabledState(val);\r\n this.cd.markForCheck();\r\n }\r\n}\r\n","import {\r\n forwardRef,\r\n Component,\r\n Input,\r\n OnInit,\r\n ViewEncapsulation,\r\n Output,\r\n OnDestroy,\r\n inject,\r\n HostListener,\r\n booleanAttribute,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n numberAttribute,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _IdGenerator } from '@angular/cdk/a11y';\r\nimport { BaseEditableHolder } from './base-editor-helper';\r\n\r\n@Component({\r\n selector: 'md-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MDSwitch),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: MDSwitch,\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n '[class.toggleswitch-checked]': 'checked()',\r\n '[class.disabled]': '$disabled()',\r\n '[class.invalid]': 'invalid()',\r\n },\r\n})\r\n/**\r\n * Toggle switch compatible with Angular Forms.\r\n *\r\n * @remarks\r\n * - Implements `ControlValueAccessor` (works with Reactive Forms and `ngModel`).\r\n * - Emits {@link MDSwitch.onChange | onChange} only for **user-driven** interactions.\r\n * For programmatic updates, rely on `ngModelChange` or form `valueChanges`.\r\n *\r\n * @example\r\n * ```html\r\n * <md-switch [(ngModel)]=\"enabled\" (onChange)=\"log($event)\"></md-switch>\r\n * ```\r\n *\r\n * @public\r\n * @fires MDSwitch#onChange\r\n */\r\nexport class MDSwitch extends BaseEditableHolder implements OnInit, OnDestroy, ControlValueAccessor {\r\n /**\r\n * Backing unique id used as a default for {@link id}.\r\n * @internal\r\n */\r\n private _uniqueId: string;\r\n\r\n /**\r\n * Host element id. Can be overridden by the consumer.\r\n * @default auto-generated value like `\"slide-toggle-...\"`\r\n */\r\n @Input() id: string;\r\n\r\n /**\r\n * Keyboard tab order for the internal input.\r\n * @remarks Value is transformed via `numberAttribute`.\r\n */\r\n @Input({ transform: numberAttribute }) tabindex: number | undefined;\r\n\r\n /**\r\n * Read-only mode: prevents user interaction while still allowing focus.\r\n * @remarks Value is transformed via `booleanAttribute`.\r\n */\r\n @Input({ transform: booleanAttribute }) readonly: boolean | undefined;\r\n\r\n /**\r\n * Host click handler.\r\n *\r\n * @param event Browser `MouseEvent`.\r\n * @remarks Delegates to {@link _handleClick}.\r\n * @internal\r\n */\r\n @HostListener('click', ['$event'])\r\n onHostClick(event: MouseEvent) {\r\n this._handleClick(event);\r\n }\r\n\r\n /**\r\n * Emits when the user toggles the switch via UI interaction.\r\n *\r\n * @example\r\n * ```html\r\n * <md-switch (onChange)=\"handleChange($event)\"></md-switch>\r\n * ```\r\n */\r\n @Output() onChange: EventEmitter<ToggleSwitchChangeEvent> = new EventEmitter<ToggleSwitchChangeEvent>();\r\n\r\n /**\r\n * Template reference to the internal input element (for focus management).\r\n * @internal\r\n */\r\n @ViewChild('input') input!: ElementRef;\r\n\r\n /**\r\n * Focus ring helper for template/styles.\r\n * @internal\r\n */\r\n focused: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n this.id = this._uniqueId = inject(_IdGenerator).getId('slide-toggle-');\r\n }\r\n\r\n /** Lifecycle: initialization (reserved for future use). */\r\n ngOnInit(): void {}\r\n\r\n /**\r\n * Synchronous validator hook (provided via `NG_VALIDATORS`).\r\n * @remarks Currently a stub.\r\n */\r\n validate() {}\r\n\r\n /** Lifecycle: teardown (reserved for future use). */\r\n ngOnDestroy(): void {}\r\n\r\n /**\r\n * ControlValueAccessor: write an external value into the component.\r\n *\r\n * @param value Value coming from the form model.\r\n * @param setModelValue Callback to update the base class model value.\r\n * @remarks Calls `markForCheck` to ensure change detection runs.\r\n */\r\n override writeControlValue(value: any, setModelValue: (value: any) => void): void {\r\n setModelValue(value);\r\n this.cd.markForCheck();\r\n }\r\n\r\n /** Focus-in handler (called from the template). */\r\n onFocus() {\r\n this.focused = true;\r\n }\r\n\r\n /**\r\n * Focus-out handler (called from the template).\r\n * @remarks Triggers `onModelTouched()` for forms.\r\n */\r\n onBlur() {\r\n this.focused = false;\r\n this.onModelTouched();\r\n }\r\n\r\n /**\r\n * Centralized click logic:\r\n * - toggles the model via `BaseEditableHolder`;\r\n * - calls `onModelChange()` for the form;\r\n * - emits {@link onChange} with details;\r\n * - returns focus to the input for accessible keyboard flow.\r\n *\r\n * @param event Original browser `Event`.\r\n * @internal\r\n */\r\n _handleClick(event: Event) {\r\n if (!this.$disabled() && !this.readonly) {\r\n this.writeModelValue(!this.modelValue());\r\n this.onModelChange(this.modelValue());\r\n this.onChange.emit({\r\n originalEvent: event,\r\n checked: this.modelValue(),\r\n });\r\n\r\n this.input.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Convenience getter for host class binding.\r\n * @returns Current checked state.\r\n */\r\n checked() {\r\n return this.modelValue();\r\n }\r\n}\r\n\r\n/**\r\n * Event emitted by {@link MDSwitch} on user-initiated change.\r\n */\r\nexport interface ToggleSwitchChangeEvent {\r\n /** Original browser event. */\r\n originalEvent: Event;\r\n /** New checked state. */\r\n checked: boolean;\r\n}\r\n","<input\r\n #input\r\n class=\"toggleswitch-input\"\r\n [checked]=\"checked()\"\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n [attr.required]=\"required() ? '' : undefined\"\r\n [attr.disabled]=\"$disabled() ? '' : undefined\"\r\n [attr.aria-checked]=\"checked()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n/>\r\n<div class=\"toggleswitch-slider\">\r\n <div class=\"toggleswitch-handle\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MDSwitch } from './switch.component';\r\n\r\n@NgModule({\r\n exports: [MDSwitch],\r\n declarations: [MDSwitch],\r\n imports: [CommonModule],\r\n})\r\nexport class MDSwitchModule {}\r\n","import { FocusKeyManager, FocusableOption } from '@angular/cdk/a11y';\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { ViewportRuler } from '@angular/cdk/scrolling';\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n afterNextRender,\r\n booleanAttribute,\r\n inject,\r\n numberAttribute,\r\n} from '@angular/core';\r\nimport { EMPTY, Observable, Observer, Subject, merge, of as observableOf, timer } from 'rxjs';\r\nimport { debounceTime, filter, skip, startWith, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nconst passiveEventListenerOptions = { passive: true };\r\n\r\n/** Direction to scroll the header when paginating. */\r\nexport type ScrollDirection = 'after' | 'before';\r\n\r\n/** Delay (ms) before auto-scrolling kicks in on press-and-hold. */\r\nconst HEADER_SCROLL_DELAY = 650;\r\n/** Interval (ms) for repeated scrolling while holding the paginator. */\r\nconst HEADER_SCROLL_INTERVAL = 100;\r\n\r\n/**\r\n * Contract for focusable tab header items used by the header.\r\n * Must expose an `elementRef` for measurement/positioning.\r\n */\r\nexport type PaginatedTabHeaderItem = FocusableOption & { elementRef: ElementRef };\r\n\r\n@Directive()\r\n/**\r\n * Base class for a horizontally scrollable (paginated) tab header.\r\n *\r\n * @remarks\r\n * - Manages keyboard navigation via `FocusKeyManager` (arrows/home/end).\r\n * - Handles ink bar alignment and scroll-to-visible for the selected tab.\r\n * - Supports RTL/LTR layouts and responsive resizing.\r\n *\r\n * Subclasses provide concrete template references (tab list elements, paginators, items)\r\n * and implement `_itemSelected` to act on keyboard selection (Enter/Space).\r\n *\r\n * @example Handling keyboard selection in a subclass\r\n * ```ts\r\n * protected _itemSelected(event: KeyboardEvent) {\r\n * this.selectFocusedIndex.emit(this.focusIndex);\r\n * }\r\n * ```\r\n */\r\nexport abstract class PaginatedTabHeader\r\n implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy\r\n{\r\n /** Root host element (the header wrapper). */\r\n protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n /** For OnPush marking when values change. */\r\n protected _changeDetectorRef = inject(ChangeDetectorRef);\r\n /** Viewport ruler for resize/scrollbar metrics. */\r\n private _viewportRuler = inject(ViewportRuler);\r\n /** Optional RTL service to flip layout. */\r\n private _dir = inject(Directionality, { optional: true });\r\n /** For running timers/listeners outside Angular. */\r\n private _ngZone = inject(NgZone);\r\n /** Platform detection (legacy engines). */\r\n private _platform = inject(Platform);\r\n /** Efficient ResizeObserver sharing. */\r\n private _sharedResizeObserver = inject(SharedResizeObserver);\r\n /** Injector for `afterNextRender` scheduling. */\r\n private _injector = inject(Injector);\r\n /** Renderer for native event listeners & styles. */\r\n private _renderer = inject(Renderer2);\r\n\r\n /** Cleanup callbacks for host-level listeners. */\r\n private _eventCleanups: (() => void)[];\r\n\r\n // ---- Abstract element/item references provided by subclasses ----\r\n\r\n /** List of focusable items (tab labels). */\r\n abstract _items: QueryList<PaginatedTabHeaderItem>;\r\n /** Ink bar API for alignment/hide. */\r\n abstract _inkBar: { hide: () => void; alignToElement: (element: HTMLElement) => void };\r\n /** Container that clips the scrollable tab list. */\r\n abstract _tabListContainer: ElementRef<HTMLElement>;\r\n /** The horizontally translated list element. */\r\n abstract _tabList: ElementRef<HTMLElement>;\r\n /** Inner list wrapper used for measurements. */\r\n abstract _tabListInner: ElementRef<HTMLElement>;\r\n /** Next paginator button element. */\r\n abstract _nextPaginator: ElementRef<HTMLElement>;\r\n /** Previous paginator button element. */\r\n abstract _previousPaginator: ElementRef<HTMLElement>;\r\n\r\n // ---- State ----\r\n\r\n /** Current horizontal scroll translation in px (LTR positive moves content left). */\r\n private _scrollDistance = 0;\r\n /** Flag to know when selectedIndex changed between content checks. */\r\n private _selectedIndexChanged = false;\r\n /** Teardown notifier for streams. */\r\n protected readonly _destroyed = new Subject<void>();\r\n /** Whether to render/show pagination controls. */\r\n _showPaginationControls = false;\r\n /** Disable \"scroll after\" paginator. */\r\n _disableScrollAfter = true;\r\n /** Disable \"scroll before\" paginator. */\r\n _disableScrollBefore = true;\r\n /** Cached count of tab labels to detect additions/removals. */\r\n private _tabLabelCount: number;\r\n /** Marker to apply pending scroll distance change to DOM. */\r\n private _scrollDistanceChanged: boolean;\r\n /** Keyboard manager for roving focus. */\r\n protected _keyManager: FocusKeyManager<PaginatedTabHeaderItem> | undefined;\r\n /** Used to detect text-content changes affecting layout. */\r\n private _currentTextContent: string;\r\n /** Emits when auto-scrolling should stop (mouseleave or end). */\r\n private _stopScrolling = new Subject<void>();\r\n\r\n // ---- Inputs/Outputs ----\r\n\r\n /**\r\n * Disable pagination and force-fit all tabs (no scroll).\r\n * @default false\r\n */\r\n @Input({ transform: booleanAttribute })\r\n disablePagination: boolean = false;\r\n\r\n /**\r\n * Currently selected tab index (drives ink bar & scroll-to-visible).\r\n */\r\n @Input({ transform: numberAttribute })\r\n get selectedIndex(): number {\r\n return this._selectedIndex;\r\n }\r\n set selectedIndex(v: number) {\r\n const value = isNaN(v) ? 0 : v;\r\n if (this._selectedIndex != value) {\r\n this._selectedIndexChanged = true;\r\n this._selectedIndex = value;\r\n if (this._keyManager) {\r\n this._keyManager.updateActiveItem(value);\r\n }\r\n }\r\n }\r\n private _selectedIndex: number = 0;\r\n\r\n /**\r\n * Emits requested selection when user presses Enter/Space on a focused tab.\r\n * Consumers typically update `selectedIndex` in response.\r\n */\r\n @Output() readonly selectFocusedIndex: EventEmitter<number> = new EventEmitter<number>();\r\n /** Emits when focus moves to a different tab header item. */\r\n @Output() readonly indexFocused: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n constructor() {\r\n // Host-level listeners registered outside Angular for performance.\r\n this._eventCleanups = this._ngZone.runOutsideAngular(() => [\r\n this._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this._stopInterval()),\r\n ]);\r\n }\r\n\r\n /**\r\n * Subclass must implement: what happens when user \"selects\"\r\n * the focused item via keyboard (Enter/Space).\r\n */\r\n protected abstract _itemSelected(event: KeyboardEvent): void;\r\n\r\n /** Lifecycle: attach touch handlers for press-and-hold scrolling. */\r\n ngAfterViewInit() {\r\n this._eventCleanups.push(\r\n this._renderer.listen(\r\n this._previousPaginator.nativeElement,\r\n 'touchstart',\r\n () => this._handlePaginatorPress('before'),\r\n passiveEventListenerOptions\r\n ),\r\n this._renderer.listen(\r\n this._nextPaginator.nativeElement,\r\n 'touchstart',\r\n () => this._handlePaginatorPress('after'),\r\n passiveEventListenerOptions\r\n )\r\n );\r\n }\r\n\r\n /** Lifecycle: set up keyboard manager, observers and initial alignment. */\r\n ngAfterContentInit() {\r\n const dirChange = this._dir ? this._dir.change : observableOf('ltr');\r\n const resize = this._sharedResizeObserver\r\n .observe(this._elementRef.nativeElement)\r\n .pipe(debounceTime(32), takeUntil(this._destroyed));\r\n const viewportResize = this._viewportRuler.change(150).pipe(takeUntil(this._destroyed));\r\n const realign = () => {\r\n this.updatePagination();\r\n this._alignInkBarToSelectedTab();\r\n };\r\n\r\n this._keyManager = new FocusKeyManager<PaginatedTabHeaderItem>(this._items)\r\n .withHorizontalOrientation(this._getLayoutDirection())\r\n .withHomeAndEnd()\r\n .withWrap()\r\n .skipPredicate(() => false);\r\n\r\n this._keyManager.updateActiveItem(Math.max(this._selectedIndex, 0));\r\n afterNextRender(realign, { injector: this._injector });\r\n\r\n merge(dirChange, viewportResize, resize, this._items.changes, this._itemsResized())\r\n .pipe(takeUntil(this._destroyed))\r\n .subscribe(() => {\r\n this._ngZone.run(() => {\r\n // Defer to allow DOM to settle (e.g., fonts, labels).\r\n Promise.resolve().then(() => {\r\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));\r\n realign();\r\n });\r\n });\r\n this._keyManager?.withHorizontalOrientation(this._getLayoutDirection());\r\n });\r\n\r\n this._keyManager.change.subscribe((newFocusIndex) => {\r\n this.indexFocused.emit(newFocusIndex);\r\n this._setTabFocus(newFocusIndex);\r\n });\r\n }\r\n\r\n /**\r\n * Observe when any header item has (re)measured to a non-zero size.\r\n * Helps re-evaluate pagination after lazy content/label changes.\r\n */\r\n private _itemsResized(): Observable<ResizeObserverEntry[]> {\r\n if (typeof ResizeObserver !== 'function') {\r\n return EMPTY;\r\n }\r\n return this._items.changes.pipe(\r\n startWith(this._items),\r\n switchMap(\r\n (tabItems: QueryList<PaginatedTabHeaderItem>) =>\r\n new Observable((observer: Observer<ResizeObserverEntry[]>) =>\r\n this._ngZone.runOutsideAngular(() => {\r\n const resizeObserver = new ResizeObserver((entries) => observer.next(entries));\r\n tabItems.forEach((item) => resizeObserver.observe(item.elementRef.nativeElement));\r\n return () => resizeObserver.disconnect();\r\n })\r\n )\r\n ),\r\n // Ignore the initial synchronous fire to avoid redundant realign.\r\n skip(1),\r\n filter((entries) => entries.some((e) => e.contentRect.width > 0 && e.contentRect.height > 0))\r\n );\r\n }\r\n\r\n /** Lifecycle: react to item count/selection/scroll changes and flush DOM updates. */\r\n ngAfterContentChecked(): void {\r\n if (this._tabLabelCount != this._items.length) {\r\n this.updatePagination();\r\n this._tabLabelCount = this._items.length;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n if (this._selectedIndexChanged) {\r\n this._scrollToLabel(this._selectedIndex);\r\n this._checkScrollingControls();\r\n this._alignInkBarToSelectedTab();\r\n this._selectedIndexChanged = false;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n if (this._scrollDistanceChanged) {\r\n this._updateTabScrollPosition();\r\n this._scrollDistanceChanged = false;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Lifecycle: teardown listeners/streams. */\r\n ngOnDestroy() {\r\n this._eventCleanups.forEach((cleanup) => cleanup());\r\n this._keyManager?.destroy();\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n this._stopScrolling.complete();\r\n }\r\n\r\n /**\r\n * Handle keydown on the header container.\r\n * Space/Enter select the focused tab; arrows/home/end are delegated to the key manager.\r\n */\r\n _handleKeydown(event: KeyboardEvent) {\r\n if (hasModifierKey(event)) {\r\n return;\r\n }\r\n switch (event.keyCode) {\r\n case ENTER:\r\n case SPACE:\r\n if (this.focusIndex !== this.selectedIndex) {\r\n const item = this._items.get(this.focusIndex);\r\n if (item && !item.disabled) {\r\n this.selectFocusedIndex.emit(this.focusIndex);\r\n this._itemSelected(event);\r\n }\r\n }\r\n break;\r\n default:\r\n this._keyManager?.onKeydown(event);\r\n }\r\n }\r\n\r\n /** Called when projected content text changes may affect layout/widths. */\r\n _onContentChanges() {\r\n const textContent = this._elementRef.nativeElement.textContent;\r\n if (textContent !== this._currentTextContent) {\r\n this._currentTextContent = textContent || '';\r\n this._ngZone.run(() => {\r\n this.updatePagination();\r\n this._alignInkBarToSelectedTab();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n /** Recompute pagination state and apply current scroll position. */\r\n updatePagination() {\r\n this._checkPaginationEnabled();\r\n this._checkScrollingControls();\r\n this._updateTabScrollPosition();\r\n }\r\n\r\n /** Index of the currently focused item in the key manager. */\r\n get focusIndex(): number {\r\n return this._keyManager ? this._keyManager.activeItemIndex! : 0;\r\n }\r\n set focusIndex(value: number) {\r\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\r\n return;\r\n }\r\n this._keyManager.setActiveItem(value);\r\n }\r\n\r\n /** Returns whether the given index is valid for the items list. */\r\n _isValidIndex(index: number): boolean {\r\n return this._items ? !!this._items.toArray()[index] : true;\r\n }\r\n\r\n /**\r\n * Moves focus to a given tab and ensures it is visible within the scroll container.\r\n * Also snaps container scroll to an edge (LTR/RTL) to avoid native scroll drift.\r\n */\r\n _setTabFocus(tabIndex: number) {\r\n if (this._showPaginationControls) {\r\n this._scrollToLabel(tabIndex);\r\n }\r\n if (this._items && this._items.length) {\r\n this._items.toArray()[tabIndex].focus();\r\n const containerEl = this._tabListContainer.nativeElement;\r\n const dir = this._getLayoutDirection();\r\n if (dir == 'ltr') {\r\n containerEl.scrollLeft = 0;\r\n } else {\r\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\r\n }\r\n }\r\n }\r\n\r\n /** Current layout direction derived from `Directionality`. */\r\n _getLayoutDirection(): Direction {\r\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n }\r\n\r\n /** Applies the current scroll transform to the tab list element. */\r\n _updateTabScrollPosition() {\r\n if (this.disablePagination) {\r\n return;\r\n }\r\n const scrollDistance = this.scrollDistance;\r\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\r\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\r\n // Legacy engines required to reset container scroll to avoid jitter.\r\n if (this._platform.TRIDENT || this._platform.EDGE) {\r\n this._tabListContainer.nativeElement.scrollLeft = 0;\r\n }\r\n }\r\n\r\n /** Current scroll distance (px). Setting it clamps to valid range and flags for DOM update. */\r\n get scrollDistance(): number {\r\n return this._scrollDistance;\r\n }\r\n set scrollDistance(value: number) {\r\n this._scrollTo(value);\r\n }\r\n\r\n /** Scrolls the header by one third of the visible width in the given direction. */\r\n _scrollHeader(direction: ScrollDirection) {\r\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\r\n const scrollAmount = ((direction == 'before' ? -1 : 1) * viewLength) / 3;\r\n return this._scrollTo(this._scrollDistance + scrollAmount);\r\n }\r\n\r\n /** Single-click paginator handler. */\r\n _handlePaginatorClick(direction: ScrollDirection) {\r\n this._stopInterval();\r\n this._scrollHeader(direction);\r\n }\r\n\r\n /**\r\n * Ensures the tab at `labelIndex` is fully visible within the scroll range.\r\n * Adjusts `scrollDistance` as needed based on LTR/RTL calculations.\r\n */\r\n _scrollToLabel(labelIndex: number) {\r\n if (this.disablePagination) {\r\n return;\r\n }\r\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\r\n if (!selectedLabel) {\r\n return;\r\n }\r\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\r\n const { offsetLeft, offsetWidth } = selectedLabel.elementRef.nativeElement;\r\n\r\n let labelBeforePos: number, labelAfterPos: number;\r\n if (this._getLayoutDirection() == 'ltr') {\r\n labelBeforePos = offsetLeft;\r\n labelAfterPos = labelBeforePos + offsetWidth;\r\n } else {\r\n labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;\r\n labelBeforePos = labelAfterPos - offsetWidth;\r\n }\r\n\r\n const beforeVisiblePos = this.scrollDistance;\r\n const afterVisiblePos = this.scrollDistance + viewLength;\r\n\r\n if (labelBeforePos < beforeVisiblePos) {\r\n this.scrollDistance -= beforeVisiblePos - labelBeforePos;\r\n } else if (labelAfterPos > afterVisiblePos) {\r\n this.scrollDistance += Math.min(labelAfterPos - afterVisiblePos, labelBeforePos - beforeVisiblePos);\r\n }\r\n }\r\n\r\n /** Evaluates whether pagination controls should be shown based on content width. */\r\n _checkPaginationEnabled() {\r\n if (this.disablePagination) {\r\n this._showPaginationControls = false;\r\n } else {\r\n const scrollWidth = this._tabListInner.nativeElement.scrollWidth;\r\n const containerWidth = this._elementRef.nativeElement.offsetWidth;\r\n const isEnabled = scrollWidth - containerWidth >= 5;\r\n if (!isEnabled) {\r\n this.scrollDistance = 0;\r\n }\r\n if (isEnabled !== this._showPaginationControls) {\r\n this._showPaginationControls = isEnabled;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n }\r\n\r\n /** Enables/disables paginator buttons based on current scroll position. */\r\n _checkScrollingControls() {\r\n if (this.disablePagination) {\r\n this._disableScrollAfter = this._disableScrollBefore = true;\r\n } else {\r\n this._disableScrollBefore = this.scrollDistance == 0;\r\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Maximum scrollable distance of the tab list (px). */\r\n _getMaxScrollDistance(): number {\r\n const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\r\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\r\n return lengthOfTabList - viewLength || 0;\r\n }\r\n\r\n /** Aligns the ink bar to the selected tab or hides it if no selection. */\r\n _alignInkBarToSelectedTab(): void {\r\n const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;\r\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\r\n if (selectedLabelWrapper) {\r\n this._inkBar.alignToElement(selectedLabelWrapper);\r\n } else {\r\n this._inkBar.hide();\r\n }\r\n }\r\n\r\n /** Stops any ongoing auto-scroll interval. */\r\n _stopInterval() {\r\n this._stopScrolling.next();\r\n }\r\n\r\n /**\r\n * Handles press-and-hold on a paginator button for continuous scrolling.\r\n * Uses a delay before repeating to avoid accidental long-press.\r\n */\r\n _handlePaginatorPress(direction: ScrollDirection, mouseEvent?: MouseEvent) {\r\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\r\n return;\r\n }\r\n this._stopInterval();\r\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\r\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\r\n .subscribe(() => {\r\n const { maxScrollDistance, distance } = this._scrollHeader(direction);\r\n if (distance === 0 || distance >= maxScrollDistance) {\r\n this._stopInterval();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clamps and applies a new scroll position.\r\n * @returns The max scroll distance and the clamped distance for convenience.\r\n */\r\n private _scrollTo(position: number) {\r\n if (this.disablePagination) {\r\n return { maxScrollDistance: 0, distance: 0 };\r\n }\r\n const maxScrollDistance = this._getMaxScrollDistance();\r\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\r\n this._scrollDistanceChanged = true;\r\n this._checkScrollingControls();\r\n return { maxScrollDistance, distance: this._scrollDistance };\r\n }\r\n}\r\n","import { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\r\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation,\r\n afterNextRender,\r\n inject,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Directive({ selector: '[mdTabBodyHost]' })\r\n/**\r\n * Portal host that attaches/detaches tab body content at the right times,\r\n * driven by the owning {@link MDTabBody}.\r\n *\r\n * @public\r\n */\r\nexport class TabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy {\r\n /** The owning tab body that drives attach/detach. */\r\n private _host = inject(MDTabBody);\r\n\r\n /** Subscription to the \"before centering\" notifier. */\r\n private _centeringSub = Subscription.EMPTY;\r\n /** Subscription to the \"after leaving center\" notifier. */\r\n private _leavingSub = Subscription.EMPTY;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n /** Wires up listeners to mount/unmount the portal at the right lifecycle moments. */\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this._centeringSub = this._host._beforeCentering\r\n .pipe(startWith(this._host._isCenterPosition()))\r\n .subscribe((isCentering: boolean) => {\r\n if (this._host._content && isCentering && !this.hasAttached()) {\r\n this.attach(this._host._content);\r\n }\r\n });\r\n\r\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\r\n if (!this._host.preserveContent) {\r\n this.detach();\r\n }\r\n });\r\n }\r\n\r\n /** Cleans up subscriptions and outlet resources. */\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this._centeringSub.unsubscribe();\r\n this._leavingSub.unsubscribe();\r\n }\r\n}\r\n\r\n/** Position of a tab body relative to the active (center) body. */\r\nexport type TabBodyPositionState = 'left' | 'center' | 'right';\r\n/** Direction from which the tab body originated (reserved for animations). */\r\nexport type TabBodyOriginState = 'left' | 'right';\r\n\r\n@Component({\r\n selector: 'md-tab-body',\r\n templateUrl: 'tab-body.html',\r\n styleUrl: 'tab-body.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n host: {\r\n class: 'mdc-tab-body',\r\n '[attr.inert]': '_position === \"center\" ? null : \"\"',\r\n },\r\n imports: [TabBodyPortal, CdkScrollable],\r\n})\r\n/**\r\n * A single tab body container that animates between left/center/right positions.\r\n * Handles lifecycle of its projected content via {@link TabBodyPortal}.\r\n *\r\n * @remarks\r\n * - Emits sizing and transition lifecycle events to coordinate with parent headers.\r\n * - Supports LTR/RTL via {@link Directionality}.\r\n * - Allows disabling animations by setting {@link animationDuration} to `\"0ms\"`/`\"0s\"`.\r\n *\r\n * @example Attaching content\r\n * ```html\r\n * <md-tab-body [content]=\"portal\" [preserveContent]=\"true\"></md-tab-body>\r\n * <ng-template cdk-portal #portal> ... </ng-template>\r\n * ```\r\n */\r\nexport class MDTabBody implements OnInit, OnDestroy {\r\n /** Host element reference for class toggles and measurement. */\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n /** Optional bidi service to map positions in RTL. */\r\n private _dir = inject(Directionality, { optional: true });\r\n /** For scheduling and transition fallback timers. */\r\n private _ngZone = inject(NgZone);\r\n /** Injector used by `afterNextRender` callbacks. */\r\n private _injector = inject(Injector);\r\n /** Renderer for passive DOM event bindings (transition events). */\r\n private _renderer = inject(Renderer2);\r\n\r\n /** Stored cleanup callbacks for event listeners. */\r\n private _eventCleanups?: (() => void)[];\r\n /** Whether OnInit finished; used to guard transition fallbacks. */\r\n private _initialized: boolean;\r\n /** Fallback timer to simulate transitions if needed. */\r\n private _fallbackTimer: ReturnType<typeof setTimeout>;\r\n /** Relative position index provided by parent: -1, 0, +1, ... */\r\n private _positionIndex: number;\r\n /** Directionality subscription to recompute when RTL changes. */\r\n private _dirChangeSubscription = Subscription.EMPTY;\r\n\r\n /** Current position state ('left' | 'center' | 'right'). */\r\n _position: TabBodyPositionState;\r\n /** Previous position state to know if we're entering/leaving center. */\r\n protected _previousPosition: TabBodyPositionState;\r\n\r\n /**\r\n * Emits the tab body's `clientHeight` when starting to center.\r\n * Useful for parent to resize the container.\r\n */\r\n @Output() readonly _onCentering: EventEmitter<number> = new EventEmitter<number>();\r\n /** Indicates whether we're about to center (`true`) or not (`false`). */\r\n @Output() readonly _beforeCentering: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n /** Fires after we've left the center position. */\r\n readonly _afterLeavingCenter: EventEmitter<void> = new EventEmitter<void>();\r\n /** Emits when the body has finished centering transition. */\r\n @Output() readonly _onCentered: EventEmitter<void> = new EventEmitter<void>(true);\r\n\r\n /** Outlet that actually attaches/detaches the `TemplatePortal`. */\r\n @ViewChild(TabBodyPortal) _portalHost: TabBodyPortal;\r\n /** Reference to the element with the transition (the inner content). */\r\n @ViewChild('content') _contentElement: ElementRef<HTMLElement> | undefined;\r\n\r\n /** The content portal to render for this tab body. */\r\n @Input('content') _content: TemplatePortal;\r\n /** Duration of CSS transitions (e.g., `\"500ms\"`, `\"0ms\"`). */\r\n @Input() animationDuration: string = '500ms';\r\n /** Whether to leave the content attached when not centered. */\r\n @Input() preserveContent: boolean = false;\r\n\r\n /**\r\n * Relative position index set by parent (negative = left, 0 = center, positive = right).\r\n * This setter maps index → position state considering layout direction (LTR/RTL).\r\n */\r\n @Input()\r\n set position(position: number) {\r\n this._positionIndex = position;\r\n this._computePositionAnimationState();\r\n }\r\n\r\n constructor() {\r\n if (this._dir) {\r\n const changeDetectorRef = inject(ChangeDetectorRef);\r\n this._dirChangeSubscription = this._dir.change.subscribe((dir: Direction) => {\r\n this._computePositionAnimationState(dir);\r\n changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Binds transition listeners and emits initial centering height if already centered.\r\n * Lifecycle: `OnInit`.\r\n */\r\n ngOnInit() {\r\n this._bindTransitionEvents();\r\n\r\n if (this._position === 'center') {\r\n this._setActiveClass(true);\r\n afterNextRender(() => this._onCentering.emit(this._elementRef.nativeElement.clientHeight), {\r\n injector: this._injector,\r\n });\r\n }\r\n\r\n this._initialized = true;\r\n }\r\n\r\n /** Removes listeners, timers, and subscriptions. */\r\n ngOnDestroy() {\r\n clearTimeout(this._fallbackTimer);\r\n this._eventCleanups?.forEach((cleanup) => cleanup());\r\n this._dirChangeSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Attaches listeners for CSS transition lifecycle.\r\n * These run outside Angular to avoid change detection storms.\r\n */\r\n private _bindTransitionEvents() {\r\n this._ngZone.runOutsideAngular(() => {\r\n const element = this._elementRef.nativeElement;\r\n\r\n const transitionDone = (event: TransitionEvent) => {\r\n if (event.target === this._contentElement?.nativeElement) {\r\n this._elementRef.nativeElement.classList.remove('tab-body-animating');\r\n if (event.type === 'transitionend') {\r\n this._transitionDone();\r\n }\r\n }\r\n };\r\n\r\n this._eventCleanups = [\r\n this._renderer.listen(element, 'transitionstart', (event: TransitionEvent) => {\r\n if (event.target === this._contentElement?.nativeElement) {\r\n this._elementRef.nativeElement.classList.add('tab-body-animating');\r\n this._transitionStarted();\r\n }\r\n }),\r\n this._renderer.listen(element, 'transitionend', transitionDone),\r\n this._renderer.listen(element, 'transitioncancel', transitionDone),\r\n ];\r\n });\r\n }\r\n\r\n /**\r\n * Called when a transition starts; emits sizing and \"beforeCentering\" status.\r\n * Triggers `_onCentering` when entering the center position.\r\n */\r\n private _transitionStarted() {\r\n clearTimeout(this._fallbackTimer);\r\n const isCentering = this._position === 'center';\r\n this._beforeCentering.emit(isCentering);\r\n if (isCentering) {\r\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\r\n }\r\n }\r\n\r\n /**\r\n * Called when a transition completes; emits `_onCentered` or `_afterLeavingCenter`\r\n * depending on the current/previous positions.\r\n */\r\n private _transitionDone() {\r\n if (this._position === 'center') {\r\n this._onCentered.emit();\r\n } else if (this._previousPosition === 'center') {\r\n this._afterLeavingCenter.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the active CSS class for the currently selected tab body.\r\n * @param isActive Whether this body is currently active (centered).\r\n */\r\n _setActiveClass(isActive: boolean) {\r\n this._elementRef.nativeElement.classList.toggle('mdc-tab-body-active', isActive);\r\n }\r\n\r\n /** Resolves current layout direction (LTR/RTL). */\r\n _getLayoutDirection(): Direction {\r\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\r\n }\r\n\r\n /** True when this body is the centered (active) one. */\r\n _isCenterPosition(): boolean {\r\n return this._positionIndex === 0;\r\n }\r\n\r\n /**\r\n * Maps the numeric index to a semantic position state and handles fallback simulation\r\n * in cases where animations are disabled or the transition might not fire.\r\n *\r\n * @param dir Optional direction override; defaults to current {@link Directionality}.\r\n */\r\n private _computePositionAnimationState(dir: Direction = this._getLayoutDirection()) {\r\n this._previousPosition = this._position;\r\n\r\n if (this._positionIndex < 0) {\r\n this._position = dir == 'ltr' ? 'left' : 'right';\r\n } else if (this._positionIndex > 0) {\r\n this._position = dir == 'ltr' ? 'right' : 'left';\r\n } else {\r\n this._position = 'center';\r\n }\r\n\r\n if (this._animationsDisabled()) {\r\n this._simulateTransitionEvents();\r\n } else if (this._initialized && (this._position === 'center' || this._previousPosition === 'center')) {\r\n clearTimeout(this._fallbackTimer);\r\n this._fallbackTimer = this._ngZone.runOutsideAngular(() =>\r\n setTimeout(() => this._simulateTransitionEvents(), 100)\r\n );\r\n }\r\n }\r\n\r\n /** Fires synthetic transitionstart/transitionend callbacks in sequence. */\r\n private _simulateTransitionEvents() {\r\n this._transitionStarted();\r\n afterNextRender(() => this._transitionDone(), { injector: this._injector });\r\n }\r\n\r\n /** Whether animations are effectively disabled by config. */\r\n private _animationsDisabled() {\r\n return this.animationDuration === '0ms' || this.animationDuration === '0s';\r\n }\r\n}\r\n","<div\r\n class=\"mdc-tab-body-content\"\r\n #content\r\n cdkScrollable\r\n [class.tab-body-content-left]=\"_position === 'left'\"\r\n [class.tab-body-content-right]=\"_position === 'right'\"\r\n [class.tab-body-content-can-animate]=\"_position === 'center' || _previousPosition === 'center'\">\r\n <ng-template mdTabBodyHost></ng-template>\r\n</div>","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Configuration options for the Tabs module.\r\n *\r\n * @remarks\r\n * Provide this via the {@link TABS_CONFIG} injection token at the app or feature level.\r\n * Each field is optional; omit to use component defaults.\r\n *\r\n * @example Provide defaults app-wide\r\n * ```ts\r\n * bootstrapApplication(AppComponent, {\r\n * providers: [\r\n * { provide: TABS_CONFIG, useValue: {\r\n * animationDuration: '250ms',\r\n * fitInkBarToContent: true,\r\n * alignTabs: 'center'\r\n * } as TabsConfig }\r\n * ]\r\n * });\r\n * ```\r\n */\r\nexport interface TabsConfig {\r\n /**\r\n * Duration of tab header/ink bar animations.\r\n * @example \"200ms\", \"300ms ease-out\"\r\n */\r\n animationDuration?: string;\r\n\r\n /**\r\n * Disables header pagination arrows when there are many tabs.\r\n * If `true`, all tabs must fit without scrolling.\r\n * @default false\r\n */\r\n disablePagination?: boolean;\r\n\r\n /**\r\n * If `true`, ink bar width matches the label content rather than the full tab.\r\n * @default false\r\n */\r\n fitInkBarToContent?: boolean;\r\n\r\n /**\r\n * Automatically resizes the tab-body container to match the active tab's height.\r\n * @default false\r\n */\r\n dynamicHeight?: boolean;\r\n\r\n /**\r\n * `tabindex` applied to the tab body content container for accessibility.\r\n * @default 0\r\n */\r\n contentTabIndex?: number;\r\n\r\n /**\r\n * Preserves inactive tab contents in the DOM instead of destroying them.\r\n * Useful for keeping component state or form controls alive.\r\n * @default false\r\n */\r\n preserveContent?: boolean;\r\n\r\n /**\r\n * Stretches tabs to evenly fill the header width.\r\n * @default false\r\n */\r\n stretchTabs?: boolean;\r\n\r\n /**\r\n * Horizontal alignment of tab labels in the header.\r\n * @default 'start'\r\n */\r\n alignTabs?: 'start' | 'center' | 'end';\r\n}\r\n\r\n/**\r\n * Injection token for providing {@link TabsConfig} defaults.\r\n *\r\n * @example Feature-level override\r\n * ```ts\r\n * @NgModule({\r\n * providers: [{ provide: TABS_CONFIG, useValue: { stretchTabs: true } }]\r\n * })\r\n * export class TabsFeatureModule {}\r\n * ```\r\n *\r\n * @example Injecting the config\r\n * ```ts\r\n * @Component({...})\r\n * export class TabsHeaderComponent {\r\n * constructor(@Inject(TABS_CONFIG) readonly cfg: TabsConfig) {}\r\n * }\r\n * ```\r\n */\r\nexport const TABS_CONFIG = new InjectionToken<TabsConfig>('TABS_CONFIG');\r\n","import { Directive, InjectionToken, TemplateRef, inject } from '@angular/core';\r\n\r\nexport const TAB_CONTENT = new InjectionToken<MDTabContent>('TabContent');\r\n\r\n@Directive({\r\n selector: '[mdTabContent]',\r\n})\r\nexport class MDTabContent {\r\n template = inject<TemplateRef<any>>(TemplateRef);\r\n\r\n constructor() {}\r\n}\r\n","import { Directive, InjectionToken, inject } from '@angular/core';\r\nimport { CdkPortal } from '@angular/cdk/portal';\r\n\r\n/**\r\n * Injection token bound to the current {@link MDTabLabel} instance.\r\n * Useful for querying/injecting the label from descendants.\r\n */\r\nexport const MD_TAB_LABEL = new InjectionToken<MDTabLabel>('MDTabLabel');\r\n\r\n/** Token representing the closest parent Tab instance (provided by the Tab). */\r\nexport const MD_TAB = new InjectionToken<any>('MD_TAB');\r\n\r\n@Directive({\r\n selector: '[md-tab-label], [mdTabLabel]',\r\n providers: [{ provide: MD_TAB_LABEL, useExisting: MDTabLabel }],\r\n})\r\n/**\r\n * Structural directive marking a template as a tab label.\r\n * Extends {@link CdkPortal} so the label content can be projected/attached where needed.\r\n *\r\n * @example\r\n * ```html\r\n * <ng-template mdTabLabel>\r\n * <span>Users</span>\r\n * </ng-template>\r\n * ```\r\n */\r\nexport class MDTabLabel extends CdkPortal {\r\n /**\r\n * Reference to the nearest parent tab instance if provided via {@link MD_TAB}.\r\n * `undefined` when used outside of a tab context.\r\n */\r\n _closestTab = inject(MD_TAB, { optional: true });\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n inject,\r\n InjectionToken,\r\n Input,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MDTabContent } from './tab-content';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\r\nimport { Subject } from 'rxjs';\r\nimport { MDTabLabel } from './tab-label';\r\n\r\n/** Injection token for the closest parent tab-group (provided by the group). */\r\nexport const TAB_GROUP = new InjectionToken<any>('TAB_GROUP');\r\n\r\n@Component({\r\n selector: 'md-tab',\r\n templateUrl: './tab.html',\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n})\r\n/**\r\n * Single tab container.\r\n *\r\n * @remarks\r\n * - Supports either **implicit content** (component template) or an **explicit content**\r\n * template via `MDTabContent`.\r\n * - Label can be plain text (`label`) or a projected template (`MDTabLabel`).\r\n * - Coordinates with a parent tab group via {@link TAB_GROUP}.\r\n *\r\n * @example Text label\r\n * ```html\r\n * <md-tab label=\"Users\"> Users content </md-tab>\r\n * ```\r\n *\r\n * @example Template label & explicit content\r\n * ```html\r\n * <md-tab>\r\n * <ng-template mdTabLabel><span class=\"pill\">Reports</span></ng-template>\r\n * <ng-template md-tab-content> Reports body </ng-template>\r\n * </md-tab>\r\n * ```\r\n */\r\nexport class MDTab {\r\n /** View container used as the portal outlet context for tab content. */\r\n private _viewContainerRef = inject(ViewContainerRef);\r\n\r\n /** Optional reference to the closest parent tab group (for coordination). */\r\n _closestTabGroup = inject(TAB_GROUP, { optional: true });\r\n\r\n /**\r\n * Disables this tab.\r\n * Header becomes non-interactive and body is not focusable.\r\n * @default false\r\n */\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n /**\r\n * Explicit tab body provided via `<ng-template md-tab-content>`.\r\n * If absent, the component's own template (implicit content) is used.\r\n */\r\n @ContentChild(MDTabContent, { read: TemplateRef, static: true }) private _explicitContent: TemplateRef<any>;\r\n\r\n /** Implicit content template captured from the component template. */\r\n @ViewChild(TemplateRef, { static: true }) _implicitContent: TemplateRef<any>;\r\n\r\n /** Plain text label for the tab header (alternative to template label). */\r\n @Input('label') textLabel: string = '';\r\n\r\n /** Accessible label for the tab header element. */\r\n @Input('aria-label') ariaLabel: string;\r\n\r\n /** Id of element that labels the tab header (for a11y). */\r\n @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n /** Additional CSS class(es) applied to the label host. */\r\n @Input() labelClass: string | string[];\r\n\r\n /** Additional CSS class(es) applied to the body/content host. */\r\n @Input() bodyClass: string | string[];\r\n\r\n /** Optional id for this tab; can be used for linking and testing. */\r\n @Input() id: string | null = null;\r\n\r\n /**\r\n * Custom label template projected via `<ng-template md-tab-label>`.\r\n * Setter ensures the template belongs to this tab instance.\r\n */\r\n @ContentChild(MDTabLabel)\r\n get templateLabel(): MDTabLabel {\r\n return this._templateLabel;\r\n }\r\n set templateLabel(value: MDTabLabel) {\r\n this._setTemplateLabelInput(value);\r\n }\r\n private _templateLabel: MDTabLabel;\r\n\r\n /** Lazily-created portal wrapping either explicit or implicit content. */\r\n private _contentPortal: TemplatePortal | null = null;\r\n\r\n /** Public getter for the content portal (used by parent tab group). */\r\n get content(): TemplatePortal | null {\r\n return this._contentPortal;\r\n }\r\n\r\n /** Notifies parent/consumers that an input affecting rendering has changed. */\r\n readonly _stateChanges = new Subject<void>();\r\n\r\n /** Position relative to the active tab (used for ink bar/animations). */\r\n position: number | null = null;\r\n\r\n /** Index from which this tab originated during a transition. */\r\n origin: number | null = null;\r\n\r\n /** Whether this tab is currently the active/selected one. */\r\n isActive = false;\r\n\r\n constructor() {}\r\n\r\n /** Emits `stateChanges` when key inputs mutate. */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\r\n this._stateChanges.next();\r\n }\r\n }\r\n\r\n /** Completes internal subject to avoid leaks. */\r\n ngOnDestroy(): void {\r\n this._stateChanges.complete();\r\n }\r\n\r\n /** Initializes the content portal using explicit or implicit template. */\r\n ngOnInit(): void {\r\n this._contentPortal = new TemplatePortal(\r\n this._explicitContent || this._implicitContent,\r\n this._viewContainerRef\r\n );\r\n }\r\n\r\n /** Accepts a label template only if it belongs to this `MDTab` instance. */\r\n private _setTemplateLabelInput(value: MDTabLabel | undefined) {\r\n if (value && value._closestTab === this) {\r\n this._templateLabel = value;\r\n }\r\n }\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>","import {\r\n Directive,\r\n ElementRef,\r\n InjectionToken,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n booleanAttribute,\r\n inject,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Contract that an item must implement to participate in ink-bar activation.\r\n * Typically implemented by tab header items.\r\n */\r\nexport interface InkBarItemContract extends OnInit, OnDestroy {\r\n /** Reference to the host element used for positioning and class toggles. */\r\n elementRef: ElementRef<HTMLElement>;\r\n /**\r\n * Activates the ink bar on this item, optionally animating from the\r\n * previous indicator's client rect (for smooth transitions).\r\n */\r\n activateInkBar(previousIndicatorClientRect?: DOMRect): void;\r\n /** Deactivates the ink bar on this item. */\r\n deactivateInkBar(): void;\r\n /** Whether the ink bar should fit the label content rather than full width. */\r\n fitInkBarToContent: boolean;\r\n}\r\n\r\n/** CSS class added when the indicator is active. */\r\nconst ACTIVE_CLASS = 'mdc-tab-indicator--active';\r\n\r\n/** CSS class used to temporarily disable transitions for initial positioning. */\r\nconst NO_TRANSITION_CLASS = 'mdc-tab-indicator--no-transition';\r\n\r\n/**\r\n * Controller for moving the ink bar between a set of items.\r\n * Keeps track of the currently active item and coordinates activation/deactivation.\r\n */\r\nexport class InkBar {\r\n private _currentItem: InkBarItemContract | undefined;\r\n\r\n /**\r\n * @param _items QueryList of items that can host the ink bar.\r\n */\r\n constructor(private _items: QueryList<InkBarItemContract>) {}\r\n\r\n /** Hides the ink bar and clears the current item reference. */\r\n hide() {\r\n this._items.forEach((item) => item.deactivateInkBar());\r\n this._currentItem = undefined;\r\n }\r\n\r\n /**\r\n * Aligns the ink bar to the given element, if there is a corresponding item.\r\n * Performs a smooth transition from the previously active item when possible.\r\n *\r\n * @param element Host element to align the ink bar with.\r\n */\r\n alignToElement(element: HTMLElement) {\r\n const correspondingItem = this._items.find((item) => item.elementRef.nativeElement === element);\r\n const currentItem = this._currentItem;\r\n\r\n if (correspondingItem === currentItem) {\r\n return;\r\n }\r\n\r\n currentItem?.deactivateInkBar();\r\n\r\n if (correspondingItem) {\r\n // Previous DOM rect used to compute a transform for the entering animation.\r\n const domRect = currentItem?.elementRef.nativeElement.getBoundingClientRect?.();\r\n\r\n correspondingItem.activateInkBar(domRect);\r\n this._currentItem = correspondingItem;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Abstract base for an element that can host an ink bar.\r\n * Responsible for creating/attaching the indicator DOM and handling transitions.\r\n */\r\n@Directive()\r\nexport abstract class InkBarItem implements OnInit, OnDestroy {\r\n /** Host element reference. */\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n /** Root element of the ink bar indicator. */\r\n private _inkBarElement: HTMLElement | null;\r\n /** Inner content element of the ink bar (underline). */\r\n private _inkBarContentElement: HTMLElement | null;\r\n /** Whether the ink bar attaches to content width instead of full host width. */\r\n private _fitToContent = false;\r\n\r\n /**\r\n * When `true`, append the ink bar inside `.mdc-tab__content` to fit label width,\r\n * otherwise append directly to the host for full-width underline.\r\n */\r\n @Input({ transform: booleanAttribute })\r\n get fitInkBarToContent(): boolean {\r\n return this._fitToContent;\r\n }\r\n set fitInkBarToContent(newValue: boolean) {\r\n if (this._fitToContent !== newValue) {\r\n this._fitToContent = newValue;\r\n\r\n if (this._inkBarElement) {\r\n this._appendInkBarElement();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Activates the ink bar and, if `previousIndicatorClientRect` is provided,\r\n * animates from the previous position/width for a smooth transition.\r\n */\r\n activateInkBar(previousIndicatorClientRect?: DOMRect) {\r\n const element = this._elementRef.nativeElement;\r\n\r\n if (!previousIndicatorClientRect || !element.getBoundingClientRect || !this._inkBarContentElement) {\r\n element.classList.add(ACTIVE_CLASS);\r\n return;\r\n }\r\n\r\n const currentClientRect = element.getBoundingClientRect();\r\n const widthDelta = previousIndicatorClientRect.width / currentClientRect.width;\r\n const xPosition = previousIndicatorClientRect.left - currentClientRect.left;\r\n\r\n element.classList.add(NO_TRANSITION_CLASS);\r\n this._inkBarContentElement.style.setProperty('transform', `translateX(${xPosition}px) scaleX(${widthDelta})`);\r\n\r\n // Force style/layout flush so transition applies after class toggle.\r\n element.getBoundingClientRect();\r\n\r\n element.classList.remove(NO_TRANSITION_CLASS);\r\n element.classList.add(ACTIVE_CLASS);\r\n this._inkBarContentElement.style.setProperty('transform', '');\r\n }\r\n\r\n /** Deactivates the ink bar from this host item. */\r\n deactivateInkBar() {\r\n this._elementRef.nativeElement.classList.remove(ACTIVE_CLASS);\r\n }\r\n\r\n /** Lifecycle: create the indicator DOM on init. */\r\n ngOnInit() {\r\n this._createInkBarElement();\r\n }\r\n\r\n /** Lifecycle: remove indicator DOM on destroy. */\r\n ngOnDestroy() {\r\n this._inkBarElement?.remove();\r\n this._inkBarElement = this._inkBarContentElement = null!;\r\n }\r\n\r\n /** Creates the ink bar root and content elements and appends them. */\r\n private _createInkBarElement() {\r\n const documentNode = this._elementRef.nativeElement.ownerDocument || document;\r\n const inkBarElement = (this._inkBarElement = documentNode.createElement('span'));\r\n const inkBarContentElement = (this._inkBarContentElement = documentNode.createElement('span'));\r\n\r\n inkBarElement.className = 'mdc-tab-indicator';\r\n inkBarContentElement.className = 'mdc-tab-indicator__content mdc-tab-indicator__content--underline';\r\n\r\n inkBarElement.appendChild(this._inkBarContentElement);\r\n this._appendInkBarElement();\r\n }\r\n\r\n /**\r\n * Appends the ink bar into the appropriate container depending on\r\n * {@link fitInkBarToContent} value.\r\n */\r\n private _appendInkBarElement() {\r\n const parentElement = this._fitToContent\r\n ? this._elementRef.nativeElement.querySelector('.mdc-tab__content')\r\n : this._elementRef.nativeElement;\r\n\r\n parentElement!.appendChild(this._inkBarElement!);\r\n }\r\n}\r\n\r\n/**\r\n * Computes the left/width style values for positioning an ink bar\r\n * under the given element.\r\n */\r\nexport interface _InkBarPositioner {\r\n /**\r\n * @param element Host element to measure.\r\n * @returns CSS `left` and `width` values (in pixels with `px` suffix).\r\n */\r\n (element: HTMLElement): { left: string; width: string };\r\n}\r\n\r\n/**\r\n * Factory returning a default ink bar positioner based on `offsetLeft/offsetWidth`.\r\n * Useful as the default strategy; can be overridden via DI.\r\n */\r\nexport function INK_BAR_POSITIONER_FACTORY(): _InkBarPositioner {\r\n const method = (element: HTMLElement) => ({\r\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\r\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\r\n });\r\n\r\n return method;\r\n}\r\n\r\n/**\r\n * Injection token for providing an ink bar positioner function.\r\n *\r\n * @example Override in a module\r\n * ```ts\r\n * providers: [\r\n * { provide: INK_BAR_POSITIONER, useFactory: myCustomPositionerFactory }\r\n * ]\r\n * ```\r\n *\r\n * @example Inject and use\r\n * ```ts\r\n * constructor(@Inject(INK_BAR_POSITIONER) private pos: _InkBarPositioner) {}\r\n * ```\r\n */\r\nexport const INK_BAR_POSITIONER = new InjectionToken<_InkBarPositioner>('InkBarPositioner', {\r\n providedIn: 'root',\r\n factory: INK_BAR_POSITIONER_FACTORY,\r\n});\r\n","import { Directive, ElementRef, Input, booleanAttribute, inject } from '@angular/core';\r\nimport { InkBarItem } from './ink-bar';\r\n\r\n@Directive({\r\n selector: '[mdTabLabelWrapper]',\r\n host: {\r\n '[class.-mdc-tab-disabled]': 'disabled',\r\n '[attr.aria-disabled]': '!!disabled',\r\n },\r\n})\r\n/**\r\n * Wrapper directive for a tab label element.\r\n * Extends {@link InkBarItem} so it can host and animate the ink bar underline.\r\n *\r\n * @remarks\r\n * - Provides focus/measurement APIs consumed by the tab header.\r\n * - Exposes a `disabled` input that affects CSS state and `aria-disabled`.\r\n *\r\n * @example\r\n * ```html\r\n * <div mdTabLabelWrapper [disabled]=\"isDisabled\">Label</div>\r\n * ```\r\n */\r\nexport class MDTabLabelWrapper extends InkBarItem {\r\n /** Native element reference for focus & measurement. */\r\n elementRef = inject(ElementRef);\r\n\r\n /**\r\n * Disables the tab label (affects CSS and sets `aria-disabled`).\r\n * @default false\r\n */\r\n @Input({ transform: booleanAttribute })\r\n disabled: boolean = false;\r\n\r\n /** Programmatically moves focus to the label element. */\r\n focus(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n /** Horizontal offset used to position the ink bar. */\r\n getOffsetLeft(): number {\r\n return this.elementRef.nativeElement.offsetLeft;\r\n }\r\n\r\n /** Element width used to size the ink bar. */\r\n getOffsetWidth(): number {\r\n return this.elementRef.nativeElement.offsetWidth;\r\n }\r\n}\r\n","import {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MDTabLabelWrapper } from './tab-label-wrapper';\r\nimport { InkBar } from './ink-bar';\r\nimport { PaginatedTabHeader } from './paginated-tab-header';\r\nimport { CdkObserveContent } from '@angular/cdk/observers';\r\n\r\n@Component({\r\n selector: 'md-tab-header',\r\n templateUrl: 'tab-header.html',\r\n styleUrl: 'tab-header.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n host: {\r\n class: 'mdc-tab-header',\r\n '[class.mdc-tab-header-pagination-controls-enabled]': '_showPaginationControls',\r\n '[class.mdc-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\r\n },\r\n imports: [CdkObserveContent],\r\n})\r\n/**\r\n * Scrollable (paginated) tab header that renders tab labels and coordinates\r\n * focus/keyboard navigation with {@link PaginatedTabHeader}. Positions the\r\n * active underline via {@link InkBar}.\r\n *\r\n * @remarks\r\n * - Projects {@link MDTabLabelWrapper} items as header labels.\r\n * - Exposes ARIA labeling inputs for accessibility.\r\n * - Pagination controls appear automatically when content overflows.\r\n */\r\nexport class MDTabHeader\r\n extends PaginatedTabHeader\r\n implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy\r\n{\r\n /** All direct tab label wrappers (no deep descendants). */\r\n @ContentChildren(MDTabLabelWrapper, { descendants: false }) _items: QueryList<MDTabLabelWrapper>;\r\n\r\n /** Container element around the scrolling tab list (used for clipping/scroll). */\r\n @ViewChild('tabListContainer', { static: true }) _tabListContainer: ElementRef;\r\n\r\n /** The scrollable tab list element. */\r\n @ViewChild('tabList', { static: true }) _tabList: ElementRef;\r\n\r\n /** Inner wrapper of the tab list (helps with measurements). */\r\n @ViewChild('tabListInner', { static: true }) _tabListInner: ElementRef;\r\n\r\n /** Next-page paginator button element (when overflow occurs). */\r\n @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\r\n\r\n /** Previous-page paginator button element (when overflow occurs). */\r\n @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\r\n\r\n /** Ink bar instance responsible for active-underline positioning. */\r\n _inkBar: InkBar;\r\n\r\n /** Accessible name for the tablist region (if no external labelling). */\r\n @Input('aria-label') ariaLabel: string;\r\n\r\n /** Id of element that labels this tablist for a11y. */\r\n @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n /**\r\n * After content is available, initialize the ink bar with current items\r\n * and let the base header wire scrolling/pagination behaviors.\r\n */\r\n override ngAfterContentInit() {\r\n this._inkBar = new InkBar(this._items);\r\n super.ngAfterContentInit();\r\n }\r\n\r\n /**\r\n * Keyboard selection handler at the header level.\r\n * Prevents default browser behavior; actual selection logic is handled\r\n * by the parent container or the base class.\r\n */\r\n protected _itemSelected(event: KeyboardEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","\r\n<div class=\"mdc-tab-header-pagination mdc-tab-header-pagination-before\"\r\n #previousPaginator\r\n [class.mdc-tab-header-pagination-disabled]=\"_disableScrollBefore\"\r\n (click)=\"_handlePaginatorClick('before')\"\r\n (mousedown)=\"_handlePaginatorPress('before', $event)\"\r\n (touchend)=\"_stopInterval()\">\r\n <div class=\"mdc-tab-header-pagination-chevron\"></div>\r\n</div>\r\n\r\n<div\r\n class=\"mdc-tab-label-container\"\r\n #tabListContainer\r\n (keydown)=\"_handleKeydown($event)\">\r\n <div\r\n #tabList\r\n class=\"mdc-tab-list\"\r\n role=\"tablist\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\r\n (cdkObserveContent)=\"_onContentChanges()\">\r\n <div class=\"mdc-tab-labels\" #tabListInner>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mdc-tab-header-pagination mdc-tab-header-pagination-after\"\r\n #nextPaginator\r\n [class.mdc-tab-header-pagination-disabled]=\"_disableScrollAfter\"\r\n (mousedown)=\"_handlePaginatorPress('after', $event)\"\r\n (click)=\"_handlePaginatorClick('after')\"\r\n (touchend)=\"_stopInterval()\">\r\n <div class=\"mdc-tab-header-pagination-chevron\"></div>\r\n</div>","import {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n inject,\r\n numberAttribute,\r\n ViewChildren,\r\n AfterViewInit,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { MDTab, TAB_GROUP } from './tab';\r\nimport { MDTabHeader } from './tab-header';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { _IdGenerator, CdkMonitorFocus, FocusOrigin } from '@angular/cdk/a11y';\r\nimport { MDTabBody } from './tab-body';\r\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { MDTabLabelWrapper } from './tab-label-wrapper';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { TABS_CONFIG, TabsConfig } from './config';\r\n\r\n/** Interface exposed by tab header implementations used by the group. */\r\nexport interface TabGroupBaseHeader {\r\n _alignInkBarToSelectedTab(): void;\r\n updatePagination(): void;\r\n focusIndex: number;\r\n}\r\n\r\n/** Where to render the tab header relative to the body. */\r\nexport type TabHeaderPosition = 'above' | 'below';\r\n\r\n@Component({\r\n selector: 'md-tab-group',\r\n exportAs: 'mdTabGroup',\r\n templateUrl: 'tab-group.html',\r\n styleUrl: 'tab-group.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n providers: [\r\n {\r\n provide: TAB_GROUP,\r\n useExisting: MDTabGroup,\r\n },\r\n ],\r\n host: {\r\n class: 'mdc-tab-group',\r\n '[class]': ' (color || \"primary\")',\r\n '[class.mdc-tab-group-dynamic-height]': 'dynamicHeight',\r\n '[class.mdc-tab-group-inverted-header]': 'headerPosition === \"below\"',\r\n '[class.mdc-tab-group-stretch-tabs]': 'stretchTabs',\r\n '[attr.align-tabs]': 'alignTabs',\r\n '[style.--tab-animation-duration]': 'animationDuration',\r\n },\r\n imports: [MDTabHeader, MDTabLabelWrapper, CdkMonitorFocus, CdkPortalOutlet, MDTabBody],\r\n})\r\n/**\r\n * Tab group container coordinating a header of labels and a body of tab contents.\r\n *\r\n * @remarks\r\n * - Manages selection, focus, pagination, ink bar alignment, and body height animations.\r\n * - Works with projected {@link MDTab} children; filters out nested groups.\r\n * - Honors defaults provided via {@link TABS_CONFIG}.\r\n *\r\n * @example Basic usage\r\n * ```html\r\n * <md-tab-group [(selectedIndex)]=\"index\" [dynamicHeight]=\"true\">\r\n * <md-tab label=\"One\"> One content </md-tab>\r\n * <md-tab label=\"Two\"> Two content </md-tab>\r\n * </md-tab-group>\r\n * ```\r\n */\r\nexport class MDTabGroup implements AfterViewInit, AfterContentInit, AfterContentChecked, OnDestroy {\r\n /** Root element ref for size/host-class interactions. */\r\n readonly _elementRef = inject(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _ngZone = inject(NgZone);\r\n\r\n /** Subscriptions to various tab/label/body change streams. */\r\n private _tabsSubscription = Subscription.EMPTY;\r\n private _tabLabelSubscription = Subscription.EMPTY;\r\n private _tabBodySubscription = Subscription.EMPTY;\r\n\r\n /** All candidate tabs in content (including nested); filtered to own group below. */\r\n @ContentChildren(MDTab, { descendants: true }) _allTabs: QueryList<MDTab>;\r\n\r\n /** Projected tab body components and wrapper/child references. */\r\n @ViewChildren(MDTabBody) _tabBodies: QueryList<MDTabBody> | undefined;\r\n @ViewChild('tabBodyWrapper') _tabBodyWrapper: ElementRef;\r\n @ViewChild('tabHeader') _tabHeader: MDTabHeader;\r\n\r\n /** Tabs belonging to this group (excludes nested/foreign groups). */\r\n _tabs: QueryList<MDTab> = new QueryList<MDTab>();\r\n\r\n // ---- Selection & layout state ----\r\n\r\n /** Next index requested by inputs/user actions; reconciled each content check. */\r\n private _indexToSelect: number | null = 0;\r\n /** Last header-focused tab index (for roving tabindex). */\r\n private _lastFocusedTabIndex: number | null = null;\r\n /** Cached wrapper height for dynamicHeight animations. */\r\n private _tabBodyWrapperHeight: number = 0;\r\n\r\n // ---- Inputs ----\r\n\r\n /**\r\n * Fit ink bar width to the text content of the label rather than the full tab.\r\n * @default false\r\n */\r\n @Input({ transform: booleanAttribute })\r\n get fitInkBarToContent(): boolean {\r\n return this._fitInkBarToContent;\r\n }\r\n set fitInkBarToContent(value: boolean) {\r\n this._fitInkBarToContent = value;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n private _fitInkBarToContent = false;\r\n\r\n /**\r\n * Stretch tabs across the header row (attribute alias).\r\n * @alias stretch-tabs\r\n * @default true\r\n */\r\n @Input({ alias: 'stretch-tabs', transform: booleanAttribute })\r\n stretchTabs: boolean = true;\r\n\r\n /**\r\n * Alignment of tab headers: `'start' | 'center' | 'end'` (attribute alias).\r\n * @alias align-tabs\r\n * @default null (use header default)\r\n */\r\n @Input({ alias: 'align-tabs' })\r\n alignTabs: string | null = null;\r\n\r\n /** Animate container height to fit active body. @default false */\r\n @Input({ transform: booleanAttribute })\r\n dynamicHeight: boolean = false;\r\n\r\n /**\r\n * Two-way bound selected index.\r\n * @remarks Setter stores a pending request; actual selection happens during checks.\r\n */\r\n @Input({ transform: numberAttribute })\r\n get selectedIndex(): number | null {\r\n return this._selectedIndex;\r\n }\r\n set selectedIndex(value: number) {\r\n this._indexToSelect = isNaN(value) ? null : value;\r\n }\r\n private _selectedIndex: number | null = null;\r\n\r\n /** Header position relative to body. @default 'above' */\r\n @Input() headerPosition: TabHeaderPosition = 'above';\r\n\r\n /**\r\n * Duration applied to transitions; accepts `'500ms'` or number (ms).\r\n * Numbers are normalized to `\"Xms\"`.\r\n * @default '500ms' (or DI default)\r\n */\r\n @Input()\r\n get animationDuration(): string {\r\n return this._animationDuration;\r\n }\r\n set animationDuration(value: string | number) {\r\n const stringValue = value + '';\r\n this._animationDuration = /^\\d+$/.test(stringValue) ? value + 'ms' : stringValue;\r\n }\r\n private _animationDuration: string;\r\n\r\n /**\r\n * `tabindex` for the active tab content container.\r\n * @default null (browser default)\r\n */\r\n @Input({ transform: numberAttribute })\r\n get contentTabIndex(): number | null {\r\n return this._contentTabIndex;\r\n }\r\n set contentTabIndex(value: number) {\r\n this._contentTabIndex = isNaN(value) ? null : value;\r\n }\r\n private _contentTabIndex: number | null;\r\n\r\n /** Disable header pagination controls and related layout. @default false */\r\n @Input({ transform: booleanAttribute })\r\n disablePagination: boolean = false;\r\n\r\n /** Reserved flag for ripple styling/integration. @default false */\r\n @Input({ transform: booleanAttribute })\r\n disableRipple: boolean = false;\r\n\r\n /** Keep inactive tab bodies attached in the DOM. @default false */\r\n @Input({ transform: booleanAttribute })\r\n preserveContent: boolean = false;\r\n\r\n /** A11y labeling for the tablist region. */\r\n @Input('aria-label') ariaLabel: string;\r\n @Input('aria-labelledby') ariaLabelledby: string;\r\n\r\n // ---- Outputs ----\r\n\r\n /** Emits when selected index changes (two-way binding helper). */\r\n @Output() readonly selectedIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n /** Emits when header focus changes between tabs (keyboard nav). */\r\n @Output() readonly focusChange: EventEmitter<MDTabChangeEvent> = new EventEmitter<MDTabChangeEvent>();\r\n\r\n /** Emits after content wrapper height animation completes. */\r\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /**\r\n * Emits when a new tab is selected (async; not emitted on initial render).\r\n * @see selectedIndexChange for 2-way binding signal.\r\n */\r\n @Output() readonly selectedTabChange: EventEmitter<MDTabChangeEvent> =\r\n new EventEmitter<MDTabChangeEvent>(true);\r\n\r\n /** Group id used for aria-controls/label linking. */\r\n private _groupId: string;\r\n\r\n /** SSR guard to avoid DOM operations when not in the browser. */\r\n protected _isServer: boolean = !inject(Platform).isBrowser;\r\n\r\n constructor() {\r\n const defaultConfig = inject<TabsConfig>(TABS_CONFIG, { optional: true });\r\n this._groupId = inject(_IdGenerator).getId('tab-group-');\r\n\r\n // Apply DI defaults where provided.\r\n this.animationDuration =\r\n defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : '500ms';\r\n this.disablePagination =\r\n defaultConfig && defaultConfig.disablePagination != null ? defaultConfig.disablePagination : false;\r\n this.dynamicHeight =\r\n defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;\r\n\r\n if (defaultConfig?.contentTabIndex != null) {\r\n this.contentTabIndex = defaultConfig.contentTabIndex;\r\n }\r\n this.preserveContent = !!defaultConfig?.preserveContent;\r\n this.fitInkBarToContent =\r\n defaultConfig && defaultConfig.fitInkBarToContent != null ? defaultConfig.fitInkBarToContent : false;\r\n this.stretchTabs =\r\n defaultConfig && defaultConfig.stretchTabs != null ? defaultConfig.stretchTabs : true;\r\n this.alignTabs = defaultConfig && defaultConfig.alignTabs != null ? defaultConfig.alignTabs : null;\r\n }\r\n\r\n // ---- Lifecycle ----\r\n\r\n /**\r\n * Reconcile desired index with available tabs; update selection & positions.\r\n * Emits change events and manages wrapper height for smooth transitions.\r\n */\r\n ngAfterContentChecked() {\r\n const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));\r\n if (this._selectedIndex != indexToSelect) {\r\n const isFirstRun = this._selectedIndex == null;\r\n\r\n if (!isFirstRun) {\r\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\r\n const wrapper = this._tabBodyWrapper.nativeElement;\r\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\r\n }\r\n\r\n Promise.resolve().then(() => {\r\n this._tabs.forEach((tab, index) => (tab.isActive = index === indexToSelect));\r\n if (!isFirstRun) {\r\n this.selectedIndexChange.emit(indexToSelect);\r\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\r\n }\r\n });\r\n }\r\n\r\n // Update relative positions & origin for animations.\r\n this._tabs.forEach((tab: MDTab, index: number) => {\r\n tab.position = index - indexToSelect;\r\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\r\n tab.origin = indexToSelect - this._selectedIndex;\r\n }\r\n });\r\n\r\n if (this._selectedIndex !== indexToSelect) {\r\n this._selectedIndex = indexToSelect;\r\n this._lastFocusedTabIndex = null;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Wire up tabs list and labels after initial content projection. */\r\n ngAfterContentInit() {\r\n this._subscribeToAllTabChanges();\r\n this._subscribeToTabLabels();\r\n\r\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\r\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\r\n\r\n // If selected index stayed the same, ensure the activated tab is in sync.\r\n if (indexToSelect === this._selectedIndex) {\r\n const tabs = this._tabs.toArray();\r\n let selectedTab: MDTab | undefined;\r\n\r\n for (let i = 0; i < tabs.length; i++) {\r\n if (tabs[i].isActive) {\r\n this._indexToSelect = this._selectedIndex = i;\r\n this._lastFocusedTabIndex = null;\r\n selectedTab = tabs[i];\r\n break;\r\n }\r\n }\r\n\r\n // If no tab is active, activate the target one.\r\n if (!selectedTab && tabs[indexToSelect]) {\r\n Promise.resolve().then(() => {\r\n tabs[indexToSelect].isActive = true;\r\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\r\n });\r\n }\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /** Watch body list to keep active class centered after view init. */\r\n ngAfterViewInit() {\r\n this._tabBodySubscription = this._tabBodies!.changes.subscribe(() => this._bodyCentered(true));\r\n }\r\n\r\n /** Filter nested tabs and keep only those belonging to this group. */\r\n private _subscribeToAllTabChanges() {\r\n this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe((tabs: QueryList<MDTab>) => {\r\n this._tabs.reset(\r\n tabs.filter((tab) => {\r\n return tab._closestTabGroup === this || !tab._closestTabGroup;\r\n })\r\n );\r\n this._tabs.notifyOnChanges();\r\n });\r\n }\r\n\r\n /** Cleanup resources. */\r\n ngOnDestroy() {\r\n this._tabs.destroy();\r\n this._tabsSubscription.unsubscribe();\r\n this._tabLabelSubscription.unsubscribe();\r\n this._tabBodySubscription.unsubscribe();\r\n }\r\n\r\n // ---- Public API for header/body coordination ----\r\n\r\n /** Realign ink bar to the current selected tab. */\r\n realignInkBar() {\r\n if (this._tabHeader) {\r\n this._tabHeader._alignInkBarToSelectedTab();\r\n }\r\n }\r\n\r\n /** Recompute pagination (e.g., after resize). */\r\n updatePagination() {\r\n if (this._tabHeader) {\r\n this._tabHeader.updatePagination();\r\n }\r\n }\r\n\r\n /** Move focus to a specific tab header index. */\r\n focusTab(index: number) {\r\n const header = this._tabHeader;\r\n if (header) {\r\n header.focusIndex = index;\r\n }\r\n }\r\n\r\n /** Emits `focusChange` when header focus moves. */\r\n _focusChanged(index: number) {\r\n this._lastFocusedTabIndex = index;\r\n this.focusChange.emit(this._createChangeEvent(index));\r\n }\r\n\r\n /** Creates a reusable change event object for selection/focus updates. */\r\n private _createChangeEvent(index: number): MDTabChangeEvent {\r\n const event = new MDTabChangeEvent();\r\n event.index = index;\r\n if (this._tabs && this._tabs.length) {\r\n event.tab = this._tabs.toArray()[index];\r\n }\r\n return event;\r\n }\r\n\r\n /** Subscribe to label/template changes to trigger CD when they update. */\r\n private _subscribeToTabLabels() {\r\n if (this._tabLabelSubscription) {\r\n this._tabLabelSubscription.unsubscribe();\r\n }\r\n this._tabLabelSubscription = merge(...this._tabs.map((tab) => tab._stateChanges)).subscribe(() =>\r\n this._changeDetectorRef.markForCheck()\r\n );\r\n }\r\n\r\n /** Ensure the target index is within `[0, tabs.length - 1]`. */\r\n private _clampTabIndex(index: number | null): number {\r\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\r\n }\r\n\r\n /** Build a unique id for each tab label element (aria-labelledby). */\r\n _getTabLabelId(tab: MDTab, index: number): string {\r\n return tab.id || `${this._groupId}-label-${index}`;\r\n }\r\n\r\n /** Build a unique id for each tab content region (aria-controls). */\r\n _getTabContentId(index: number): string {\r\n return `${this._groupId}-content-${index}`;\r\n }\r\n\r\n /** Manage body wrapper height during `dynamicHeight` animations. */\r\n _setTabBodyWrapperHeight(tabHeight: number): void {\r\n if (!this.dynamicHeight || !this._tabBodyWrapperHeight) {\r\n this._tabBodyWrapperHeight = tabHeight;\r\n return;\r\n }\r\n const wrapper: HTMLElement = this._tabBodyWrapper.nativeElement;\r\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\r\n\r\n // Only set the new height if the element is rendered; avoids FOUC.\r\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\r\n wrapper.style.height = tabHeight + 'px';\r\n }\r\n }\r\n\r\n /** Clear height lock and emit `animationDone` once the cycle completes. */\r\n _removeTabBodyWrapperHeight(): void {\r\n const wrapper = this._tabBodyWrapper.nativeElement;\r\n this._tabBodyWrapperHeight = wrapper.clientHeight;\r\n wrapper.style.height = '';\r\n this._ngZone.run(() => this.animationDone.emit());\r\n }\r\n\r\n /** Handle header click: focus header item and (if enabled) select it. */\r\n _handleClick(tab: MDTab, tabHeader: TabGroupBaseHeader, index: number) {\r\n tabHeader.focusIndex = index;\r\n if (!tab.disabled) {\r\n this.selectedIndex = index;\r\n }\r\n }\r\n\r\n /** Roving tabindex: only selected/last-focused tab is tabbable. */\r\n _getTabIndex(index: number): number {\r\n const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;\r\n return index === targetIndex ? 0 : -1;\r\n }\r\n\r\n /** When header item receives non-mouse focus, update `focusIndex`. */\r\n _tabFocusChanged(focusOrigin: FocusOrigin, index: number) {\r\n if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\r\n this._tabHeader.focusIndex = index;\r\n }\r\n }\r\n\r\n /** Toggle active class on bodies when centering is enabled. */\r\n protected _bodyCentered(isCenter: boolean) {\r\n if (isCenter) {\r\n this._tabBodies?.forEach((body, i) => body._setActiveClass(i === this._selectedIndex));\r\n }\r\n }\r\n\r\n /** Disable animations when duration is explicitly zero. */\r\n protected _animationsDisabled(): boolean {\r\n return this.animationDuration === '0' || this.animationDuration === '0ms';\r\n }\r\n}\r\n\r\n/** Change event emitted by MDTabGroup for selection/focus updates. */\r\nexport class MDTabChangeEvent {\r\n /** Index of the tab that changed. */\r\n index: number;\r\n /** Reference to the tab instance. */\r\n tab: MDTab;\r\n}\r\n","<md-tab-header\r\n #tabHeader\r\n [selectedIndex]=\"selectedIndex || 0\"\r\n [disablePagination]=\"disablePagination\"\r\n [aria-label]=\"ariaLabel\"\r\n [aria-labelledby]=\"ariaLabelledby\"\r\n (indexFocused)=\"_focusChanged($event)\"\r\n (selectFocusedIndex)=\"selectedIndex = $event\"\r\n>\r\n @for (tab of _tabs; track tab) {\r\n <div\r\n class=\"mdc-tab mdc-tab focus-indicator\"\r\n #tabNode\r\n role=\"tab\"\r\n mdTabLabelWrapper\r\n cdkMonitorElementFocus\r\n [id]=\"_getTabLabelId(tab, $index)\"\r\n [attr.tabIndex]=\"_getTabIndex($index)\"\r\n [attr.aria-posinset]=\"$index + 1\"\r\n [attr.aria-setsize]=\"_tabs.length\"\r\n [attr.aria-controls]=\"_getTabContentId($index)\"\r\n [attr.aria-selected]=\"selectedIndex === $index\"\r\n [attr.aria-label]=\"tab.ariaLabel || null\"\r\n [attr.aria-labelledby]=\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\"\r\n [class.mdc-tab--active]=\"selectedIndex === $index\"\r\n [class]=\"tab.labelClass\"\r\n [disabled]=\"tab.disabled\" \r\n [fitInkBarToContent]=\"fitInkBarToContent\"\r\n (click)=\"_handleClick(tab, tabHeader, $index)\"\r\n (cdkFocusChange)=\"_tabFocusChanged($event, $index)\"\r\n >\r\n <span class=\"mdc-tab__ripple\"></span>\r\n <span class=\"mdc-tab__content\">\r\n <span class=\"mdc-tab__text-label\">\r\n @if (tab.templateLabel) {\r\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\r\n } @else {{{tab.textLabel}}}\r\n </span>\r\n </span>\r\n </div>\r\n }\r\n</md-tab-header>\r\n\r\n@if (_isServer) {\r\n<ng-content />\r\n}\r\n\r\n<div class=\"mdc-tab-body-wrapper\" #tabBodyWrapper>\r\n @for (tab of _tabs; track tab;) {\r\n <md-tab-body\r\n role=\"tabpanel\"\r\n [id]=\"_getTabContentId($index)\"\r\n [attr.tabindex]=\"(contentTabIndex != null && selectedIndex === $index) ? contentTabIndex : null\"\r\n [attr.aria-labelledby]=\"_getTabLabelId(tab, $index)\"\r\n [attr.aria-hidden]=\"selectedIndex !== $index\"\r\n [class]=\"tab.bodyClass\"\r\n [content]=\"tab.content!\"\r\n [position]=\"tab.position!\"\r\n [animationDuration]=\"animationDuration\"\r\n [preserveContent]=\"preserveContent\"\r\n (_onCentered)=\"_removeTabBodyWrapperHeight()\"\r\n (_onCentering)=\"_setTabBodyWrapperHeight($event)\"\r\n (_beforeCentering)=\"_bodyCentered($event)\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MDTabContent } from './tab-content';\r\nimport { MDTabLabel } from './tab-label';\r\nimport { MDTab } from './tab';\r\nimport { MDTabGroup } from './tab-group';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MDTabContent, MDTabLabel, MDTab, MDTabGroup],\r\n exports: [MDTabContent, MDTabLabel, MDTab, MDTabGroup],\r\n})\r\nexport class MDTabsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CollapseSetComponent","i2","i1.FilteredFieldService","i3.FilteredFieldItemComponent","i1.MefDevSelectComponent","i3.MefDevOptionComponent","i4.MefDevSelectComponent","i2.MefDevProgressComponent","i1","i3.MefdevInnerCard","i3.SlideRightComponent","i1.SlideUpComponent","i2.SlideRightComponent","i3","i4.StageComponent","i1.StepExecutorComponent","observableOf","i2.MefDevTabsInkBarDirective","i2.MefDevTabsNavComponent","i3.MefDevTabLabelDirective","i4.MefDevTabBodyComponent","i1.MefDevTabSetComponent","MDSelect","filter","map","startWith","switchMap","takeUntil","take","ViewportRuler"],"mappings":"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"}
|