mis-crystal-design-system 4.0.19-test → 4.0.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-table.js","sources":["../../../projects/mis-components/table/table.component.ts","../../../projects/mis-components/table/custom-table-cell.directive.ts","../../../projects/mis-components/table/sub-table/sub-table.component.ts","../../../projects/mis-components/table/filter/filter.component.ts","../../../projects/mis-components/table/table.module.ts","../../../projects/mis-components/table/mis-crystal-design-system-table.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren\n} from \"@angular/core\";\nimport { Filter, TableFilterComponent } from \"./filter/filter.component\";\n\n@Component({\n selector: \"mis-table\",\n templateUrl: \"table.component.html\",\n styleUrls: [\"table.component.css\"]\n})\nexport class TableComponent implements OnInit, AfterViewInit, OnChanges {\n\n // Initialize with -1 to indicate no row is colored at the beginning\n activeRowIndex: number = 0; \n\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = \"\";\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } = {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild(\"filter\") filter: TableFilterComponent | any;\n @ViewChildren(\"colHeaderRef\") colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n pages: Array<number> = [];\n tableLength: number;\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input(\"tableConfig\") config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild(\"table\") table: ElementRef | any;\n\n constructor(private renderer: Renderer2) { }\n\n // Function to handle row click\n selectRow(index: number) {\n this.activeRowIndex = index; // Set the selected index to the clicked row's index\n this.config.rowConfig.action = index;\n }\n ngOnInit(): void {\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.initializeFilters();\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n if (this.config.canScrollHorizontally === undefined) {\n this.config.canScrollHorizontally = false;\n }\n document.addEventListener(\"click\", event => {\n if (this.filter) {\n let isCheckBoxClicked = true;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === \"checkmark\") {\n isCheckBoxClicked = true;\n this.showFilter = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(event.target);\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.config.height;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n ngOnChanges() {\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.activeRowIndex = this.config.activeRowIndex || 0;\n }\n\n // Filter related functions\n initializeFilters() {\n for (let colHeader of this.config?.colHeaderConfig) {\n if (colHeader.filters) {\n let filters = [];\n for (let filter of colHeader.filters) {\n if (filter.checked) {\n filters.push({\n name: filter.name,\n value: filter.value\n });\n }\n }\n if (filters.length > 0) this.appliedFilters[colHeader.data] = filters;\n }\n }\n }\n toggleFilter(filterName: string) {\n if (!this.showFilter) {\n this.filterName = filterName;\n this.showFilter = true;\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: \"44px\",\n right: offSet > 0 ? offSet - 116 + \"px\" : \"12px\"\n };\n } else {\n this.filterName = \"\";\n this.filterData = [];\n this.showFilter = false;\n }\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages) return;\n this.config.paginationConfig.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.config.paginationConfig?.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config?.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config?.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.height) {\n return this.config.colHeadersRowConfig.height;\n } else return \"44px\";\n }\n getColHeadersRowBorderTop() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderTop) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return \"\";\n }\n getColHeadersRowBorderBottom() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderBottom) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return \"1px solid #E0E0E0\";\n }\n\n}\n\nexport interface TableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean;\n canScrollHorizontally?: boolean;\n cellHover?: boolean;\n activeRowIndex?: number;\n}\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n selectedPage?: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n action?: any;\n}\nexport interface ColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n}\nexport interface ColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[customTableCell]\"\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) {\n this.ref.instance.data = this.cellData;\n }\n }\n\n constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"sub-table\",\n templateUrl: \"sub-table.component.html\",\n styleUrls: [\"sub-table.component.css\"]\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild(\"table\") table: ElementRef | any;\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.height) {\n return this.config.colHeadersRowConfig.height;\n } else return \"44px\";\n }\n getColHeadersRowBorderTop() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderTop) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return \"\";\n }\n getColHeadersRowBorderBottom() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderBottom) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return \"1px solid #E0E0E0\";\n }\n}\n\nexport interface SubTableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n dataContainerMaxHeight: string | \"400px\";\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"mis-table-filter\",\n templateUrl: \"filter.component.html\",\n styleUrls: [\"filter.component.css\"]\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild(\"mainContainer\") container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = \"\";\n\n constructor() {}\n\n ngOnInit(): void {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value] = filter;\n });\n }\n resetFilters() {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.checked)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n updateFilter(data: any) {\n if (this.filtersMap[data.name]) {\n this.filtersMap[data.name].checked = !this.filtersMap[data.name].checked;\n }\n }\n getFiltersBasedOnSearchValue(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, \"i\"));\n });\n return list.sort(this.mySort);\n }\n getCheckedFilters(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => filter.checked).sort(this.mySort);\n return list;\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from \"./sub-table/sub-table.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TableFilterComponent } from \"./filter/filter.component\";\nimport { CheckboxModule } from \"mis-crystal-design-system/checkbox\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\n\n@NgModule({\n declarations: [TableComponent, SubTableComponent, TableFilterComponent, CustomTableCellDirective],\n imports: [CommonModule, CheckboxModule, ScrollingModule],\n exports: [TableComponent, SubTableComponent, TableFilterComponent, CustomTableCellDirective]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SubTableComponent as ɵa} from './sub-table/sub-table.component';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-table.js","sources":["../../../projects/mis-components/table/table.component.ts","../../../projects/mis-components/table/custom-table-cell.directive.ts","../../../projects/mis-components/table/sub-table/sub-table.component.ts","../../../projects/mis-components/table/filter/filter.component.ts","../../../projects/mis-components/table/table.module.ts","../../../projects/mis-components/table/mis-crystal-design-system-table.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren\n} from \"@angular/core\";\nimport { Filter, TableFilterComponent } from \"./filter/filter.component\";\n\n@Component({\n selector: \"mis-table\",\n templateUrl: \"table.component.html\",\n styleUrls: [\"table.component.css\"]\n})\nexport class TableComponent implements OnInit, AfterViewInit, OnChanges {\n\n // Initialize with -1 to indicate no row is colored at the beginning\n activeRowIndex: number = 0; \n\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = \"\";\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } = {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild(\"filter\") filter: TableFilterComponent | any;\n @ViewChildren(\"colHeaderRef\") colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n pages: Array<number> = [];\n tableLength: number;\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input(\"tableConfig\") config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild(\"table\") table: ElementRef | any;\n\n constructor(private renderer: Renderer2) { }\n\n // Function to handle row click\n selectRow(index: number) {\n this.activeRowIndex = index; // Set the selected index to the clicked row's index\n !!this.config.rowConfig.action && this.config.rowConfig.action(index);\n }\n ngOnInit(): void {\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.initializeFilters();\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n if (this.config.canScrollHorizontally === undefined) {\n this.config.canScrollHorizontally = false;\n }\n document.addEventListener(\"click\", event => {\n if (this.filter) {\n let isCheckBoxClicked = true;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === \"checkmark\") {\n isCheckBoxClicked = true;\n this.showFilter = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(event.target);\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.config.height;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n ngOnChanges() {\n this.tableLength = !!this.tableData ? this.tableData.length : 0;\n this.activeRowIndex = this.config.activeRowIndex || 0;\n }\n\n // Filter related functions\n initializeFilters() {\n for (let colHeader of this.config?.colHeaderConfig) {\n if (colHeader.filters) {\n let filters = [];\n for (let filter of colHeader.filters) {\n if (filter.checked) {\n filters.push({\n name: filter.name,\n value: filter.value\n });\n }\n }\n if (filters.length > 0) this.appliedFilters[colHeader.data] = filters;\n }\n }\n }\n toggleFilter(filterName: string) {\n if (!this.showFilter) {\n this.filterName = filterName;\n this.showFilter = true;\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: \"44px\",\n right: offSet > 0 ? offSet - 116 + \"px\" : \"12px\"\n };\n } else {\n this.filterName = \"\";\n this.filterData = [];\n this.showFilter = false;\n }\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages) return;\n this.config.paginationConfig.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.config.paginationConfig?.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config?.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config?.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.height) {\n return this.config.colHeadersRowConfig.height;\n } else return \"44px\";\n }\n getColHeadersRowBorderTop() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderTop) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return \"\";\n }\n getColHeadersRowBorderBottom() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderBottom) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return \"1px solid #E0E0E0\";\n }\n\n}\n\nexport interface TableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean;\n canScrollHorizontally?: boolean;\n cellHover?: boolean;\n activeRowIndex?: number;\n}\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n selectedPage?: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n action?: any;\n}\nexport interface ColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n}\nexport interface ColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[customTableCell]\"\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) {\n this.ref.instance.data = this.cellData;\n }\n }\n\n constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"sub-table\",\n templateUrl: \"sub-table.component.html\",\n styleUrls: [\"sub-table.component.css\"]\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild(\"table\") table: ElementRef | any;\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(this.table.nativeElement, \"height\", height - 56 + \"px\");\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return \"\";\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return \"\";\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.height) {\n return this.config.colHeadersRowConfig.height;\n } else return \"44px\";\n }\n getColHeadersRowBorderTop() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderTop) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return \"\";\n }\n getColHeadersRowBorderBottom() {\n if (this.config.colHeadersRowConfig && this.config.colHeadersRowConfig.style?.borderBottom) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return \"1px solid #E0E0E0\";\n }\n}\n\nexport interface SubTableConfig {\n height: string | \"100%\";\n width: string | \"100%\";\n dataContainerMaxHeight: string | \"400px\";\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: \"text\" | \"number\" | \"custom\";\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: \"text\" | \"number\" | \"custom\";\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"mis-table-filter\",\n templateUrl: \"filter.component.html\",\n styleUrls: [\"filter.component.css\"]\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild(\"mainContainer\") container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = \"\";\n\n constructor() {}\n\n ngOnInit(): void {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value] = filter;\n });\n }\n resetFilters() {\n this.filtersData.forEach(filter => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.checked)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n updateFilter(data: any) {\n if (this.filtersMap[data.name]) {\n this.filtersMap[data.name].checked = !this.filtersMap[data.name].checked;\n }\n }\n getFiltersBasedOnSearchValue(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, \"i\"));\n });\n return list.sort(this.mySort);\n }\n getCheckedFilters(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => filter.checked).sort(this.mySort);\n return list;\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from \"./sub-table/sub-table.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TableFilterComponent } from \"./filter/filter.component\";\nimport { CheckboxModule } from \"mis-crystal-design-system/checkbox\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\n\n@NgModule({\n declarations: [TableComponent, SubTableComponent, TableFilterComponent, CustomTableCellDirective],\n imports: [CommonModule, CheckboxModule, ScrollingModule],\n exports: [TableComponent, SubTableComponent, TableFilterComponent, CustomTableCellDirective]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SubTableComponent as ɵa} from './sub-table/sub-table.component';"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@ import * as moment from 'moment-timezone';
3
3
  import { tz } from 'moment-timezone';
4
4
  import { ConnectionPositionPair, OverlayConfig, Overlay, OverlayModule } from '@angular/cdk/overlay';
5
5
  import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { ToolTipDirective, ToolTipModule } from 'mis-crystal-design-system/tooltip';
6
7
  import { CommonModule } from '@angular/common';
7
8
  import { FormsModule } from '@angular/forms';
8
- import { ToolTipModule } from 'mis-crystal-design-system/tooltip';
9
9
 
10
10
  class TimepickerDirective {
11
11
  constructor(templateRef, overlay, viewContainerRef) {
@@ -207,25 +207,27 @@ class TimePickerComponent {
207
207
  });
208
208
  }
209
209
  calculateClosestInterval(time) {
210
- const intervalMS = this.interval * 60 * 1000;
211
- const chosenDate = moment(this.dateAsEpoch).format("DD-MM-YYYY");
212
- // converting time passed as parameter to moment object and adding date
210
+ let roundedEpoch;
211
+ // Converting time and date to a moment object
212
+ const chosenDate = moment(this.dateAsEpoch).format("DD-MM-YYYY"); // 05-01-2024
213
213
  const parsedTimeWithDate = moment(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);
214
- // converting moment object to epoch so that calculations for rounding off are easier to do
215
- const currEpoch = parsedTimeWithDate.valueOf();
216
- const offset = currEpoch % intervalMS;
217
- const roundedEpoch = offset >= intervalMS / 2 ? currEpoch + (intervalMS - offset) : currEpoch - offset;
214
+ // Converting moment object to epoch
215
+ const chosenTimeEpoch = parsedTimeWithDate.valueOf();
216
+ const offset = this.interval - (moment(chosenTimeEpoch).minutes() % this.interval);
217
+ if (this.minTime && !this.givenTime) {
218
+ this.isHighlighted = 0;
219
+ return;
220
+ }
221
+ roundedEpoch = offset >= this.interval / 2 ? (moment(chosenTimeEpoch).subtract(this.interval - offset, "m")).valueOf() : (moment(chosenTimeEpoch).add(offset, "m")).valueOf();
218
222
  // finding the index of element that needs to be highlighted
219
- if (moment(currEpoch).format(this.timeFormat) === moment(this.dateAsEpoch).endOf('d').format(this.timeFormat)) {
220
- this.isHighlighted = this.timeIntervals.lastIndexOf(this.timeIntervals.slice(-1)[0]);
223
+ if (moment(chosenTimeEpoch).format(this.timeFormat) > moment(this.dateAsEpoch).endOf("d").subtract(this.interval, "m").format(this.timeFormat)) {
224
+ this.isHighlighted = this.timeIntervals.length - 1;
221
225
  }
222
226
  else {
223
- this.timeIntervals.forEach((interval, index, array) => {
227
+ const roundedEpochMoment = moment(roundedEpoch);
228
+ this.isHighlighted = this.timeIntervals.findIndex(interval => {
224
229
  const intervalObj = moment(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);
225
- if (intervalObj.valueOf() === roundedEpoch)
226
- this.isHighlighted = index;
227
- if (array.length === 1)
228
- this.isHighlighted = 0;
230
+ return intervalObj.isSame(roundedEpochMoment);
229
231
  });
230
232
  }
231
233
  }
@@ -271,8 +273,8 @@ class TimePickerComponent {
271
273
  }
272
274
  }
273
275
  ngOnDestroy() {
274
- this.showTooltip = false;
275
- this.isInvalid = false;
276
+ if (this.tooltipDirective)
277
+ this.tooltipDirective.hideToolTip();
276
278
  }
277
279
  }
278
280
  TimePickerComponent.decorators = [
@@ -300,6 +302,7 @@ TimePickerComponent.propDecorators = {
300
302
  timeEmitter: [{ type: Output }],
301
303
  input: [{ type: ViewChild, args: ["input", { static: true },] }],
302
304
  timepickerDirective: [{ type: ViewChild, args: [TimepickerDirective,] }],
305
+ tooltipDirective: [{ type: ViewChild, args: [ToolTipDirective,] }],
303
306
  timeIntervalRefs: [{ type: ViewChildren, args: ["timeInterval",] }]
304
307
  };
305
308
 
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-timepicker.js","sources":["../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts","../../../projects/mis-components/timepicker/mis-crystal-design-system-timepicker.ts"],"sourcesContent":["import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) this.createOverlay(this.originEl);\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n this.overlayRef.detach();\n });\n }\n\n destroyOverlay(){\n this.overlayRef.detach();\n }\n \n}\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewChildren } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnChanges, OnDestroy {\n currTime!: string;\n chosenTime: string;\n openStatus: boolean = false;\n isHighlighted: number = 0;\n isInvalid: boolean = false;\n timeIntervals: string[] = [];\n shouldScroll: boolean = false;\n userInputFlag: boolean = false;\n givenTimeFlag: boolean = true;\n\n @Input() clockFormat: number = 12;\n timeFormat!: string;\n\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() height: string = \"max-content\";\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() interval: number = 15;\n @Input() dateAsEpoch: number = moment().valueOf();\n @Input() firstInterval!: number;\n @Input() rangeValidity: boolean = true;\n @Input() showTooltip: boolean = true;\n @Input() givenTime: number;\n @Input() minTime?: number;\n @Input() triggerChange: boolean = true;\n\n @Output() timeEmitter = new EventEmitter<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){}\n ngOnInit(): void {\n if(!this.givenTime && !this.minTime) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n }\n }\n\n ngOnChanges(): void {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n\n if (this.timeFormat) {\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n \n // if the first interval is >= the chosen time\n // then only update the value of chosen time\n // else it remains the same\n if (this.firstInterval >= chosenTimeMoment.valueOf() && this.rangeValidity && !this.userInputFlag) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n chosenTimeMoment = this.getMoment(this.chosenTime)\n }\n\n if((this.givenTimeFlag && this.givenTime) || this.minTime ) {\n this.chosenTime = moment(this.minTime || this.givenTime).format(this.timeFormat);\n }\n chosenTimeMoment = this.getMoment(this.chosenTime)\n\n if (!this.userInputFlag) this.populateDropdown();\n this.userInputFlag = false;\n \n if(this.chosenTime) {\n this.isInvalid = !this.checkTimeValidity(this.chosenTime.trim());\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n this.calculateClosestInterval(this.chosenTime);\n }\n }\n }\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get moment object when time is given in string\n getMoment(time: string){\n return moment(`${moment(this.dateAsEpoch).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n }\n\n closeDropdown() {\n this.userInputFlag = false;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.openStatus = true;\n }\n\n checkTimeValidity(time: string): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = this.getMoment(time);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // or a time is already provided to the component to show\n // then we don't check its validity against the current time\n if (\n this.minTime || \n this.givenTime ||\n (this.firstInterval &&\n moment(this.firstInterval).format(this.timeFormat).valueOf() === moment().startOf(\"d\").format(this.timeFormat).valueOf())\n ) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true: false;\n }\n\n return flag;\n }\n\n // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n if (!this.isInvalid) {\n this.chosenTime = time;\n this.calculateClosestInterval(this.chosenTime);\n }\n\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n\n if (!this.isInvalid) {\n this.userInputFlag = true;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n const intervalMS = this.interval * 60 * 1000;\n const chosenDate = moment(this.dateAsEpoch).format(\"DD-MM-YYYY\");\n\n // converting time passed as parameter to moment object and adding date\n const parsedTimeWithDate = moment(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);\n\n // converting moment object to epoch so that calculations for rounding off are easier to do\n const currEpoch = parsedTimeWithDate.valueOf();\n\n const offset = currEpoch % intervalMS;\n const roundedEpoch = offset >= intervalMS / 2 ? currEpoch + (intervalMS - offset) : currEpoch - offset;\n\n // finding the index of element that needs to be highlighted\n if(moment(currEpoch).format(this.timeFormat) === moment(this.dateAsEpoch).endOf('d').format(this.timeFormat)){\n this.isHighlighted = this.timeIntervals.lastIndexOf(this.timeIntervals.slice(-1)[0]);\n } else{\n this.timeIntervals.forEach((interval, index, array) => {\n const intervalObj = moment(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);\n if (intervalObj.valueOf() === roundedEpoch) this.isHighlighted = index;\n if (array.length === 1) this.isHighlighted = 0;\n });\n }\n }\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals = [];\n\n // if picker is used as an individual component\n if (!this.firstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (moment(this.dateAsEpoch).format(\"DD-MM-YYYY\") === moment().format(\"DD-MM-YYYY\") && !this.minTime) {\n const offset = this.interval - (moment().minutes() % this.interval);\n this.firstInterval = moment().add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime){\n const offset = this.interval - (moment(this.minTime).minutes() % this.interval);\n this.firstInterval = moment(this.minTime).add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n this.firstInterval = moment().startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenTime && this.givenTimeFlag){\n this.firstInterval = moment(this.givenTime).startOf('d').valueOf();\n this.givenTimeFlag = false;\n }\n\n const dateAsString = moment(this.dateAsEpoch).format('DD-MM-YYYY');\n const intervalAsString = moment(this.firstInterval).format(this.timeFormat);\n const start = moment(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`);\n const end = moment(`${dateAsString}`, 'DD-MM-YYYY').endOf('d');\n\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.push(start.format(this.timeFormat));\n start.add(this.interval, \"m\");\n }\n\n // if the start time is equal to the interval just before midnight\n // and the start date = end date\n // push 11:59pm only\n if (this.timeIntervals.length === 0) {\n this.chosenTime = moment().endOf(\"d\").format(this.timeFormat);\n this.timeIntervals.push(moment().endOf(\"d\").format(this.timeFormat));\n }\n }\n\n ngOnDestroy() {\n this.showTooltip = false;\n this.isInvalid = false;\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {TimepickerDirective as ɵa} from './timepicker.directive';"],"names":["moment.tz"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-timepicker.js","sources":["../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts","../../../projects/mis-components/timepicker/mis-crystal-design-system-timepicker.ts"],"sourcesContent":["import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) this.createOverlay(this.originEl);\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n this.overlayRef.detach();\n });\n }\n\n destroyOverlay(){\n this.overlayRef.detach();\n }\n \n}\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewChildren } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\nimport { ToolTipDirective } from \"mis-crystal-design-system/tooltip\";\n\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnChanges, OnDestroy {\n currTime!: string;\n chosenTime: string;\n openStatus: boolean = false;\n isHighlighted: number = 0;\n isInvalid: boolean = false;\n timeIntervals: string[] = [];\n shouldScroll: boolean = false;\n userInputFlag: boolean = false;\n givenTimeFlag: boolean = true;\n\n @Input() clockFormat: number = 12;\n timeFormat!: string;\n\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() height: string = \"max-content\";\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() interval: number = 15;\n @Input() dateAsEpoch: number = moment().valueOf();\n @Input() firstInterval!: number;\n @Input() rangeValidity: boolean = true;\n @Input() showTooltip: boolean = true;\n @Input() givenTime: number;\n @Input() minTime?: number;\n @Input() triggerChange: boolean = true;\n\n @Output() timeEmitter = new EventEmitter<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n @ViewChild(ToolTipDirective) tooltipDirective: ToolTipDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){}\n ngOnInit(): void {\n if(!this.givenTime && !this.minTime) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n }\n }\n\n ngOnChanges(): void {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n\n if (this.timeFormat) {\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n \n // if the first interval is >= the chosen time\n // then only update the value of chosen time\n // else it remains the same\n if (this.firstInterval >= chosenTimeMoment.valueOf() && this.rangeValidity && !this.userInputFlag) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n chosenTimeMoment = this.getMoment(this.chosenTime)\n }\n\n if((this.givenTimeFlag && this.givenTime) || this.minTime ) {\n this.chosenTime = moment(this.minTime || this.givenTime).format(this.timeFormat);\n }\n chosenTimeMoment = this.getMoment(this.chosenTime)\n\n if (!this.userInputFlag) this.populateDropdown();\n this.userInputFlag = false;\n \n if(this.chosenTime) {\n this.isInvalid = !this.checkTimeValidity(this.chosenTime.trim());\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n this.calculateClosestInterval(this.chosenTime);\n }\n }\n }\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get moment object when time is given in string\n getMoment(time: string){\n return moment(`${moment(this.dateAsEpoch).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n }\n\n closeDropdown() {\n this.userInputFlag = false;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.openStatus = true;\n }\n\n checkTimeValidity(time: string): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = this.getMoment(time);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // or a time is already provided to the component to show\n // then we don't check its validity against the current time\n if (\n this.minTime || \n this.givenTime ||\n (this.firstInterval &&\n moment(this.firstInterval).format(this.timeFormat).valueOf() === moment().startOf(\"d\").format(this.timeFormat).valueOf())\n ) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true: false;\n }\n\n return flag;\n }\n\n // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n if (!this.isInvalid) {\n this.chosenTime = time;\n this.calculateClosestInterval(this.chosenTime);\n }\n\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n\n if (!this.isInvalid) {\n this.userInputFlag = true;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n let roundedEpoch: number;\n // Converting time and date to a moment object \n const chosenDate = moment(this.dateAsEpoch).format(\"DD-MM-YYYY\"); // 05-01-2024\n const parsedTimeWithDate = moment(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);\n // Converting moment object to epoch\n const chosenTimeEpoch = parsedTimeWithDate.valueOf();\n const offset = this.interval - (moment(chosenTimeEpoch).minutes() % this.interval);\n\n if (this.minTime && !this.givenTime) {\n this.isHighlighted = 0;\n return;\n }\n roundedEpoch = offset >= this.interval / 2 ? (moment(chosenTimeEpoch).subtract(this.interval - offset, \"m\")).valueOf() : (moment(chosenTimeEpoch).add( offset, \"m\")).valueOf();\n\n // finding the index of element that needs to be highlighted\n if (moment(chosenTimeEpoch).format(this.timeFormat) > moment(this.dateAsEpoch).endOf(\"d\").subtract(this.interval, \"m\").format(this.timeFormat)) {\n this.isHighlighted = this.timeIntervals.length - 1;\n } else {\n const roundedEpochMoment = moment(roundedEpoch);\n this.isHighlighted = this.timeIntervals.findIndex(interval => {\n const intervalObj = moment(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);\n return intervalObj.isSame(roundedEpochMoment);\n });\n }\n }\n\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals = [];\n\n // if picker is used as an individual component\n if (!this.firstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (moment(this.dateAsEpoch).format(\"DD-MM-YYYY\") === moment().format(\"DD-MM-YYYY\") && !this.minTime) {\n const offset = this.interval - (moment().minutes() % this.interval);\n this.firstInterval = moment().add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime){\n const offset = this.interval - (moment(this.minTime).minutes() % this.interval);\n this.firstInterval = moment(this.minTime).add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n this.firstInterval = moment().startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenTime && this.givenTimeFlag){\n this.firstInterval = moment(this.givenTime).startOf('d').valueOf();\n this.givenTimeFlag = false;\n }\n\n const dateAsString = moment(this.dateAsEpoch).format('DD-MM-YYYY');\n const intervalAsString = moment(this.firstInterval).format(this.timeFormat);\n const start = moment(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`);\n const end = moment(`${dateAsString}`, 'DD-MM-YYYY').endOf('d');\n\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.push(start.format(this.timeFormat));\n start.add(this.interval, \"m\");\n }\n\n // if the start time is equal to the interval just before midnight\n // and the start date = end date\n // push 11:59pm only\n if (this.timeIntervals.length === 0) {\n this.chosenTime = moment().endOf(\"d\").format(this.timeFormat);\n this.timeIntervals.push(moment().endOf(\"d\").format(this.timeFormat));\n }\n }\n\n ngOnDestroy() {\n if (this.tooltipDirective) this.tooltipDirective.hideToolTip();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {TimepickerDirective as ɵa} from './timepicker.directive';"],"names":["moment.tz"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "4.0.19-test",
3
+ "version": "4.0.20",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"TimePickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"mis-timepicker","template":"<div class=\"timepicker-container\" [ngStyle]=\"{ height: height }\">\n <input\n type=\"text\"\n [(ngModel)]=\"chosenTime\"\n (ngModelChange)=\"onTimeChange(chosenTime)\"\n [ngClass]=\"{ invalid: isInvalid || !rangeValidity }\"\n [ngStyle]=\"{ width: inputWidth }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip && (isInvalid || !rangeValidity)\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libDropdownScroll libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth || inputWidth }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals; index as i\" [ngClass]=\"{ highlight: i === isHighlighted }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n","styles":[".h1{font-size:40px;line-height:48px}.h1,.h2{font-weight:400;letter-spacing:0}.h2{font-size:32px;line-height:40px}.h3{font-size:28px;line-height:36px}.h3,.h4{font-weight:400;letter-spacing:0}.h4{font-size:24px;line-height:32px}.h5-b{font-weight:700;letter-spacing:.25px}.h5,.h5-b{font-size:20px;line-height:28px}.h5{font-weight:400;letter-spacing:.15px}.h6-b{font-weight:700}.h6,.h6-b{font-size:16px;letter-spacing:0;line-height:24px}.h6,.p{font-weight:400}.p{font-size:16px;letter-spacing:0;line-height:180%}.h7-b{font-weight:700;letter-spacing:.25px}.h7,.h7-b{font-size:14px;line-height:20px}.h7{font-weight:400;letter-spacing:.2px}.h8-b{font-weight:700;letter-spacing:.25px}.h8,.h8-b{font-size:12px;line-height:18px}.h8{letter-spacing:.2px}.h8,.h9{font-weight:400}.h9{font-size:10px;letter-spacing:0;line-height:15px}.btn-lg-b{font-weight:700;letter-spacing:.5px}.btn-lg,.btn-lg-b{font-size:16px;line-height:24px}.btn-lg{font-weight:400;letter-spacing:.2px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;line-height:24px}.btn-link,.display-1{font-weight:400;letter-spacing:0}.display-1{font-size:48px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*{box-sizing:border-box;font-family:Lato}.timepicker-container{display:inline-block;position:relative}input{text-align:center;border:none;border-bottom:1px solid #e0e0e0;outline:none;height:100%;width:100px;padding:4px 16px}input:hover{background:#f5f7fc}input:active,input:focus{background:#e6ebf7;border-bottom:1px solid #0937b2}.timepicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid #e0e0e0;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:4px;padding:8px;background:#fff}.timepicker-dropdown::-webkit-scrollbar{display:none}.timepicker-dropdown ul{margin:0;padding:0}.timepicker-dropdown li{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:#181f33;display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown li:hover{background:#f5f7fc;border-radius:6px}.timepicker-dropdown li .selected-icon{font-weight:900}.highlight{background-color:#f5f7fc;border-radius:6px}.invalid{background:#fae1ea!important;border-bottom:1px solid #b00020!important}"]}]}],"members":{"clockFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"timezone":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"inputWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"dropdownWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"interval":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"dateAsEpoch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"firstInterval":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"rangeValidity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"showTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"givenTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"minTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"triggerChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"timeEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":38,"character":3},"arguments":["input",{"static":true}]}]}],"timepickerDirective":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":39,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵa"}]}]}],"timeIntervalRefs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":42,"character":3},"arguments":["timeInterval"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"emitTime":[{"__symbolic":"method"}],"getMoment":[{"__symbolic":"method"}],"closeDropdown":[{"__symbolic":"method"}],"openDropdown":[{"__symbolic":"method"}],"checkTimeValidity":[{"__symbolic":"method"}],"onTimeSelect":[{"__symbolic":"method"}],"onTimeChange":[{"__symbolic":"method"}],"calculateClosestInterval":[{"__symbolic":"method"}],"populateDropdown":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"TimePickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TimePickerComponent"},{"__symbolic":"reference","name":"ɵa"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":26},{"__symbolic":"reference","module":"mis-crystal-design-system/tooltip","name":"ToolTipModule","line":10,"character":39},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":10,"character":54}],"exports":[{"__symbolic":"reference","name":"TimePickerComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"TimePickerModule"},"providers":[]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[libTimepicker]"}]}],"members":{"originEl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3},"arguments":["originEl"]}]}],"statusEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":3}}]}],"createOverlayOnInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["openStatus"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":18,"character":47,"context":{"typeName":"Element"},"module":"./timepicker.directive"}]},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":18,"character":74},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":18,"character":109}]}],"createOverlay":[{"__symbolic":"method"}],"destroyOverlay":[{"__symbolic":"method"}]}}},"origins":{"TimePickerComponent":"./timepicker.component","TimePickerModule":"./timepicker.module","ɵa":"./timepicker.directive"},"importAs":"mis-crystal-design-system/timepicker"}
1
+ {"__symbolic":"module","version":4,"metadata":{"TimePickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"mis-timepicker","template":"<div class=\"timepicker-container\" [ngStyle]=\"{ height: height }\">\n <input\n type=\"text\"\n [(ngModel)]=\"chosenTime\"\n (ngModelChange)=\"onTimeChange(chosenTime)\"\n [ngClass]=\"{ invalid: isInvalid || !rangeValidity }\"\n [ngStyle]=\"{ width: inputWidth }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip && (isInvalid || !rangeValidity)\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libDropdownScroll libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth || inputWidth }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals; index as i\" [ngClass]=\"{ highlight: i === isHighlighted }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n","styles":[".h1{font-size:40px;line-height:48px}.h1,.h2{font-weight:400;letter-spacing:0}.h2{font-size:32px;line-height:40px}.h3{font-size:28px;line-height:36px}.h3,.h4{font-weight:400;letter-spacing:0}.h4{font-size:24px;line-height:32px}.h5-b{font-weight:700;letter-spacing:.25px}.h5,.h5-b{font-size:20px;line-height:28px}.h5{font-weight:400;letter-spacing:.15px}.h6-b{font-weight:700}.h6,.h6-b{font-size:16px;letter-spacing:0;line-height:24px}.h6,.p{font-weight:400}.p{font-size:16px;letter-spacing:0;line-height:180%}.h7-b{font-weight:700;letter-spacing:.25px}.h7,.h7-b{font-size:14px;line-height:20px}.h7{font-weight:400;letter-spacing:.2px}.h8-b{font-weight:700;letter-spacing:.25px}.h8,.h8-b{font-size:12px;line-height:18px}.h8{letter-spacing:.2px}.h8,.h9{font-weight:400}.h9{font-size:10px;letter-spacing:0;line-height:15px}.btn-lg-b{font-weight:700;letter-spacing:.5px}.btn-lg,.btn-lg-b{font-size:16px;line-height:24px}.btn-lg{font-weight:400;letter-spacing:.2px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;line-height:24px}.btn-link,.display-1{font-weight:400;letter-spacing:0}.display-1{font-size:48px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*{box-sizing:border-box;font-family:Lato}.timepicker-container{display:inline-block;position:relative}input{text-align:center;border:none;border-bottom:1px solid #e0e0e0;outline:none;height:100%;width:100px;padding:4px 16px}input:hover{background:#f5f7fc}input:active,input:focus{background:#e6ebf7;border-bottom:1px solid #0937b2}.timepicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid #e0e0e0;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:4px;padding:8px;background:#fff}.timepicker-dropdown::-webkit-scrollbar{display:none}.timepicker-dropdown ul{margin:0;padding:0}.timepicker-dropdown li{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:#181f33;display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown li:hover{background:#f5f7fc;border-radius:6px}.timepicker-dropdown li .selected-icon{font-weight:900}.highlight{background-color:#f5f7fc;border-radius:6px}.invalid{background:#fae1ea!important;border-bottom:1px solid #b00020!important}"]}]}],"members":{"clockFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"timezone":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"inputWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"dropdownWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"interval":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"dateAsEpoch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"firstInterval":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"rangeValidity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"showTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"givenTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"minTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"triggerChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"timeEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":40,"character":3},"arguments":["input",{"static":true}]}]}],"timepickerDirective":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":41,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵa"}]}]}],"tooltipDirective":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":42,"character":3},"arguments":[{"__symbolic":"reference","module":"mis-crystal-design-system/tooltip","name":"ToolTipDirective","line":42,"character":13}]}]}],"timeIntervalRefs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":45,"character":3},"arguments":["timeInterval"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"emitTime":[{"__symbolic":"method"}],"getMoment":[{"__symbolic":"method"}],"closeDropdown":[{"__symbolic":"method"}],"openDropdown":[{"__symbolic":"method"}],"checkTimeValidity":[{"__symbolic":"method"}],"onTimeSelect":[{"__symbolic":"method"}],"onTimeChange":[{"__symbolic":"method"}],"calculateClosestInterval":[{"__symbolic":"method"}],"populateDropdown":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"TimePickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TimePickerComponent"},{"__symbolic":"reference","name":"ɵa"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":26},{"__symbolic":"reference","module":"mis-crystal-design-system/tooltip","name":"ToolTipModule","line":10,"character":39},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":10,"character":54}],"exports":[{"__symbolic":"reference","name":"TimePickerComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"TimePickerModule"},"providers":[]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[libTimepicker]"}]}],"members":{"originEl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3},"arguments":["originEl"]}]}],"statusEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":3}}]}],"createOverlayOnInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["openStatus"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":18,"character":47,"context":{"typeName":"Element"},"module":"./timepicker.directive"}]},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":18,"character":74},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":18,"character":109}]}],"createOverlay":[{"__symbolic":"method"}],"destroyOverlay":[{"__symbolic":"method"}]}}},"origins":{"TimePickerComponent":"./timepicker.component","TimePickerModule":"./timepicker.module","ɵa":"./timepicker.directive"},"importAs":"mis-crystal-design-system/timepicker"}
@@ -2,6 +2,7 @@ import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit } from "@angular
2
2
  import * as moment from "moment-timezone";
3
3
  import { ITime } from "./time.namespace";
4
4
  import { TimepickerDirective } from "./timepicker.directive";
5
+ import { ToolTipDirective } from "mis-crystal-design-system/tooltip";
5
6
  export declare class TimePickerComponent implements OnInit, OnChanges, OnDestroy {
6
7
  currTime: string;
7
8
  chosenTime: string;
@@ -29,6 +30,7 @@ export declare class TimePickerComponent implements OnInit, OnChanges, OnDestroy
29
30
  timeEmitter: EventEmitter<ITime>;
30
31
  input: ElementRef;
31
32
  timepickerDirective: TimepickerDirective;
33
+ tooltipDirective: ToolTipDirective;
32
34
  set timeIntervalRefs(intervals: any);
33
35
  constructor();
34
36
  ngOnInit(): void;