mis-crystal-design-system 2.4.5 → 2.4.6
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/bundles/mis-crystal-design-system-datepicker_v2.umd.js +24 -10
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +2 -2
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +1 -1
- package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.js +17 -26
- package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.min.js +2 -2
- package/bundles/mis-crystal-design-system-daterangepicker_v2.umd.min.js.map +1 -1
- package/bundles/mis-crystal-design-system-tooltip.umd.js +86 -120
- package/bundles/mis-crystal-design-system-tooltip.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-tooltip.umd.min.js +1 -1
- package/bundles/mis-crystal-design-system-tooltip.umd.min.js.map +1 -1
- package/bundles/mis-crystal-design-system-utils.umd.js +33 -0
- package/bundles/mis-crystal-design-system-utils.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-utils.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-utils.umd.min.js.map +1 -0
- package/datepicker_v2/mis-crystal-design-system-datepicker_v2.metadata.json +1 -1
- package/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.metadata.json +1 -1
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +0 -1
- package/esm2015/datepicker_v2/tz-datepicker.directive.js +23 -8
- package/esm2015/daterangepicker_v2/tz-daterangepicker.directive.js +17 -25
- package/esm2015/tooltip/index.js +2 -2
- package/esm2015/tooltip/models/tooltip.model.js +2 -0
- package/esm2015/tooltip/public_api.js +4 -4
- package/esm2015/tooltip/tooltip-container/tooltip.component.js +34 -0
- package/esm2015/tooltip/tooltip.directive.js +68 -57
- package/esm2015/tooltip/tooltip.module.js +5 -5
- package/esm2015/utils/index.js +17 -0
- package/esm2015/utils/mis-crystal-design-system-utils.js +5 -0
- package/fesm2015/mis-crystal-design-system-datepicker_v2.js +21 -6
- package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +1 -1
- package/fesm2015/mis-crystal-design-system-daterangepicker_v2.js +15 -23
- package/fesm2015/mis-crystal-design-system-daterangepicker_v2.js.map +1 -1
- package/fesm2015/mis-crystal-design-system-tooltip.js +86 -101
- package/fesm2015/mis-crystal-design-system-tooltip.js.map +1 -1
- package/fesm2015/mis-crystal-design-system-utils.js +24 -0
- package/fesm2015/mis-crystal-design-system-utils.js.map +1 -0
- package/package.json +1 -1
- package/tooltip/index.d.ts +1 -1
- package/tooltip/mis-crystal-design-system-tooltip.metadata.json +1 -1
- package/tooltip/models/tooltip.model.d.ts +1 -0
- package/tooltip/public_api.d.ts +4 -3
- package/tooltip/tooltip-container/tooltip.component.d.ts +10 -0
- package/tooltip/tooltip.directive.d.ts +10 -13
- package/tooltip/tooltip.module.d.ts +1 -1
- package/utils/index.d.ts +7 -0
- package/utils/mis-crystal-design-system-utils.d.ts +4 -0
- package/utils/mis-crystal-design-system-utils.metadata.json +1 -0
- package/utils/package.json +11 -0
- package/esm2015/tooltip/tooltip.component.js +0 -60
- package/tooltip/tooltip.component.d.ts +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-daterangepicker_v2.js","sources":["../../../projects/mis-components/daterangepicker_v2/daterangepicker-constants.ts","../../../projects/mis-components/daterangepicker_v2/utils/index.ts","../../../projects/mis-components/daterangepicker_v2/tz-drp-container/tz-drp-container.component.ts","../../../projects/mis-components/daterangepicker_v2/tz-daterangepicker.directive.ts","../../../projects/mis-components/daterangepicker_v2/daterangepicker.module.ts","../../../projects/mis-components/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>('CONTAINER_DATA');\nexport const DATE_FORMAT = \"DD-MM-YYYY\";","import { ICurrentMonth } from \"../models/drp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = 'January'\n break;\n case 1:\n month = 'February'\n break;\n case 2:\n month = 'March'\n break;\n case 3:\n month = 'April'\n break;\n case 4:\n month = 'May'\n break;\n case 5:\n month = 'June'\n break;\n case 6:\n month = 'July'\n break;\n case 7:\n month = 'August'\n break;\n case 8:\n month = 'September'\n break;\n case 9:\n month = 'October'\n break;\n case 10:\n month = 'November'\n break;\n case 11:\n month = 'December'\n break;\n default:\n break;\n }\n return month;\n}","import { Component, Inject, OnInit } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../daterangepicker-constants\";\nimport {\n ICurrentMonth,\n ICurrentMonthDates,\n IDatePickerData,\n IWeekDay,\n ISelectedDatesConfig,\n} from \"../models/drp-config.model\";\nimport { parseZone, Moment } from \"moment-timezone\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\n\n@Component({\n selector: \"mis-tz-drp\",\n templateUrl: \"./tz-drp-container.component.html\",\n styleUrls: [\"./tz-drp-container.component.scss\"],\n})\nexport class TzDrpContainerComponent implements OnInit {\n data: IDatePickerData;\n private parseZoneInstance = (...args) => {\n return parseZone(...args);\n };\n private rawWeekDays: string[] = [\n \"SUN\",\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n ];\n weekDays: IWeekDay[] = [];\n currentMonthNumber: number;\n currentMonth: ICurrentMonth;\n currentYearNumber: number;\n currentMonthDates: ICurrentMonthDates[] = [];\n nextMonthNumber: number;\n nextMonth: ICurrentMonth;\n nextYearNumber: number;\n nextMonthDates: ICurrentMonthDates[] = [];\n isPreviousMonthDisabled: boolean = false;\n isNextMonthDisabled: boolean = false;\n selectionStarted = false;\n localSelectedDates: ISelectedDatesConfig;\n isDatesValid = false;\n\n constructor(\n @Inject(CONTAINER_DATA) data: IDatePickerData,\n private toast: ToastService\n ) {\n this.data = data;\n this.localSelectedDates = this.data.dates;\n this.isDatesValid = false;\n if (this.localSelectedDates.startDate && this.localSelectedDates.endDate) {\n this.isDatesValid = true;\n }\n if (this.data?.dpConfig?.timezone) {\n this.parseZoneInstance = (...args) => {\n return parseZone(...args).tz(this.data.dpConfig.timezone);\n };\n }\n this.currentMonthNumber = this.parseZoneInstance().month();\n this.nextMonthNumber = this.parseZoneInstance().add(1, \"month\").month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.nextMonth = getMonth(this.nextMonthNumber);\n this.currentYearNumber = this.parseZoneInstance().year();\n this.nextYearNumber = this.parseZoneInstance().add(1, \"month\").year();\n this.weekDays = this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.parseZoneInstance().day() === index,\n }));\n if (!this.data?.dpConfig?.format) {\n this.data.dpConfig = {\n ...this.data.dpConfig,\n format: DATE_FORMAT,\n };\n }\n }\n\n ngOnInit(): void {\n this.currentDateInstance();\n this.calculateMinMaxDays();\n }\n\n private currentDateInstance(): void {\n if (!this.localSelectedDates?.startDate) {\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n return;\n }\n const selectedStartDate = this.parseZoneInstance(\n this.localSelectedDates?.startDate,\n this.data.dpConfig.format\n );\n if (selectedStartDate.isValid()) {\n this.currentYearNumber = selectedStartDate.year();\n this.nextYearNumber = selectedStartDate.add(1, \"month\").year();\n this.currentMonthNumber = selectedStartDate.get(\"month\") - 1;\n this.nextMonthNumber = selectedStartDate.add(1, \"month\").month() - 1;\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.nextMonth = getMonth(this.nextMonthNumber);\n }\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n }\n\n private calculateMinMaxDays() {\n const currentInstance = this.parseZoneInstance()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber);\n const minDate = this.parseZoneInstance(\n this.data.dpConfig.minDate,\n this.data.dpConfig.format\n );\n if (minDate.isValid()) {\n this.isPreviousMonthDisabled = minDate.isSameOrAfter(\n currentInstance,\n \"month\"\n );\n }\n const maxDate = this.parseZoneInstance(\n this.data.dpConfig.maxDate,\n this.data.dpConfig.format\n );\n if (maxDate.isValid()) {\n this.isNextMonthDisabled = maxDate.isSameOrBefore(\n currentInstance,\n \"month\"\n );\n }\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Moment = parseZone()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber);\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, \"month\");\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, \"month\");\n }\n this.currentMonthNumber = thisMonth.month();\n this.nextMonthNumber = thisMonth.add(1, \"month\").month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.nextMonth = getMonth(this.nextMonthNumber);\n this.currentYearNumber = thisMonth.year();\n this.nextYearNumber = thisMonth.add(1, \"month\").year();\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n this.calculateMinMaxDays();\n }\n\n private generateDates(\n month: number,\n currentYearNumber: number\n ): ICurrentMonthDates[] {\n let dates: ICurrentMonthDates[] = [];\n const daysInMonth = parseZone()\n .year(currentYearNumber)\n .month(month)\n .daysInMonth();\n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n const date = this.parseZoneInstance()\n .year(currentYearNumber)\n .month(month)\n .date(currentDate);\n const dateString = date.format(this.data.dpConfig.format);\n let isDisabledDay = this.data.datesDisabled.some((d) => d === dateString);\n const minDate = this.parseZoneInstance(\n this.data.dpConfig.minDate,\n this.data.dpConfig.format\n );\n if (!isDisabledDay && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n const maxDate = this.parseZoneInstance(\n this.data.dpConfig.maxDate,\n this.data.dpConfig.format\n );\n if (!isDisabledDay && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n const isCurrentDay =\n this.parseZoneInstance()\n .year(currentYearNumber)\n .month(month)\n .date(currentDate)\n .format(this.data.dpConfig.format) ===\n this.parseZoneInstance().format(this.data.dpConfig.format);\n const isSelectedStartDay =\n !isDisabledDay &&\n (this.localSelectedDates?.startDate ?? false) &&\n date.format(this.data.dpConfig.format) ===\n this.localSelectedDates?.startDate;\n const isAfterSelectedStartDate = this.parseZoneInstance(date).isAfter(\n this.localSelectedDates.startDate,\n \"day\"\n );\n const isBeforeSelectedEndDate = this.parseZoneInstance(date).isBefore(\n parseZone(this.localSelectedDates.endDate),\n \"day\"\n );\n const inRangeDay =\n (this.localSelectedDates.startDate ?? false) &&\n (this.localSelectedDates.endDate ?? false) &&\n isAfterSelectedStartDate &&\n isBeforeSelectedEndDate;\n\n const isSelectedEndDay =\n !isDisabledDay &&\n ((this.localSelectedDates?.startDate &&\n this.localSelectedDates?.endDate) ??\n false) &&\n date.format(this.data.dpConfig.format) ===\n this.localSelectedDates?.endDate;\n dates.push({\n date: currentDate,\n weekDay: date.day(),\n isCurrentDay,\n isSelectedStartDay,\n isSelectedEndDay,\n inRangeDay,\n toastMessage:\n this.data.messages.find(\n (q) => date.format(this.data.dpConfig.format) === q.date\n )?.message || \"\",\n isDisabledDay,\n });\n }\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\n selectDay(from: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n if (!day.isDisabledDay) {\n if (this.selectionStarted) {\n const momentDay = parseZone()\n .year(from === \"LEFT\" ? this.currentYearNumber : this.nextYearNumber)\n .month(\n from === \"LEFT\" ? this.currentMonthNumber : this.nextMonthNumber\n )\n .date(day.date);\n if (momentDay.isBefore(this.localSelectedDates.startDate, \"day\")) {\n this.localSelectedDates = {\n startDate: momentDay.format(this.data.dpConfig.format),\n endDate: null,\n };\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n return;\n }\n this.selectionStarted = false;\n this.localSelectedDates = {\n ...this.localSelectedDates,\n endDate: momentDay.format(this.data.dpConfig.format),\n };\n } else {\n this.selectionStarted = true;\n this.localSelectedDates = {\n startDate: parseZone()\n .year(\n from === \"LEFT\" ? this.currentYearNumber : this.nextYearNumber\n )\n .month(\n from === \"LEFT\" ? this.currentMonthNumber : this.nextMonthNumber\n )\n .date(day.date)\n .format(this.data.dpConfig.format),\n endDate: null,\n };\n }\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n this.isDatesValid = false;\n if (\n this.localSelectedDates.startDate &&\n this.localSelectedDates.endDate\n ) {\n this.isDatesValid = true;\n }\n }\n if (day.toastMessage) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n }\n applyDates() {\n this.data.dateChange(this.localSelectedDates);\n }\n cancelDatePicker() {\n this.data.close();\n }\n}\n","import {\n ConnectionPositionPair,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n} from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n Optional,\n Output,\n Self,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./daterangepicker-constants\";\nimport {\n IDatePickerConfig,\n IDatePickerToastText,\n ISelectedDatesConfig,\n} from \"./models/drp-config.model\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\n\n@Directive({\n selector: \"input[misTzDrp]\",\n})\nexport class TzDaterangepickerDirective {\n @Input() dpConfig: Partial<IDatePickerConfig> = {\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n };\n // dd-mm-yyyy 01-12-2022\n @Input() set selectedDates(dates: ISelectedDatesConfig) {\n this.dates = { startDate: null, endDate: null, ...dates };\n }\n @Input() set datesDisabled(dates: string[]) {\n this.dpDisabledDates = dates;\n }\n @Input() dateMessages: IDatePickerToastText[] = [];\n @Input() positionX: \"start\" | \"center\" | \"end\" = \"center\";\n @Input() positionY: \"top\" | \"center\" | \"bottom\" = \"bottom\";\n @Input() offsetX: number = 0;\n @Input() offsetY: number = 0;\n private overlayRef: OverlayRef;\n @Output() dateChange = new EventEmitter<ISelectedDatesConfig>(true);\n private isOpen = false;\n dates: ISelectedDatesConfig;\n\n private dpDisabledDates: string[] = [];\n\n constructor(\n @Self() @Optional() private control: NgControl,\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private open() {\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(this.genPositionPairs())\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(\n TzDrpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages,\n dates: this.control?.control.value || this.dates,\n dpConfig: this.dpConfig,\n datesDisabled: this.dpDisabledDates,\n dateChange: this.applyDate.bind(this),\n close: this.close.bind(this),\n },\n },\n ],\n })\n );\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(dates: ISelectedDatesConfig) {\n this.dateChange.emit(dates);\n this.control?.control.patchValue(dates);\n this.dates = dates;\n this.close();\n }\n\n close() {\n this.isOpen = false;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n\n private genPositionPairs(): ConnectionPositionPair[] {\n return [\n new ConnectionPositionPair(\n { originX: this.positionX, originY: this.positionY },\n {\n overlayX: this.positionX,\n overlayY: this.positionY === \"bottom\" ? \"top\" : \"bottom\",\n },\n this.offsetX,\n this.offsetY\n ),\n new ConnectionPositionPair(\n { originX: \"center\", originY: \"bottom\" },\n { overlayX: \"center\", overlayY: \"top\" }\n ),\n new ConnectionPositionPair(\n { originX: \"center\", originY: \"top\" },\n { overlayX: \"center\", overlayY: \"bottom\" }\n ),\n new ConnectionPositionPair(\n { originX: \"start\", originY: \"bottom\" },\n { overlayX: \"start\", overlayY: \"top\" }\n ),\n new ConnectionPositionPair(\n { originX: \"start\", originY: \"top\" },\n { overlayX: \"start\", overlayY: \"bottom\" }\n ),\n new ConnectionPositionPair(\n { originX: \"end\", originY: \"bottom\" },\n { overlayX: \"end\", overlayY: \"top\" }\n ),\n new ConnectionPositionPair(\n { originX: \"end\", originY: \"top\" },\n { overlayX: \"end\", overlayY: \"bottom\" }\n ),\n ];\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\nimport { TzDaterangepickerDirective } from \"./tz-daterangepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\n\n@NgModule({\n declarations: [TzDrpContainerComponent, TzDaterangepickerDirective],\n imports: [CommonModule, ToastModule.forRoot(), ButtonModule.forRoot()],\n exports: [TzDrpContainerComponent, TzDaterangepickerDirective],\n entryComponents: [TzDrpContainerComponent],\n})\nexport class DateRangepickerModuleV2 {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {CONTAINER_DATA as ɵc} from './daterangepicker-constants';\nexport {IDatePickerData as ɵa} from './models/drp-config.model';\nexport {TzDrpContainerComponent as ɵb} from './tz-drp-container/tz-drp-container.component';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-daterangepicker_v2.js","sources":["../../../projects/mis-components/daterangepicker_v2/daterangepicker-constants.ts","../../../projects/mis-components/daterangepicker_v2/utils/index.ts","../../../projects/mis-components/daterangepicker_v2/tz-drp-container/tz-drp-container.component.ts","../../../projects/mis-components/daterangepicker_v2/tz-daterangepicker.directive.ts","../../../projects/mis-components/daterangepicker_v2/daterangepicker.module.ts","../../../projects/mis-components/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>('CONTAINER_DATA');\nexport const DATE_FORMAT = \"DD-MM-YYYY\";","import { ICurrentMonth } from \"../models/drp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = 'January'\n break;\n case 1:\n month = 'February'\n break;\n case 2:\n month = 'March'\n break;\n case 3:\n month = 'April'\n break;\n case 4:\n month = 'May'\n break;\n case 5:\n month = 'June'\n break;\n case 6:\n month = 'July'\n break;\n case 7:\n month = 'August'\n break;\n case 8:\n month = 'September'\n break;\n case 9:\n month = 'October'\n break;\n case 10:\n month = 'November'\n break;\n case 11:\n month = 'December'\n break;\n default:\n break;\n }\n return month;\n}","import { Component, Inject, OnInit } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../daterangepicker-constants\";\nimport {\n ICurrentMonth,\n ICurrentMonthDates,\n IDatePickerData,\n IWeekDay,\n ISelectedDatesConfig,\n} from \"../models/drp-config.model\";\nimport { parseZone, Moment } from \"moment-timezone\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\n\n@Component({\n selector: \"mis-tz-drp\",\n templateUrl: \"./tz-drp-container.component.html\",\n styleUrls: [\"./tz-drp-container.component.scss\"],\n})\nexport class TzDrpContainerComponent implements OnInit {\n data: IDatePickerData;\n private parseZoneInstance = (...args) => {\n return parseZone(...args);\n };\n private rawWeekDays: string[] = [\n \"SUN\",\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n ];\n weekDays: IWeekDay[] = [];\n currentMonthNumber: number;\n currentMonth: ICurrentMonth;\n currentYearNumber: number;\n currentMonthDates: ICurrentMonthDates[] = [];\n nextMonthNumber: number;\n nextMonth: ICurrentMonth;\n nextYearNumber: number;\n nextMonthDates: ICurrentMonthDates[] = [];\n isPreviousMonthDisabled: boolean = false;\n isNextMonthDisabled: boolean = false;\n selectionStarted = false;\n localSelectedDates: ISelectedDatesConfig;\n isDatesValid = false;\n\n constructor(\n @Inject(CONTAINER_DATA) data: IDatePickerData,\n private toast: ToastService\n ) {\n this.data = data;\n this.localSelectedDates = this.data.dates;\n this.isDatesValid = false;\n if (this.localSelectedDates.startDate && this.localSelectedDates.endDate) {\n this.isDatesValid = true;\n }\n if (this.data?.dpConfig?.timezone) {\n this.parseZoneInstance = (...args) => {\n return parseZone(...args).tz(this.data.dpConfig.timezone);\n };\n }\n this.currentMonthNumber = this.parseZoneInstance().month();\n this.nextMonthNumber = this.parseZoneInstance().add(1, \"month\").month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.nextMonth = getMonth(this.nextMonthNumber);\n this.currentYearNumber = this.parseZoneInstance().year();\n this.nextYearNumber = this.parseZoneInstance().add(1, \"month\").year();\n this.weekDays = this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.parseZoneInstance().day() === index,\n }));\n if (!this.data?.dpConfig?.format) {\n this.data.dpConfig = {\n ...this.data.dpConfig,\n format: DATE_FORMAT,\n };\n }\n }\n\n ngOnInit(): void {\n this.currentDateInstance();\n this.calculateMinMaxDays();\n }\n\n private currentDateInstance(): void {\n if (!this.localSelectedDates?.startDate) {\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n return;\n }\n const selectedStartDate = this.parseZoneInstance(\n this.localSelectedDates?.startDate,\n this.data.dpConfig.format\n );\n if (selectedStartDate.isValid()) {\n this.currentYearNumber = selectedStartDate.year();\n this.nextYearNumber = selectedStartDate.add(1, \"month\").year();\n this.currentMonthNumber = selectedStartDate.get(\"month\") - 1;\n this.nextMonthNumber = selectedStartDate.add(1, \"month\").month() - 1;\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.nextMonth = getMonth(this.nextMonthNumber);\n }\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n }\n\n private calculateMinMaxDays() {\n const currentInstance = this.parseZoneInstance()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber);\n const minDate = this.parseZoneInstance(\n this.data.dpConfig.minDate,\n this.data.dpConfig.format\n );\n if (minDate.isValid()) {\n this.isPreviousMonthDisabled = minDate.isSameOrAfter(\n currentInstance,\n \"month\"\n );\n }\n const maxDate = this.parseZoneInstance(\n this.data.dpConfig.maxDate,\n this.data.dpConfig.format\n );\n if (maxDate.isValid()) {\n this.isNextMonthDisabled = maxDate.isSameOrBefore(\n currentInstance,\n \"month\"\n );\n }\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Moment = parseZone()\n .year(this.currentYearNumber)\n .month(this.currentMonthNumber);\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, \"month\");\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, \"month\");\n }\n this.currentMonthNumber = thisMonth.month();\n this.nextMonthNumber = thisMonth.add(1, \"month\").month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.nextMonth = getMonth(this.nextMonthNumber);\n this.currentYearNumber = thisMonth.year();\n this.nextYearNumber = thisMonth.add(1, \"month\").year();\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n this.calculateMinMaxDays();\n }\n\n private generateDates(\n month: number,\n currentYearNumber: number\n ): ICurrentMonthDates[] {\n let dates: ICurrentMonthDates[] = [];\n const daysInMonth = parseZone()\n .year(currentYearNumber)\n .month(month)\n .daysInMonth();\n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n const date = this.parseZoneInstance()\n .year(currentYearNumber)\n .month(month)\n .date(currentDate);\n const dateString = date.format(this.data.dpConfig.format);\n let isDisabledDay = this.data.datesDisabled.some((d) => d === dateString);\n const minDate = this.parseZoneInstance(\n this.data.dpConfig.minDate,\n this.data.dpConfig.format\n );\n if (!isDisabledDay && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n const maxDate = this.parseZoneInstance(\n this.data.dpConfig.maxDate,\n this.data.dpConfig.format\n );\n if (!isDisabledDay && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n const isCurrentDay =\n this.parseZoneInstance()\n .year(currentYearNumber)\n .month(month)\n .date(currentDate)\n .format(this.data.dpConfig.format) ===\n this.parseZoneInstance().format(this.data.dpConfig.format);\n const isSelectedStartDay =\n !isDisabledDay &&\n (this.localSelectedDates?.startDate ?? false) &&\n date.format(this.data.dpConfig.format) ===\n this.localSelectedDates?.startDate;\n const isAfterSelectedStartDate = this.parseZoneInstance(date).isAfter(\n this.localSelectedDates.startDate,\n \"day\"\n );\n const isBeforeSelectedEndDate = this.parseZoneInstance(date).isBefore(\n parseZone(this.localSelectedDates.endDate),\n \"day\"\n );\n const inRangeDay =\n (this.localSelectedDates.startDate ?? false) &&\n (this.localSelectedDates.endDate ?? false) &&\n isAfterSelectedStartDate &&\n isBeforeSelectedEndDate;\n\n const isSelectedEndDay =\n !isDisabledDay &&\n ((this.localSelectedDates?.startDate &&\n this.localSelectedDates?.endDate) ??\n false) &&\n date.format(this.data.dpConfig.format) ===\n this.localSelectedDates?.endDate;\n dates.push({\n date: currentDate,\n weekDay: date.day(),\n isCurrentDay,\n isSelectedStartDay,\n isSelectedEndDay,\n inRangeDay,\n toastMessage:\n this.data.messages.find(\n (q) => date.format(this.data.dpConfig.format) === q.date\n )?.message || \"\",\n isDisabledDay,\n });\n }\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\n selectDay(from: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n if (!day.isDisabledDay) {\n if (this.selectionStarted) {\n const momentDay = parseZone()\n .year(from === \"LEFT\" ? this.currentYearNumber : this.nextYearNumber)\n .month(\n from === \"LEFT\" ? this.currentMonthNumber : this.nextMonthNumber\n )\n .date(day.date);\n if (momentDay.isBefore(this.localSelectedDates.startDate, \"day\")) {\n this.localSelectedDates = {\n startDate: momentDay.format(this.data.dpConfig.format),\n endDate: null,\n };\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n return;\n }\n this.selectionStarted = false;\n this.localSelectedDates = {\n ...this.localSelectedDates,\n endDate: momentDay.format(this.data.dpConfig.format),\n };\n } else {\n this.selectionStarted = true;\n this.localSelectedDates = {\n startDate: parseZone()\n .year(\n from === \"LEFT\" ? this.currentYearNumber : this.nextYearNumber\n )\n .month(\n from === \"LEFT\" ? this.currentMonthNumber : this.nextMonthNumber\n )\n .date(day.date)\n .format(this.data.dpConfig.format),\n endDate: null,\n };\n }\n this.currentMonthDates = this.generateDates(\n this.currentMonthNumber,\n this.currentYearNumber\n );\n this.nextMonthDates = this.generateDates(\n this.nextMonthNumber,\n this.nextYearNumber\n );\n this.isDatesValid = false;\n if (\n this.localSelectedDates.startDate &&\n this.localSelectedDates.endDate\n ) {\n this.isDatesValid = true;\n }\n }\n if (day.toastMessage) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n }\n applyDates() {\n this.data.dateChange(this.localSelectedDates);\n }\n cancelDatePicker() {\n this.data.close();\n }\n}\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef, PositionStrategy } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, EventEmitter, HostListener, Injector, Input, Optional, Output, Self, ViewContainerRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./daterangepicker-constants\";\nimport { IDatePickerConfig, IDatePickerToastText, ISelectedDatesConfig } from \"./models/drp-config.model\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\n\n@Directive({\n selector: \"input[misTzDrp]\"\n})\nexport class TzDaterangepickerDirective {\n @Input() dpConfig: Partial<IDatePickerConfig> = {\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\"\n };\n // dd-mm-yyyy 01-12-2022\n @Input() set selectedDates(dates: ISelectedDatesConfig) {\n this.dates = { startDate: null, endDate: null, ...dates };\n }\n @Input() set datesDisabled(dates: string[]) {\n this.dpDisabledDates = dates;\n }\n @Input() dateMessages: IDatePickerToastText[] = [];\n @Input() positionX: \"start\" | \"center\" | \"end\" = \"center\";\n @Input() positionY: \"top\" | \"center\" | \"bottom\" = \"bottom\";\n @Input() offsetX: number = 0;\n @Input() offsetY: number = 0;\n private overlayRef: OverlayRef;\n @Output() dateChange = new EventEmitter<ISelectedDatesConfig>(true);\n private isOpen = false;\n dates: ISelectedDatesConfig;\n\n private dpDisabledDates: string[] = [];\n\n constructor(\n @Self() @Optional() private control: NgControl,\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private open() {\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: this.positionX,\n positionY: this.positionY,\n offsetX: this.offsetX,\n offsetY: this.offsetY\n },\n true\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(\n TzDrpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages,\n dates: this.control?.control.value || this.dates,\n dpConfig: this.dpConfig,\n datesDisabled: this.dpDisabledDates,\n dateChange: this.applyDate.bind(this),\n close: this.close.bind(this)\n }\n }\n ]\n })\n );\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(dates: ISelectedDatesConfig) {\n this.dateChange.emit(dates);\n this.control?.control.patchValue(dates);\n this.dates = dates;\n this.close();\n }\n\n close() {\n this.isOpen = false;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\nimport { TzDaterangepickerDirective } from \"./tz-daterangepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\n\n@NgModule({\n declarations: [TzDrpContainerComponent, TzDaterangepickerDirective],\n imports: [CommonModule, ToastModule.forRoot(), ButtonModule.forRoot()],\n exports: [TzDrpContainerComponent, TzDaterangepickerDirective],\n entryComponents: [TzDrpContainerComponent],\n})\nexport class DateRangepickerModuleV2 {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {CONTAINER_DATA as ɵc} from './daterangepicker-constants';\nexport {IDatePickerData as ɵa} from './models/drp-config.model';\nexport {TzDrpContainerComponent as ɵb} from './tz-drp-container/tz-drp-container.component';"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +1,52 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, ViewChild, Directive, ElementRef, ViewContainerRef, Input, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { OverlayConfig, Overlay } from '@angular/cdk/overlay';
|
|
3
|
+
import { take } from 'rxjs/operators';
|
|
4
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
5
|
+
import { genPositionPairs } from 'mis-crystal-design-system/utils';
|
|
2
6
|
import { CommonModule } from '@angular/common';
|
|
3
7
|
|
|
4
8
|
class ToolTipComponent {
|
|
5
|
-
constructor(
|
|
6
|
-
this.
|
|
7
|
-
this.
|
|
8
|
-
this.toolTipWidth = '';
|
|
9
|
-
this.toolTipPosition = 'Bottom';
|
|
10
|
-
}
|
|
11
|
-
set text(value) {
|
|
12
|
-
this.toolTipText = value;
|
|
13
|
-
this.updateToolTipPosition();
|
|
14
|
-
}
|
|
15
|
-
set width(value) {
|
|
16
|
-
this.toolTipWidth = value;
|
|
17
|
-
this.updateToolTipPosition();
|
|
18
|
-
}
|
|
19
|
-
set position(value) {
|
|
20
|
-
this.toolTipPosition = value;
|
|
21
|
-
this.updateToolTipPosition();
|
|
22
|
-
}
|
|
23
|
-
ngOnInit() {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.toolTipText = "";
|
|
11
|
+
this.toolTipPosition = "bottom";
|
|
24
12
|
}
|
|
13
|
+
ngOnInit() { }
|
|
25
14
|
ngAfterViewInit() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (this.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.renderer.setStyle(this.container.nativeElement, 'right', `-${width + 12}px`);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.renderer.setStyle(this.container.nativeElement, 'left', '50%');
|
|
41
|
-
this.renderer.setStyle(this.container.nativeElement, 'right', '');
|
|
42
|
-
}
|
|
15
|
+
var _a;
|
|
16
|
+
if (!((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement))
|
|
17
|
+
return;
|
|
18
|
+
if (this.toolTipPosition === "top" || this.toolTipPosition === "bottom") {
|
|
19
|
+
const eleWidth = this.container.nativeElement.getBoundingClientRect();
|
|
20
|
+
this.container.nativeElement.style.left = eleWidth.width / -2 + "px";
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (this.toolTipPosition === "left") {
|
|
24
|
+
const eleWidth = this.container.nativeElement.getBoundingClientRect();
|
|
25
|
+
this.container.nativeElement.style.left = -eleWidth.width + "px";
|
|
43
26
|
}
|
|
44
27
|
}
|
|
45
28
|
}
|
|
46
29
|
ToolTipComponent.decorators = [
|
|
47
30
|
{ type: Component, args: [{
|
|
48
|
-
selector:
|
|
49
|
-
template: "<div id=\"tooltip-container\"
|
|
50
|
-
styles: ["#tooltip-container{position:absolute;z-index:1}#tooltip
|
|
31
|
+
selector: "mis-tooltip",
|
|
32
|
+
template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\">{{ toolTipText }}</div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
|
|
33
|
+
styles: ["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]
|
|
51
34
|
},] }
|
|
52
35
|
];
|
|
53
|
-
ToolTipComponent.ctorParameters = () => [
|
|
54
|
-
{ type: Renderer2 }
|
|
55
|
-
];
|
|
36
|
+
ToolTipComponent.ctorParameters = () => [];
|
|
56
37
|
ToolTipComponent.propDecorators = {
|
|
57
|
-
|
|
58
|
-
width: [{ type: Input }],
|
|
59
|
-
position: [{ type: Input }],
|
|
60
|
-
container: [{ type: ViewChild, args: ['container',] }]
|
|
38
|
+
container: [{ type: ViewChild, args: ["container",] }]
|
|
61
39
|
};
|
|
62
40
|
|
|
63
41
|
class ToolTipDirective {
|
|
64
|
-
constructor(
|
|
65
|
-
this.
|
|
66
|
-
this.
|
|
42
|
+
constructor(element, overlay, viewContainerRef) {
|
|
43
|
+
this.element = element;
|
|
44
|
+
this.overlay = overlay;
|
|
67
45
|
this.viewContainerRef = viewContainerRef;
|
|
68
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
69
46
|
this.isToolTipDisplayed = false;
|
|
70
|
-
this.
|
|
71
|
-
this.
|
|
72
|
-
this.
|
|
73
|
-
this.responsivePosition = false;
|
|
74
|
-
this.showOnHover = false;
|
|
47
|
+
this.toolTipText = "";
|
|
48
|
+
this.toolTipPosition = "bottom";
|
|
49
|
+
this.showOnHover = true;
|
|
75
50
|
}
|
|
76
51
|
set showToolTip(value) {
|
|
77
52
|
this.isToolTipDisplayed = value;
|
|
@@ -80,17 +55,11 @@ class ToolTipDirective {
|
|
|
80
55
|
else
|
|
81
56
|
this.hideToolTip();
|
|
82
57
|
}
|
|
83
|
-
set width(value) {
|
|
84
|
-
this.toolTipWidth = value;
|
|
85
|
-
this.createToolTip();
|
|
86
|
-
}
|
|
87
58
|
set text(value) {
|
|
88
59
|
this.toolTipText = value;
|
|
89
|
-
this.createToolTip();
|
|
90
60
|
}
|
|
91
61
|
set position(value) {
|
|
92
62
|
this.toolTipPosition = value;
|
|
93
|
-
this.createToolTip();
|
|
94
63
|
}
|
|
95
64
|
onMouseEnter() {
|
|
96
65
|
if (this.showOnHover)
|
|
@@ -100,68 +69,84 @@ class ToolTipDirective {
|
|
|
100
69
|
if (this.showOnHover)
|
|
101
70
|
this.hideToolTip();
|
|
102
71
|
}
|
|
103
|
-
ngOnInit() {
|
|
104
|
-
this.createToolTip();
|
|
105
|
-
}
|
|
72
|
+
ngOnInit() { }
|
|
106
73
|
ngAfterViewInit() {
|
|
107
|
-
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative');
|
|
108
74
|
if (this.isToolTipDisplayed)
|
|
109
75
|
this.displayToolTip();
|
|
110
76
|
else
|
|
111
77
|
this.hideToolTip();
|
|
112
|
-
if (this.isToolTipDisplayed && this.responsivePosition)
|
|
113
|
-
this.updatePosition();
|
|
114
|
-
}
|
|
115
|
-
createToolTip() {
|
|
116
|
-
const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(ToolTipComponent);
|
|
117
|
-
this.viewContainerRef.clear();
|
|
118
|
-
this.componentRef = this.viewContainerRef.createComponent(cmpFactoryResolver);
|
|
119
|
-
this.componentRef.instance.width = this.toolTipWidth;
|
|
120
|
-
this.componentRef.instance.text = this.toolTipText;
|
|
121
|
-
this.componentRef.instance.position = this.toolTipPosition;
|
|
122
78
|
}
|
|
123
79
|
displayToolTip() {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
80
|
+
const positionStrategy = this.overlay
|
|
81
|
+
.position()
|
|
82
|
+
.flexibleConnectedTo(this.element)
|
|
83
|
+
.withPositions(genPositionPairs({
|
|
84
|
+
positionX: "center",
|
|
85
|
+
positionY: this.toolTipPosition === "top" ? "top" : "center",
|
|
86
|
+
offsetX: this.positionTooltip("OFFSET_X"),
|
|
87
|
+
offsetY: this.positionTooltip("OFFSET_Y")
|
|
88
|
+
}, false))
|
|
89
|
+
.withPush(true);
|
|
90
|
+
const config = new OverlayConfig({
|
|
91
|
+
hasBackdrop: false,
|
|
92
|
+
positionStrategy,
|
|
93
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition()
|
|
94
|
+
});
|
|
95
|
+
this.overlayRef = this.overlay.create(config);
|
|
96
|
+
const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);
|
|
97
|
+
const tooltipRef = this.overlayRef.attach(tempRef);
|
|
98
|
+
tooltipRef.instance.toolTipText = this.toolTipText;
|
|
99
|
+
tooltipRef.instance.toolTipPosition = this.toolTipPosition;
|
|
100
|
+
this.overlayRef
|
|
101
|
+
.backdropClick()
|
|
102
|
+
.pipe(take(1))
|
|
103
|
+
.subscribe(() => {
|
|
104
|
+
this.hideToolTip();
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
positionTooltip(type) {
|
|
108
|
+
if (type === "OFFSET_X") {
|
|
109
|
+
return this.toolTipPosition === "right"
|
|
110
|
+
? this.element.nativeElement.offsetWidth / 2 + 8
|
|
111
|
+
: this.toolTipPosition === "left"
|
|
112
|
+
? (this.element.nativeElement.offsetWidth / 2 + 8) * -1
|
|
113
|
+
: this.toolTipPosition === "top" || this.toolTipPosition === "bottom"
|
|
114
|
+
? 0
|
|
115
|
+
: 8;
|
|
116
|
+
}
|
|
117
|
+
if (type !== "OFFSET_Y")
|
|
118
|
+
return;
|
|
119
|
+
return this.toolTipPosition === "right" || this.toolTipPosition === "left"
|
|
120
|
+
? -18
|
|
121
|
+
: this.toolTipPosition === "top"
|
|
122
|
+
? -44
|
|
123
|
+
: this.toolTipPosition === "bottom"
|
|
124
|
+
? this.element.nativeElement.offsetHeight / 2 + 8
|
|
125
|
+
: 8;
|
|
129
126
|
}
|
|
130
127
|
hideToolTip() {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
updatePosition() {
|
|
136
|
-
// let rect: any = this.componentRef.location.nativeElement.children[0].getBoundingClientRect()
|
|
137
|
-
// let {x, y, height, width} = rect
|
|
138
|
-
//TODO: Add logic for responsive positioning
|
|
139
|
-
// Use default value as priority and dont change it here 'toolTipPosition'
|
|
140
|
-
// Update the position using below line
|
|
141
|
-
// this.componentRef.instance.position = 'Right'
|
|
142
|
-
// console.log(x, y, height, width)
|
|
128
|
+
var _a, _b;
|
|
129
|
+
(_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
|
|
130
|
+
(_b = this.overlayRef) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
143
131
|
}
|
|
144
132
|
}
|
|
145
133
|
ToolTipDirective.decorators = [
|
|
146
134
|
{ type: Directive, args: [{
|
|
147
|
-
selector:
|
|
135
|
+
selector: "[misToolTip]"
|
|
148
136
|
},] }
|
|
149
137
|
];
|
|
150
138
|
ToolTipDirective.ctorParameters = () => [
|
|
151
139
|
{ type: ElementRef },
|
|
152
|
-
{ type:
|
|
153
|
-
{ type: ViewContainerRef }
|
|
154
|
-
{ type: ComponentFactoryResolver }
|
|
140
|
+
{ type: Overlay },
|
|
141
|
+
{ type: ViewContainerRef }
|
|
155
142
|
];
|
|
156
143
|
ToolTipDirective.propDecorators = {
|
|
157
|
-
responsivePosition: [{ type: Input }],
|
|
158
144
|
showOnHover: [{ type: Input }],
|
|
159
145
|
showToolTip: [{ type: Input }],
|
|
160
|
-
width: [{ type: Input }],
|
|
161
146
|
text: [{ type: Input }],
|
|
162
147
|
position: [{ type: Input }],
|
|
163
|
-
onMouseEnter: [{ type: HostListener, args: [
|
|
164
|
-
onMouseLeave: [{ type: HostListener, args: [
|
|
148
|
+
onMouseEnter: [{ type: HostListener, args: ["mouseenter",] }],
|
|
149
|
+
onMouseLeave: [{ type: HostListener, args: ["mouseleave",] }]
|
|
165
150
|
};
|
|
166
151
|
|
|
167
152
|
class ToolTipModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-tooltip.js","sources":["../../../projects/mis-components/tooltip/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts","../../../projects/mis-components/tooltip/mis-crystal-design-system-tooltip.ts"],"sourcesContent":["import {AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'mis-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss']\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit{\n\n public toolTipText: string = ''\n public toolTipWidth: string = ''\n public toolTipPosition: 'Left' | 'Right' | 'Top' | 'Bottom' = 'Bottom'\n\n @Input() set text(value: string){\n this.toolTipText = value\n this.updateToolTipPosition()\n }\n @Input() set width(value: string){\n this.toolTipWidth = value;\n this.updateToolTipPosition()\n }\n @Input() set position(value: 'Left' | 'Right' | 'Top' | 'Bottom'){\n this.toolTipPosition = value\n this.updateToolTipPosition()\n }\n\n @ViewChild('container') container: ElementRef\n\n constructor(private renderer: Renderer2) {\n }\n ngOnInit() {\n }\n ngAfterViewInit(){\n this.updateToolTipPosition()\n }\n updateToolTipPosition(){\n if(this.container){\n let width = this.container.nativeElement.offsetWidth\n if(this.toolTipPosition === 'Left'){\n this.renderer.setStyle(this.container.nativeElement, 'left', `-${width + 12}px`)\n this.renderer.setStyle(this.container.nativeElement, 'right', '')\n }\n else if(this.toolTipPosition === 'Right'){\n this.renderer.setStyle(this.container.nativeElement, 'left', '')\n this.renderer.setStyle(this.container.nativeElement, 'right', `-${width + 12}px`)\n }\n else{\n this.renderer.setStyle(this.container.nativeElement, 'left', '50%')\n this.renderer.setStyle(this.container.nativeElement, 'right', '')\n }\n }\n }\n}\n","import {\n AfterViewInit,\n ComponentFactoryResolver, ComponentRef,\n Directive,\n ElementRef, HostListener, Input,\n OnInit,\n Renderer2,\n ViewContainerRef\n} from '@angular/core';\nimport {ToolTipComponent} from './tooltip.component';\nimport {isChildNodeOf} from 'codelyzer/util/isChildNodeOf';\n\n@Directive({\n selector: '[misToolTip]'\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false\n public toolTipWidth: string = ''\n public toolTipText: string = ''\n public toolTipPosition: 'Left' | 'Right' | 'Top' | 'Bottom' = 'Bottom'\n\n @Input() responsivePosition: boolean = false\n @Input() showOnHover: boolean = false\n @Input() set showToolTip(value: boolean){\n this.isToolTipDisplayed = value\n if(value) this.displayToolTip()\n else this.hideToolTip()\n }\n @Input() set width(value: string){\n this.toolTipWidth = value\n this.createToolTip()\n }\n @Input() set text(value: string){\n this.toolTipText = value\n this.createToolTip()\n }\n @Input() set position(value: 'Left' | 'Right' | 'Top' | 'Bottom'){\n this.toolTipPosition = value\n this.createToolTip()\n }\n\n @HostListener('mouseenter',) onMouseEnter() {\n if (this.showOnHover) this.displayToolTip()\n }\n @HostListener('mouseleave',) onMouseLeave(){\n if(this.showOnHover) this.hideToolTip()\n }\n\n private componentRef: ComponentRef<ToolTipComponent>\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) {\n }\n\n ngOnInit() {\n this.createToolTip()\n }\n ngAfterViewInit(){\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative')\n if(this.isToolTipDisplayed) this.displayToolTip()\n else this.hideToolTip()\n if(this.isToolTipDisplayed && this.responsivePosition) this.updatePosition()\n }\n createToolTip(){\n const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(ToolTipComponent);\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.componentRef.instance.width = this.toolTipWidth\n this.componentRef.instance.text = this.toolTipText\n this.componentRef.instance.position = this.toolTipPosition\n }\n displayToolTip(){\n let isChild = this.elementRef.nativeElement.contains(this.componentRef.location.nativeElement)\n if(!isChild) this.renderer.appendChild(this.elementRef.nativeElement, this.componentRef.location.nativeElement)\n if(this.responsivePosition) this.updatePosition()\n }\n hideToolTip(){\n let isChild = this.elementRef.nativeElement.contains(this.componentRef.location.nativeElement)\n if(isChild) this.renderer.removeChild(this.elementRef.nativeElement, this.componentRef.location.nativeElement)\n }\n updatePosition(){\n // let rect: any = this.componentRef.location.nativeElement.children[0].getBoundingClientRect()\n // let {x, y, height, width} = rect\n //TODO: Add logic for responsive positioning\n // Use default value as priority and dont change it here 'toolTipPosition'\n // Update the position using below line\n // this.componentRef.instance.position = 'Right'\n // console.log(x, y, height, width)\n }\n}\n\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ToolTipDirective } from './tooltip.directive';\nimport {ToolTipComponent} from './tooltip.component';\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents:[ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-tooltip.js","sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts","../../../projects/mis-components/tooltip/mis-crystal-design-system-tooltip.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, ViewContainerRef, Injector } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ConnectionPositionPair } from '@angular/cdk/overlay';
|
|
2
|
+
|
|
3
|
+
const genPositionPairs = ({ positionX, positionY, offsetX = 0, offsetY = 0 }, isResponsive) => {
|
|
4
|
+
const positions = [
|
|
5
|
+
new ConnectionPositionPair({ originX: positionX, originY: positionY }, {
|
|
6
|
+
overlayX: positionX,
|
|
7
|
+
overlayY: positionY
|
|
8
|
+
}, offsetX, offsetY),
|
|
9
|
+
new ConnectionPositionPair({ originX: "center", originY: "bottom" }, { overlayX: "center", overlayY: "top" }, offsetX, offsetY),
|
|
10
|
+
new ConnectionPositionPair({ originX: "center", originY: "top" }, { overlayX: "center", overlayY: "bottom" }, offsetX, offsetY),
|
|
11
|
+
new ConnectionPositionPair({ originX: "start", originY: "bottom" }, { overlayX: "start", overlayY: "top" }, offsetX, offsetY),
|
|
12
|
+
new ConnectionPositionPair({ originX: "start", originY: "top" }, { overlayX: "start", overlayY: "bottom" }, offsetX, offsetY),
|
|
13
|
+
new ConnectionPositionPair({ originX: "end", originY: "bottom" }, { overlayX: "end", overlayY: "top" }, offsetX, offsetY),
|
|
14
|
+
new ConnectionPositionPair({ originX: "end", originY: "top" }, { overlayX: "end", overlayY: "bottom" }, offsetX, offsetY)
|
|
15
|
+
];
|
|
16
|
+
return isResponsive ? positions : positions.slice(0, 1);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Generated bundle index. Do not edit.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export { genPositionPairs };
|
|
24
|
+
//# sourceMappingURL=mis-crystal-design-system-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-utils.js","sources":["../../../projects/mis-components/utils/index.ts","../../../projects/mis-components/utils/mis-crystal-design-system-utils.ts"],"sourcesContent":["import { ConnectionPositionPair } from \"@angular/cdk/overlay\";\n\nexport const genPositionPairs = ({ positionX, positionY, offsetX = 0, offsetY = 0 }, isResponsive: boolean): ConnectionPositionPair[] => {\n const positions = [\n new ConnectionPositionPair(\n { originX: positionX, originY: positionY },\n {\n overlayX: positionX,\n overlayY: positionY\n },\n offsetX,\n offsetY\n ),\n new ConnectionPositionPair({ originX: \"center\", originY: \"bottom\" }, { overlayX: \"center\", overlayY: \"top\" }, offsetX, offsetY),\n new ConnectionPositionPair({ originX: \"center\", originY: \"top\" }, { overlayX: \"center\", overlayY: \"bottom\" }, offsetX, offsetY),\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, offsetX, offsetY),\n new ConnectionPositionPair({ originX: \"start\", originY: \"top\" }, { overlayX: \"start\", overlayY: \"bottom\" }, offsetX, offsetY),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, offsetX, offsetY),\n new ConnectionPositionPair({ originX: \"end\", originY: \"top\" }, { overlayX: \"end\", overlayY: \"bottom\" }, offsetX, offsetY)\n ];\n return isResponsive ? positions : positions.slice(0, 1);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAEa,gBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,EAAE,YAAqB;IACxG,MAAM,SAAS,GAAG;QAChB,IAAI,sBAAsB,CACxB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAC1C;YACE,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;SACpB,EACD,OAAO,EACP,OAAO,CACR;QACD,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/H,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/H,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QAC7H,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QAC7H,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QACzH,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;KAC1H,CAAC;IACF,OAAO,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D;;ACrBA;;;;;;"}
|
package/package.json
CHANGED
package/tooltip/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./public_api";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"ToolTipDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"ToolTipDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1},"arguments":[{"selector":"[misToolTip]"}]}],"members":{"showOnHover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"showToolTip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"onMouseEnter":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":30,"character":3},"arguments":["mouseenter"]}]}],"onMouseLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":33,"character":3},"arguments":["mouseleave"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":37,"character":31},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":37,"character":60},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":37,"character":95}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"displayToolTip":[{"__symbolic":"method"}],"positionTooltip":[{"__symbolic":"method"}],"hideToolTip":[{"__symbolic":"method"}]}},"ToolTipComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"mis-tooltip","template":"<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\">{{ toolTipText }}</div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n","styles":["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]}]}],"members":{"container":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":12,"character":3},"arguments":["container"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"ToolTipModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ToolTipDirective"},{"__symbolic":"reference","name":"ToolTipComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":12}],"exports":[{"__symbolic":"reference","name":"ToolTipDirective"},{"__symbolic":"reference","name":"ToolTipComponent"}],"entryComponents":[{"__symbolic":"reference","name":"ToolTipComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ToolTipModule"},"providers":[]}}}},"ITooltipPositions":{"__symbolic":"interface"}},"origins":{"ToolTipDirective":"./tooltip.directive","ToolTipComponent":"./tooltip-container/tooltip.component","ToolTipModule":"./tooltip.module","ITooltipPositions":"./models/tooltip.model"},"importAs":"mis-crystal-design-system/tooltip"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type ITooltipPositions = "left" | "right" | "top" | "bottom";
|
package/tooltip/public_api.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { ToolTipDirective } from
|
|
2
|
-
export { ToolTipComponent } from
|
|
3
|
-
export { ToolTipModule } from
|
|
1
|
+
export { ToolTipDirective } from "./tooltip.directive";
|
|
2
|
+
export { ToolTipComponent } from "./tooltip-container/tooltip.component";
|
|
3
|
+
export { ToolTipModule } from "./tooltip.module";
|
|
4
|
+
export { ITooltipPositions } from "./models/tooltip.model";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, OnInit } from "@angular/core";
|
|
2
|
+
import { ITooltipPositions } from "../models/tooltip.model";
|
|
3
|
+
export declare class ToolTipComponent implements OnInit, AfterViewInit {
|
|
4
|
+
toolTipText: string;
|
|
5
|
+
toolTipPosition: ITooltipPositions;
|
|
6
|
+
container: ElementRef;
|
|
7
|
+
constructor();
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
ngAfterViewInit(): void;
|
|
10
|
+
}
|