novo-elements 11.1.0 → 11.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/novo-elements-elements-button.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-common.mjs +0 -11
- package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-picker.mjs +1 -0
- package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-drag-drop.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-field.mjs +0 -2
- package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-form.mjs +9 -9
- package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-layout.mjs +0 -2
- package/fesm2022/novo-elements-elements-layout.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-picker.mjs +1 -1
- package/fesm2022/novo-elements-elements-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-query-builder.mjs +0 -1
- package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select-search.mjs +1 -2
- package/fesm2022/novo-elements-elements-select-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs +8 -3
- package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-utils.mjs +120 -8
- package/fesm2022/novo-elements-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/Helpers.d.ts +114 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-date-picker.mjs","sources":["../../../projects/novo-elements/src/elements/date-picker/DatePicker.ts","../../../projects/novo-elements/src/elements/date-picker/DatePickerInput.ts","../../../projects/novo-elements/src/elements/date-picker/DateRangeInput.ts","../../../projects/novo-elements/src/elements/date-picker/MultiDateInput.ts","../../../projects/novo-elements/src/elements/date-picker/DatePicker.module.ts","../../../projects/novo-elements/src/elements/date-picker/novo-elements-elements-date-picker.ts"],"sourcesContent":["// NG2\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { isDate, isValid, subDays } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DataTableRangeModel, DatePickerSelectModes, DateUtil, Helpers, modelTypes, RangeModel, rangeSelectModes } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_PICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker',\n providers: [DATE_PICKER_VALUE_ACCESSOR],\n animations: [\n trigger('startDateTextState', [\n state('startDate', style({\n opacity: '1.0',\n })),\n state('endDate', style({\n opacity: '0.6',\n })),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('endDateTextState', [\n state('startDate', style({\n opacity: '0.6',\n })),\n state('endDate', style({\n opacity: '1.0',\n })),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('indicatorState', [\n state('startDate', style({\n transform: 'translateX(0%)',\n })),\n state('endDate', style({\n transform: 'translateX(100%)',\n })),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n ],\n template: `\n <div class=\"date-picker-container\">\n <div class=\"date-range-tabs\" *ngIf=\"range\" [class.week-select-mode]=\"weekRangeSelect\">\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('startDate')\"\n [@startDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-start-date\"\n >{{ startDateLabel }}</span\n >\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('endDate')\"\n [@endDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-end-date\"\n >{{ endDateLabel }}</span\n >\n <i class=\"indicator\" [@indicatorState]=\"rangeSelectMode\"></i>\n </div>\n\n <novo-calendar\n [activeDate]=\"activeDate\"\n [(selected)]=\"selection\"\n (selectedChange)=\"updateSelection($event)\"\n [mode]=\"mode\"\n [numberOfMonths]=\"numberOfMonths\"\n [weekStartsOn]=\"weekStart\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [minDate]=\"start\"\n [maxDate]=\"end\"\n ></novo-calendar>\n\n <div class=\"calendar-footer\" [hidden]=\"hideFooter\">\n\n <novo-button [hidden]=\"hideToday\" (click)=\"setToday()\" class=\"today\" size=\"small\" data-automation-id=\"calendar-today\">{{ labels.today }}</novo-button>\n <ng-content select=\".footer-content\"></ng-content>\n </div>\n </div>\n `,\n styleUrls: ['./DatePicker.scss'],\n standalone: false\n})\nexport class NovoDatePickerElement implements ControlValueAccessor, OnInit {\n /**\n * The minimum year to allow selected in year select view\n **/\n @Input()\n minYear: string | number;\n /**\n * The maximum year to allow selected in year select view\n **/\n @Input()\n maxYear: string | number;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * **Deprecated** Whether the date-picker is used outside of an overlay.\n **/\n @Input()\n @BooleanInput()\n inline: boolean;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n /**\n * Certain dates that are already selected.\n **/\n @Input()\n preselected: Date[] = [];\n /**\n * Whether the days for the previous and next month should be hidden.\n **/\n @Input()\n @BooleanInput()\n @HostBinding('class.hide-overflow-days')\n public hideOverflowDays: boolean = false;\n /**\n * Whether the footer should be hidden - contains `today`/`cancel`/`save` buttons\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n\n /**\n * Whether to hide the `today` button.\n **/\n @Input()\n @BooleanInput()\n public hideToday: boolean = false;\n\n @Input()\n disabledDateMessage: string;\n\n @Input()\n dateForInitialView?: Date;\n\n // Select callback for output\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter(false);\n\n _mode: DatePickerSelectModes = 'single';\n _range: boolean;\n _weekRangeSelect: boolean;\n _numberOfMonths: number[] = [0];\n\n /**\n * Number of months to display at once.\n * @default 1\n **/\n @Input()\n get numberOfMonths(): number {\n return this._numberOfMonths.length;\n }\n set numberOfMonths(value) {\n this._numberOfMonths = Array.from(Array(Number(value)).keys());\n }\n\n /**\n * How the date selection should work.\n * @default single\n **/\n @Input()\n get mode(): DatePickerSelectModes {\n return this._mode;\n }\n set mode(value) {\n if (this._mode !== value) {\n this._mode = value;\n }\n }\n /**\n * **deprecated** please use `mode=\"range\"`.\n **/\n @Input()\n get range(): boolean {\n return ['range', 'week'].includes(this.mode) || this._range;\n }\n set range(value) {\n console.warn(`'range' property is deprecated, please use 'mode=\"range\"'.`);\n if (this._range !== value) {\n this._range = value;\n this.mode = 'range';\n }\n }\n /**\n * **deprecated** please use `mode=\"week\"`.\n **/\n @Input()\n get weekRangeSelect(): boolean {\n return this._mode === 'week' || this._weekRangeSelect;\n }\n set weekRangeSelect(value) {\n console.warn(`'weekRangeSelect' property is deprecated, please use 'mode=\"week\"'.`);\n if (this._weekRangeSelect !== value) {\n this._weekRangeSelect = value;\n this.mode = 'week';\n }\n }\n\n model: modelTypes;\n activeDate: Date;\n\n _selection: Date[] = [];\n preview: Date[] = [];\n startDateLabel: string;\n endDateLabel: string;\n\n rangeSelectMode: rangeSelectModes = 'startDate';\n _onChange: Function = () => {};\n _onTouched: Function = () => {};\n\n get selection(): Date[] {\n return this._selection;\n }\n set selection(value) {\n this._selection = value ? value.filter(isDate).map((d) => DateUtil.startOfDay(d)) : [];\n }\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n // Determine the year array\n const now = new Date();\n // Set labels\n if (this.model) {\n this.modelToSelection(this.model);\n }\n if (this.dateForInitialView) {\n this.updateView(this.dateForInitialView);\n } else if (this.selection && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n }\n\n updateView(date) {\n const value: any = date ? new Date(date) : new Date();\n this.activeDate = new Date(value);\n }\n\n updateSelection(selected: Date[], fireEvents = true) {\n this.selection = selected;\n\n this.startDateLabel = this.labels.formatDateWithFormat(this.selection[0], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n this.endDateLabel = this.labels.formatDateWithFormat(this.selection[1], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n if (fireEvents) {\n switch (this.mode) {\n case 'multiple':\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection);\n this.model = this.selection;\n break;\n case 'range':\n case 'week':\n if (this.selection.filter(Boolean).length === 2) {\n this.fireRangeSelect();\n // Also, update the ngModel\n const model = {\n startDate: this.selection[0],\n endDate: this.selection[1],\n };\n this._onChange(model);\n this.model = model;\n }\n break;\n case 'single':\n default:\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection[0]);\n this.model = this.selection[0];\n break;\n }\n }\n\n this.cdr.markForCheck();\n }\n\n eventData(date: Date) {\n return {\n year: date.getFullYear(),\n month: this.labels.formatDateWithFormat(date, { month: 'long' }),\n day: this.labels.formatDateWithFormat(date, { weekday: 'long' }),\n date,\n };\n }\n\n fireSelect() {\n if (this.mode === 'multiple') {\n this.onSelect.next(this.selection);\n } else {\n this.onSelect.next(this.eventData(this.selection[0]));\n }\n }\n\n fireRangeSelect() {\n // Make sure the start date is before the end date\n if (this.selection.filter(Boolean).length === 2) {\n const [start, end] = this.selection;\n this.onSelect.next({\n startDate: this.eventData(start),\n endDate: this.eventData(end),\n });\n }\n }\n\n setToday() {\n const tmp = new Date();\n this.updateView(tmp);\n this.updateSelection(Array.of(tmp));\n }\n\n toggleRangeSelect(range: rangeSelectModes): void {\n this.rangeSelectMode = range;\n if (range === 'startDate' && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n if (range === 'endDate' && this.selection.length === 2) {\n this.updateView(this.selection[1]);\n }\n }\n\n modelToSelection(model: modelTypes) {\n switch (this.mode) {\n case 'multiple':\n this.selection = model as Date[];\n break;\n case 'range':\n case 'week':\n this.setRangeSelection();\n case 'single':\n default:\n this.selection = [model as Date];\n break;\n }\n }\n\n // ValueAccessor Functions\n writeValue(model: modelTypes): void {\n this.model = model;\n if (this.mode === 'multiple') {\n this.selection = this.model as Date[];\n }\n if (this.mode === 'range') {\n this.setRangeSelection();\n }\n if (Helpers.isDate(model)) {\n this.updateView(model);\n this.modelToSelection(model);\n } else if (Helpers.isString(model)) {\n const date = DateUtil.parse(model as any);\n if (isValid(date)) {\n this.updateView(date);\n this.modelToSelection(date);\n }\n }\n }\n\n setRangeSelection() {\n if (this.model?.hasOwnProperty('startDate')) {\n // coming from standalone date picker\n const range = this.model as RangeModel;\n this.selection = [range.startDate, range.endDate].filter(Boolean);\n } else if (this.model?.hasOwnProperty('min')) {\n // coming from data-table filter where model end date is the beginning of the next day\n const range = this.model as DataTableRangeModel;\n this.selection = [range.min, subDays(range.max, 1)].filter(Boolean);\n }\n }\n\n registerOnChange(fn: Function): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this._onTouched = fn;\n }\n}\n","// NG\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedValue\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (focus)=\"_handleFocus($event)\"\n (keydown)=\"_handleKeydown($event)\"\n (input)=\"_handleInput($event)\"\n (blur)=\"_handleBlur($event)\"\n (accept)=\"handleMaskAccept($event)\"\n #input\n data-automation-id=\"date-input\"\n [disabled]=\"disabled\"\n />\n <span class=\"error-text\" *ngIf=\"showInvalidDateError\">{{ invalidDateErrorMessage }}</span>\n <i *ngIf=\"!hasValue\" (click)=\"openPanel()\" class=\"bhi-calendar\"></i>\n <i *ngIf=\"hasValue\" (click)=\"clearAction()\" class=\"bhi-times\"></i>\n <novo-overlay-template [parent]=\"overlayElement\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n (onSelect)=\"onSelected($event)\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n [hideFooter]=\"hideFooter\"\n [hideToday]=\"hideToday\"\n [dateForInitialView]=\"dateForInitialView\">\n <div *ngIf=\"hasButtons\" class=\"footer-content\">\n <novo-button\n class=\"cancel-button\"\n data-automation-id=\"date-picker-cancel\"\n theme=\"dialogue\"\n size=\"small\"\n (click)=\"cancel()\">{{ labels.cancel }}</novo-button>\n <novo-button\n class=\"save-button\"\n data-automation-id=\"date-picker-save\"\n theme=\"primary\"\n color=\"primary\"\n size=\"small\"\n (click)=\"save()\">{{ labels.save }}</novo-button>\n </div>\n </novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DatePickerInput.scss'],\n standalone: false\n})\nexport class NovoDatePickerInputElement implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n public value: any;\n public formattedValue: string = '';\n public showInvalidDateError: boolean;\n public invalidDateErrorMessage: string = '';\n private userDefinedFormat: boolean;\n private isInvalidDate: boolean;\n\n /** View -> model callback called when value changes */\n _onChange: (value: any) => void = () => {};\n\n /** View -> model callback called when autocomplete has been touched */\n _onTouched = () => {};\n\n /**\n * The name of the form field, get passed to the native `input` element\n **/\n @Input()\n name: string;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * Placeholder text to display in the input when it is empty.\n **/\n @Input()\n placeholder: string;\n /**\n * MaskOptions to pass to the angular-imask plugin\n **/\n @Input()\n maskOptions: any;\n /**\n * The format to use to parse and render dates: DD/MM/YYYY or MM/DD/YYYY\n **/\n @Input()\n format: string;\n /**\n * Whether to apply a text mask to the date (see `maskOptions`). Only enabled if allowInvalidDate is false.\n */\n @Input()\n textMaskEnabled: boolean = true;\n /**\n * Whether the input should emit values when the field does not yet constitute a valid date\n */\n @Input()\n allowInvalidDate: boolean = false;\n /**\n * The element to use as the parent for the date picker's overlay (to determine bounds sizing). By default,\n * this refers to the input element itself, but may be a container if it has a padded border.\n */\n @Input()\n overlayOnElement: ElementRef;\n /**\n * Whether the footer in the date picker which contains `today` button and cancel/save buttons should be hidden.\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n /**\n * Whether to hide the 'today' button\n */\n @Input()\n @BooleanInput()\n public hideToday: boolean = false;\n /**\n * Whether to display the picker together with 'cancel'/'save' buttons\n */\n @Input()\n @BooleanInput()\n public hasButtons: boolean = false;\n /**\n * Sets the field as to appear disabled, users will not be able to interact with the text field.\n **/\n @HostBinding('class.disabled')\n @Input()\n disabled: boolean = false;\n /**\n * A message to display in the picker overlay when a given date is disabled through minimum/maximum\n */\n @Input()\n disabledDateMessage: string;\n /**\n * An optional date/month to show in the DatePicker initially besides the current date/month\n */\n @Input()\n dateForInitialView?: Date;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n changeEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n onSave: EventEmitter<any> = new EventEmitter();\n @Output()\n onCancel: EventEmitter<any> = new EventEmitter();\n @Output()\n valueCleared: EventEmitter<any> = new EventEmitter();\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private _changeDetectorRef: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.localizedDatePlaceholder();\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n ngAfterViewInit(): void {\n this.overlay.panelClosingActions.subscribe(this._handleOverlayClickout.bind(this));\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n this.setupInvalidDateErrorMessage();\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n closePanel(): void {\n this.overlay.closePanel();\n }\n get panelOpen(): boolean {\n return this.overlay?.panelOpen;\n }\n\n get overlayElement(): ElementRef {\n return this.overlayOnElement || this.element;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, true);\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleInput(event: KeyboardEvent): void {\n // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be\n // handled by the (accept) event.\n if (document.activeElement === event.target && !this.maskOptions) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, false);\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n if (!this.overlay.isBlurRecipient(event)) {\n this.handleInvalidDate();\n this.blurEvent.emit(event);\n }\n }\n\n _handleOverlayClickout(): void {\n this.handleInvalidDate(/*fromPanelClose:*/true);\n this.blurEvent.emit();\n }\n\n _handleFocus(event: FocusEvent): void {\n this.showInvalidDateError = false;\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n _handleValueUpdate(value: string, blur: boolean): void {\n if (value === '') {\n this.clearValue();\n if (!this.hasButtons) {\n this.closePanel();\n }\n } else {\n this.formatDate(value, blur);\n this.openPanel();\n }\n }\n\n handleMaskAccept(maskValue: string): void {\n this._handleValueUpdate(maskValue, false);\n }\n\n protected formatDate(value: string, blur: boolean) {\n try {\n let dateTimeValue: Date;\n let isInvalidDate: boolean;\n if (this.format) {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);\n } else {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');\n }\n this.isInvalidDate = isInvalidDate;\n // if we have a full date - set the dateTimeValue\n if (dateTimeValue?.getFullYear()?.toString().length === 4) {\n const dt = new Date(dateTimeValue);\n this.dispatchOnChange(dt, blur);\n // if we only have a partial date - set the value to null\n } else if (isNaN(dateTimeValue?.getUTCDate())) {\n this.dispatchOnChange(null, blur);\n }\n } catch (err) {}\n }\n\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n registerOnChange(fn: (value: any) => {}): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n handleInvalidDate(fromPanelClose = false): void {\n if (this.isInvalidDate) {\n this.showInvalidDateError = true;\n this.clearValue();\n if (!fromPanelClose) {\n this.closePanel();\n }\n }\n }\n\n setupInvalidDateErrorMessage(): void {\n let dateFormat: string = this.labels.dateFormatString();\n if (Helpers.isEmpty(dateFormat)) {\n // Default to mm/dd/yyyy\n dateFormat = 'mm/dd/yyyy';\n } else {\n dateFormat = dateFormat.toLowerCase();\n }\n this.invalidDateErrorMessage = `Invalid date field entered. Date format of ${dateFormat} is required.`;\n }\n\n public dispatchOnChange(newValue?: any, blur: boolean = false, skip: boolean = false) {\n if (newValue !== this.value) {\n this._onChange(newValue);\n this.changeEvent.emit(newValue);\n if (blur) {\n !skip && this.writeValue(newValue);\n } else {\n !skip && this._setCalendarValue(newValue);\n }\n }\n }\n\n private _setTriggerValue(value: any): void {\n this._setCalendarValue(value);\n this._setFormValue(value);\n this._changeDetectorRef.markForCheck();\n }\n\n private _setCalendarValue(value: any): void {\n if (value instanceof Date && this.value instanceof Date) {\n let newDate = new Date(value);\n newDate.setHours(0, 0, 0, 0);\n this.value = newDate;\n return;\n }\n this.value = value;\n }\n\n private _setFormValue(value: any): void {\n if (value) {\n const test = this.formatDateValue(value);\n this.formattedValue = test;\n } else {\n this.formattedValue = '';\n }\n }\n\n public onSelected(event: any): void {\n this.setValue(event);\n if (!this.hasButtons) {\n this.closePanel();\n }\n }\n\n private setValue(event: any | null): void {\n if (event?.date) {\n this.showInvalidDateError = false;\n this.dispatchOnChange(event.date, true);\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n this.setValue(event);\n this.closePanel();\n }\n\n /**\n * Respond to clicking the X button within the input\n */\n public clearAction() {\n this.clearValue();\n this.valueCleared.emit();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this._setFormValue(null);\n this.dispatchOnChange(null);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return err;\n }\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n\n save(): void {\n this.onSave.emit();\n }\n\n cancel(): void {\n this.onCancel.emit();\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Helpers, Key, RangeModel } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDateRangeInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-range-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedStartDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onStartInputChange($event)\"\n (input)=\"_onStartInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #startDate\n data-automation-id=\"date-range-input-start\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasStartValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasStartValue\" (click)=\"clearStartValue()\">x</novo-icon>\n </div>\n <div class=\"date-range-input-divider\">-</div>\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedEndDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onEndInputChange($event)\"\n (input)=\"_onEndInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #endDate\n data-automation-id=\"date-range-input-end\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasEndValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasEndValue\" (click)=\"clearEndValue()\">x</novo-icon>\n </div>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n [mode]=\"mode\"\n range=\"true\"\n inline=\"true\"\n (onSelect)=\"setValueAndClose($event)\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DateRangeInput.scss'],\n standalone: false\n})\nexport class NovoDateRangeInputElement implements OnInit, OnChanges, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n weekRangeSelect: boolean = false;\n @Input()\n mode: string = 'range';\n @Input()\n placeholder: string;\n @Input()\n maskOptions: any;\n @Input()\n format: string;\n @Input()\n textMaskEnabled: boolean = true;\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: RangeModel = { startDate: null, endDate: null };\n private _disabled: boolean = false;\n\n @Input() get value(): RangeModel {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this._setFormValue(value);\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n protected formatDate(value: string) {\n try {\n const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');\n return dateTimeValue ? new Date(dateTimeValue) : null;\n } catch (err) {\n return null;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n _onStartInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const startDate = this.formatDate((event.target as HTMLInputElement).value);\n if (startDate) {\n this.value = {\n ...this.value,\n startDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n _onEndInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const endDate = this.formatDate((event.target as HTMLInputElement).value);\n if (endDate) {\n this.value = {\n ...this.value,\n endDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n private _setFormValue(value: RangeModel): void {\n if (this.value) {\n this.formattedStartDate = this.formatDateValue(this.value.startDate);\n this.formattedEndDate = this.formatDateValue(this.value.endDate);\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n if (event && event.startDate && event.endDate) {\n const startDate = event.startDate.date;\n const endDate = event.endDate.date;\n this.value = { startDate, endDate };\n this.change.emit(this.value);\n }\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearStartValue() {\n this.formattedStartDate = '';\n this.value = { ...this.value, startDate: null };\n this.change.emit(this.value);\n }\n public clearEndValue() {\n this.formattedEndDate = '';\n this.value = { ...this.value, endDate: null };\n this.change.emit(this.value);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return '';\n }\n }\n\n public get hasStartValue() {\n return !Helpers.isEmpty(this.value?.startDate);\n }\n public get hasEndValue() {\n return !Helpers.isEmpty(this.value?.endDate);\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst MULTI_DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoMultiDateInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-multi-date-input',\n providers: [MULTI_DATE_VALUE_ACCESSOR],\n template: `\n <novo-chip-list>\n <novo-chip *ngFor=\"let date of value | default: []\" (removed)=\"remove($event, date)\">\n {{ date | date: format }}\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n </novo-chip-list>\n <div class=\"chip-input-container\" (click)=\"_handleFocus($event)\">\n <span class=\"placeholder\" *ngIf=\"!value.length\" data-automation-id=\"multi-date-input\">{{ placeholder }}</span>\n </div>\n <novo-icon class=\"panel-toggle\" [class.selected]=\"panelOpen\" (click)=\"openPanel()\">calendar</novo-icon>\n <label class=\"clear-all\" *ngIf=\"value.length\" (click)=\"clearValue()\">{{ labels.clearAll }} <i class=\"bhi-times\"></i></label>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n mode=\"multiple\"\n (onSelect)=\"setValueAndClose($event)\"\n [(ngModel)]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./MultiDateInput.scss'],\n standalone: false\n})\nexport class NovoMultiDateInputElement implements OnInit, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n placeholder: string;\n @Input()\n format: string = 'shortDate';\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Input()\n chipsCount: number = 5;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: Date[] = [];\n private _disabled: boolean = false;\n private notShown: any = {};\n\n @Input() get value(): Date[] {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n }\n\n formatter(value) {\n const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');\n return formatted;\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.panelOpen ? this.overlay.closePanel() : this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n remove(event: any, date: Date) {\n const current = new Set(this.value);\n if (current.has(date)) {\n current.delete(date);\n }\n this.value = [...current];\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: Date[] = []): void {\n if (event) {\n this.value = event;\n this.change.emit(this.value);\n }\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this.value = [];\n this.change.emit(this.value);\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// Vendor\nimport { IMaskModule } from 'angular-imask';\nimport { NovoPipesModule } from 'novo-elements/pipes';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCalendarModule } from 'novo-elements/elements/calendar';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoDatePickerElement } from './DatePicker';\nimport { NovoDatePickerInputElement } from './DatePickerInput';\nimport { NovoDateRangeInputElement } from './DateRangeInput';\nimport { NovoMultiDateInputElement } from './MultiDateInput';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoButtonModule,\n NovoPipesModule,\n NovoOverlayModule,\n IMaskModule,\n NovoIconModule,\n NovoChipsModule,\n NovoCalendarModule,\n ],\n declarations: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n})\nexport class NovoDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","__decorate","DATE_VALUE_ACCESSOR","i2","i5","i7.NovoDatePickerElement","i4","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-date-picker.mjs","sources":["../../../projects/novo-elements/src/elements/date-picker/DatePicker.ts","../../../projects/novo-elements/src/elements/date-picker/DatePickerInput.ts","../../../projects/novo-elements/src/elements/date-picker/DateRangeInput.ts","../../../projects/novo-elements/src/elements/date-picker/MultiDateInput.ts","../../../projects/novo-elements/src/elements/date-picker/DatePicker.module.ts","../../../projects/novo-elements/src/elements/date-picker/novo-elements-elements-date-picker.ts"],"sourcesContent":["// NG2\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { isDate, isValid, subDays } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DataTableRangeModel, DatePickerSelectModes, DateUtil, Helpers, modelTypes, RangeModel, rangeSelectModes } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_PICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker',\n providers: [DATE_PICKER_VALUE_ACCESSOR],\n animations: [\n trigger('startDateTextState', [\n state('startDate', style({\n opacity: '1.0',\n })),\n state('endDate', style({\n opacity: '0.6',\n })),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('endDateTextState', [\n state('startDate', style({\n opacity: '0.6',\n })),\n state('endDate', style({\n opacity: '1.0',\n })),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('indicatorState', [\n state('startDate', style({\n transform: 'translateX(0%)',\n })),\n state('endDate', style({\n transform: 'translateX(100%)',\n })),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n ],\n template: `\n <div class=\"date-picker-container\">\n <div class=\"date-range-tabs\" *ngIf=\"range\" [class.week-select-mode]=\"weekRangeSelect\">\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('startDate')\"\n [@startDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-start-date\"\n >{{ startDateLabel }}</span\n >\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('endDate')\"\n [@endDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-end-date\"\n >{{ endDateLabel }}</span\n >\n <i class=\"indicator\" [@indicatorState]=\"rangeSelectMode\"></i>\n </div>\n\n <novo-calendar\n [activeDate]=\"activeDate\"\n [(selected)]=\"selection\"\n (selectedChange)=\"updateSelection($event)\"\n [mode]=\"mode\"\n [numberOfMonths]=\"numberOfMonths\"\n [weekStartsOn]=\"weekStart\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [minDate]=\"start\"\n [maxDate]=\"end\"\n ></novo-calendar>\n\n <div class=\"calendar-footer\" [hidden]=\"hideFooter\">\n\n <novo-button [hidden]=\"hideToday\" (click)=\"setToday()\" class=\"today\" size=\"small\" data-automation-id=\"calendar-today\">{{ labels.today }}</novo-button>\n <ng-content select=\".footer-content\"></ng-content>\n </div>\n </div>\n `,\n styleUrls: ['./DatePicker.scss'],\n standalone: false\n})\nexport class NovoDatePickerElement implements ControlValueAccessor, OnInit {\n /**\n * The minimum year to allow selected in year select view\n **/\n @Input()\n minYear: string | number;\n /**\n * The maximum year to allow selected in year select view\n **/\n @Input()\n maxYear: string | number;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * **Deprecated** Whether the date-picker is used outside of an overlay.\n **/\n @Input()\n @BooleanInput()\n inline: boolean;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n /**\n * Certain dates that are already selected.\n **/\n @Input()\n preselected: Date[] = [];\n /**\n * Whether the days for the previous and next month should be hidden.\n **/\n @Input()\n @BooleanInput()\n @HostBinding('class.hide-overflow-days')\n public hideOverflowDays: boolean = false;\n /**\n * Whether the footer should be hidden - contains `today`/`cancel`/`save` buttons\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n\n /**\n * Whether to hide the `today` button.\n **/\n @Input()\n @BooleanInput()\n public hideToday: boolean = false;\n\n @Input()\n disabledDateMessage: string;\n\n @Input()\n dateForInitialView?: Date;\n\n // Select callback for output\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter(false);\n\n _mode: DatePickerSelectModes = 'single';\n _range: boolean;\n _weekRangeSelect: boolean;\n _numberOfMonths: number[] = [0];\n\n /**\n * Number of months to display at once.\n * @default 1\n **/\n @Input()\n get numberOfMonths(): number {\n return this._numberOfMonths.length;\n }\n set numberOfMonths(value) {\n this._numberOfMonths = Array.from(Array(Number(value)).keys());\n }\n\n /**\n * How the date selection should work.\n * @default single\n **/\n @Input()\n get mode(): DatePickerSelectModes {\n return this._mode;\n }\n set mode(value) {\n if (this._mode !== value) {\n this._mode = value;\n }\n }\n /**\n * **deprecated** please use `mode=\"range\"`.\n **/\n @Input()\n get range(): boolean {\n return ['range', 'week'].includes(this.mode) || this._range;\n }\n set range(value) {\n console.warn(`'range' property is deprecated, please use 'mode=\"range\"'.`);\n if (this._range !== value) {\n this._range = value;\n this.mode = 'range';\n }\n }\n /**\n * **deprecated** please use `mode=\"week\"`.\n **/\n @Input()\n get weekRangeSelect(): boolean {\n return this._mode === 'week' || this._weekRangeSelect;\n }\n set weekRangeSelect(value) {\n console.warn(`'weekRangeSelect' property is deprecated, please use 'mode=\"week\"'.`);\n if (this._weekRangeSelect !== value) {\n this._weekRangeSelect = value;\n this.mode = 'week';\n }\n }\n\n model: modelTypes;\n activeDate: Date;\n\n _selection: Date[] = [];\n preview: Date[] = [];\n startDateLabel: string;\n endDateLabel: string;\n\n rangeSelectMode: rangeSelectModes = 'startDate';\n _onChange: Function = () => {};\n _onTouched: Function = () => {};\n\n get selection(): Date[] {\n return this._selection;\n }\n set selection(value) {\n this._selection = value ? value.filter(isDate).map((d) => DateUtil.startOfDay(d)) : [];\n }\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n // Determine the year array\n const now = new Date();\n // Set labels\n if (this.model) {\n this.modelToSelection(this.model);\n }\n if (this.dateForInitialView) {\n this.updateView(this.dateForInitialView);\n } else if (this.selection && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n }\n\n updateView(date) {\n const value: any = date ? new Date(date) : new Date();\n this.activeDate = new Date(value);\n }\n\n updateSelection(selected: Date[], fireEvents = true) {\n this.selection = selected;\n\n this.startDateLabel = this.labels.formatDateWithFormat(this.selection[0], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n this.endDateLabel = this.labels.formatDateWithFormat(this.selection[1], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n if (fireEvents) {\n switch (this.mode) {\n case 'multiple':\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection);\n this.model = this.selection;\n break;\n case 'range':\n case 'week':\n if (this.selection.filter(Boolean).length === 2) {\n this.fireRangeSelect();\n // Also, update the ngModel\n const model = {\n startDate: this.selection[0],\n endDate: this.selection[1],\n };\n this._onChange(model);\n this.model = model;\n }\n break;\n case 'single':\n default:\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection[0]);\n this.model = this.selection[0];\n break;\n }\n }\n\n this.cdr.markForCheck();\n }\n\n eventData(date: Date) {\n return {\n year: date.getFullYear(),\n month: this.labels.formatDateWithFormat(date, { month: 'long' }),\n day: this.labels.formatDateWithFormat(date, { weekday: 'long' }),\n date,\n };\n }\n\n fireSelect() {\n if (this.mode === 'multiple') {\n this.onSelect.next(this.selection);\n } else {\n this.onSelect.next(this.eventData(this.selection[0]));\n }\n }\n\n fireRangeSelect() {\n // Make sure the start date is before the end date\n if (this.selection.filter(Boolean).length === 2) {\n const [start, end] = this.selection;\n this.onSelect.next({\n startDate: this.eventData(start),\n endDate: this.eventData(end),\n });\n }\n }\n\n setToday() {\n const tmp = new Date();\n this.updateView(tmp);\n this.updateSelection(Array.of(tmp));\n }\n\n toggleRangeSelect(range: rangeSelectModes): void {\n this.rangeSelectMode = range;\n if (range === 'startDate' && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n if (range === 'endDate' && this.selection.length === 2) {\n this.updateView(this.selection[1]);\n }\n }\n\n modelToSelection(model: modelTypes) {\n switch (this.mode) {\n case 'multiple':\n this.selection = model as Date[];\n break;\n case 'range':\n case 'week':\n this.setRangeSelection();\n break;\n case 'single':\n default:\n this.selection = [model as Date];\n break;\n }\n }\n\n // ValueAccessor Functions\n writeValue(model: modelTypes): void {\n this.model = model;\n if (this.mode === 'multiple') {\n this.selection = this.model as Date[];\n }\n if (this.mode === 'range') {\n this.setRangeSelection();\n }\n if (Helpers.isDate(model)) {\n this.updateView(model);\n this.modelToSelection(model);\n } else if (Helpers.isString(model)) {\n const date = DateUtil.parse(model as any);\n if (isValid(date)) {\n this.updateView(date);\n this.modelToSelection(date);\n }\n }\n }\n\n setRangeSelection() {\n if (this.model?.hasOwnProperty('startDate')) {\n // coming from standalone date picker\n const range = this.model as RangeModel;\n this.selection = [range.startDate, range.endDate].filter(Boolean);\n } else if (this.model?.hasOwnProperty('min')) {\n // coming from data-table filter where model end date is the beginning of the next day\n const range = this.model as DataTableRangeModel;\n this.selection = [range.min, subDays(range.max, 1)].filter(Boolean);\n }\n }\n\n registerOnChange(fn: Function): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this._onTouched = fn;\n }\n}\n","// NG\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedValue\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (focus)=\"_handleFocus($event)\"\n (keydown)=\"_handleKeydown($event)\"\n (input)=\"_handleInput($event)\"\n (blur)=\"_handleBlur($event)\"\n (accept)=\"handleMaskAccept($event)\"\n #input\n data-automation-id=\"date-input\"\n [disabled]=\"disabled\"\n />\n <span class=\"error-text\" *ngIf=\"showInvalidDateError\">{{ invalidDateErrorMessage }}</span>\n <i *ngIf=\"!hasValue\" (click)=\"openPanel()\" class=\"bhi-calendar\"></i>\n <i *ngIf=\"hasValue\" (click)=\"clearAction()\" class=\"bhi-times\"></i>\n <novo-overlay-template [parent]=\"overlayElement\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n (onSelect)=\"onSelected($event)\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n [hideFooter]=\"hideFooter\"\n [hideToday]=\"hideToday\"\n [dateForInitialView]=\"dateForInitialView\">\n <div *ngIf=\"hasButtons\" class=\"footer-content\">\n <novo-button\n class=\"cancel-button\"\n data-automation-id=\"date-picker-cancel\"\n theme=\"dialogue\"\n size=\"small\"\n (click)=\"cancel()\">{{ labels.cancel }}</novo-button>\n <novo-button\n class=\"save-button\"\n data-automation-id=\"date-picker-save\"\n theme=\"primary\"\n color=\"primary\"\n size=\"small\"\n (click)=\"save()\">{{ labels.save }}</novo-button>\n </div>\n </novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DatePickerInput.scss'],\n standalone: false\n})\nexport class NovoDatePickerInputElement implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n public value: any;\n public formattedValue: string = '';\n public showInvalidDateError: boolean;\n public invalidDateErrorMessage: string = '';\n private userDefinedFormat: boolean;\n private isInvalidDate: boolean;\n\n /** View -> model callback called when value changes */\n _onChange: (value: any) => void = () => {};\n\n /** View -> model callback called when autocomplete has been touched */\n _onTouched = () => {};\n\n /**\n * The name of the form field, get passed to the native `input` element\n **/\n @Input()\n name: string;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * Placeholder text to display in the input when it is empty.\n **/\n @Input()\n placeholder: string;\n /**\n * MaskOptions to pass to the angular-imask plugin\n **/\n @Input()\n maskOptions: any;\n /**\n * The format to use to parse and render dates: DD/MM/YYYY or MM/DD/YYYY\n **/\n @Input()\n format: string;\n /**\n * Whether to apply a text mask to the date (see `maskOptions`). Only enabled if allowInvalidDate is false.\n */\n @Input()\n textMaskEnabled: boolean = true;\n /**\n * Whether the input should emit values when the field does not yet constitute a valid date\n */\n @Input()\n allowInvalidDate: boolean = false;\n /**\n * The element to use as the parent for the date picker's overlay (to determine bounds sizing). By default,\n * this refers to the input element itself, but may be a container if it has a padded border.\n */\n @Input()\n overlayOnElement: ElementRef;\n /**\n * Whether the footer in the date picker which contains `today` button and cancel/save buttons should be hidden.\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n /**\n * Whether to hide the 'today' button\n */\n @Input()\n @BooleanInput()\n public hideToday: boolean = false;\n /**\n * Whether to display the picker together with 'cancel'/'save' buttons\n */\n @Input()\n @BooleanInput()\n public hasButtons: boolean = false;\n /**\n * Sets the field as to appear disabled, users will not be able to interact with the text field.\n **/\n @HostBinding('class.disabled')\n @Input()\n disabled: boolean = false;\n /**\n * A message to display in the picker overlay when a given date is disabled through minimum/maximum\n */\n @Input()\n disabledDateMessage: string;\n /**\n * An optional date/month to show in the DatePicker initially besides the current date/month\n */\n @Input()\n dateForInitialView?: Date;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n changeEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n onSave: EventEmitter<any> = new EventEmitter();\n @Output()\n onCancel: EventEmitter<any> = new EventEmitter();\n @Output()\n valueCleared: EventEmitter<any> = new EventEmitter();\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private _changeDetectorRef: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.localizedDatePlaceholder();\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n ngAfterViewInit(): void {\n this.overlay.panelClosingActions.subscribe(this._handleOverlayClickout.bind(this));\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n this.setupInvalidDateErrorMessage();\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n closePanel(): void {\n this.overlay.closePanel();\n }\n get panelOpen(): boolean {\n return this.overlay?.panelOpen;\n }\n\n get overlayElement(): ElementRef {\n return this.overlayOnElement || this.element;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, true);\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleInput(event: KeyboardEvent): void {\n // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be\n // handled by the (accept) event.\n if (document.activeElement === event.target && !this.maskOptions) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, false);\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n if (!this.overlay.isBlurRecipient(event)) {\n this.handleInvalidDate();\n this.blurEvent.emit(event);\n }\n }\n\n _handleOverlayClickout(): void {\n this.handleInvalidDate(/*fromPanelClose:*/true);\n this.blurEvent.emit();\n }\n\n _handleFocus(event: FocusEvent): void {\n this.showInvalidDateError = false;\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n _handleValueUpdate(value: string, blur: boolean): void {\n if (value === '') {\n this.clearValue();\n if (!this.hasButtons) {\n this.closePanel();\n }\n } else {\n this.formatDate(value, blur);\n this.openPanel();\n }\n }\n\n handleMaskAccept(maskValue: string): void {\n this._handleValueUpdate(maskValue, false);\n }\n\n protected formatDate(value: string, blur: boolean) {\n try {\n let dateTimeValue: Date;\n let isInvalidDate: boolean;\n if (this.format) {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);\n } else {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');\n }\n this.isInvalidDate = isInvalidDate;\n // if we have a full date - set the dateTimeValue\n if (dateTimeValue?.getFullYear()?.toString().length === 4) {\n const dt = new Date(dateTimeValue);\n this.dispatchOnChange(dt, blur);\n // if we only have a partial date - set the value to null\n } else if (isNaN(dateTimeValue?.getUTCDate())) {\n this.dispatchOnChange(null, blur);\n }\n } catch (err) {}\n }\n\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n registerOnChange(fn: (value: any) => {}): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n handleInvalidDate(fromPanelClose = false): void {\n if (this.isInvalidDate) {\n this.showInvalidDateError = true;\n this.clearValue();\n if (!fromPanelClose) {\n this.closePanel();\n }\n }\n }\n\n setupInvalidDateErrorMessage(): void {\n let dateFormat: string = this.labels.dateFormatString();\n if (Helpers.isEmpty(dateFormat)) {\n // Default to mm/dd/yyyy\n dateFormat = 'mm/dd/yyyy';\n } else {\n dateFormat = dateFormat.toLowerCase();\n }\n this.invalidDateErrorMessage = `Invalid date field entered. Date format of ${dateFormat} is required.`;\n }\n\n public dispatchOnChange(newValue?: any, blur: boolean = false, skip: boolean = false) {\n if (newValue !== this.value) {\n this._onChange(newValue);\n this.changeEvent.emit(newValue);\n if (blur) {\n !skip && this.writeValue(newValue);\n } else {\n !skip && this._setCalendarValue(newValue);\n }\n }\n }\n\n private _setTriggerValue(value: any): void {\n this._setCalendarValue(value);\n this._setFormValue(value);\n this._changeDetectorRef.markForCheck();\n }\n\n private _setCalendarValue(value: any): void {\n if (value instanceof Date && this.value instanceof Date) {\n let newDate = new Date(value);\n newDate.setHours(0, 0, 0, 0);\n this.value = newDate;\n return;\n }\n this.value = value;\n }\n\n private _setFormValue(value: any): void {\n if (value) {\n const test = this.formatDateValue(value);\n this.formattedValue = test;\n } else {\n this.formattedValue = '';\n }\n }\n\n public onSelected(event: any): void {\n this.setValue(event);\n if (!this.hasButtons) {\n this.closePanel();\n }\n }\n\n private setValue(event: any | null): void {\n if (event?.date) {\n this.showInvalidDateError = false;\n this.dispatchOnChange(event.date, true);\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n this.setValue(event);\n this.closePanel();\n }\n\n /**\n * Respond to clicking the X button within the input\n */\n public clearAction() {\n this.clearValue();\n this.valueCleared.emit();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this._setFormValue(null);\n this.dispatchOnChange(null);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return err;\n }\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n\n save(): void {\n this.onSave.emit();\n }\n\n cancel(): void {\n this.onCancel.emit();\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Helpers, Key, RangeModel } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDateRangeInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-range-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedStartDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onStartInputChange($event)\"\n (input)=\"_onStartInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #startDate\n data-automation-id=\"date-range-input-start\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasStartValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasStartValue\" (click)=\"clearStartValue()\">x</novo-icon>\n </div>\n <div class=\"date-range-input-divider\">-</div>\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedEndDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onEndInputChange($event)\"\n (input)=\"_onEndInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #endDate\n data-automation-id=\"date-range-input-end\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasEndValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasEndValue\" (click)=\"clearEndValue()\">x</novo-icon>\n </div>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n [mode]=\"mode\"\n range=\"true\"\n inline=\"true\"\n (onSelect)=\"setValueAndClose($event)\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DateRangeInput.scss'],\n standalone: false\n})\nexport class NovoDateRangeInputElement implements OnInit, OnChanges, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n weekRangeSelect: boolean = false;\n @Input()\n mode: string = 'range';\n @Input()\n placeholder: string;\n @Input()\n maskOptions: any;\n @Input()\n format: string;\n @Input()\n textMaskEnabled: boolean = true;\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: RangeModel = { startDate: null, endDate: null };\n private _disabled: boolean = false;\n\n @Input() get value(): RangeModel {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this._setFormValue(value);\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n protected formatDate(value: string) {\n try {\n const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');\n return dateTimeValue ? new Date(dateTimeValue) : null;\n } catch (err) {\n return null;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n _onStartInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const startDate = this.formatDate((event.target as HTMLInputElement).value);\n if (startDate) {\n this.value = {\n ...this.value,\n startDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n _onEndInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const endDate = this.formatDate((event.target as HTMLInputElement).value);\n if (endDate) {\n this.value = {\n ...this.value,\n endDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n private _setFormValue(value: RangeModel): void {\n if (this.value) {\n this.formattedStartDate = this.formatDateValue(this.value.startDate);\n this.formattedEndDate = this.formatDateValue(this.value.endDate);\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n if (event && event.startDate && event.endDate) {\n const startDate = event.startDate.date;\n const endDate = event.endDate.date;\n this.value = { startDate, endDate };\n this.change.emit(this.value);\n }\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearStartValue() {\n this.formattedStartDate = '';\n this.value = { ...this.value, startDate: null };\n this.change.emit(this.value);\n }\n public clearEndValue() {\n this.formattedEndDate = '';\n this.value = { ...this.value, endDate: null };\n this.change.emit(this.value);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return '';\n }\n }\n\n public get hasStartValue() {\n return !Helpers.isEmpty(this.value?.startDate);\n }\n public get hasEndValue() {\n return !Helpers.isEmpty(this.value?.endDate);\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst MULTI_DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoMultiDateInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-multi-date-input',\n providers: [MULTI_DATE_VALUE_ACCESSOR],\n template: `\n <novo-chip-list>\n <novo-chip *ngFor=\"let date of value | default: []\" (removed)=\"remove($event, date)\">\n {{ date | date: format }}\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n </novo-chip-list>\n <div class=\"chip-input-container\" (click)=\"_handleFocus($event)\">\n <span class=\"placeholder\" *ngIf=\"!value.length\" data-automation-id=\"multi-date-input\">{{ placeholder }}</span>\n </div>\n <novo-icon class=\"panel-toggle\" [class.selected]=\"panelOpen\" (click)=\"openPanel()\">calendar</novo-icon>\n <label class=\"clear-all\" *ngIf=\"value.length\" (click)=\"clearValue()\">{{ labels.clearAll }} <i class=\"bhi-times\"></i></label>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n mode=\"multiple\"\n (onSelect)=\"setValueAndClose($event)\"\n [(ngModel)]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./MultiDateInput.scss'],\n standalone: false\n})\nexport class NovoMultiDateInputElement implements OnInit, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n placeholder: string;\n @Input()\n format: string = 'shortDate';\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Input()\n chipsCount: number = 5;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: Date[] = [];\n private _disabled: boolean = false;\n private notShown: any = {};\n\n @Input() get value(): Date[] {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n }\n\n formatter(value) {\n const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');\n return formatted;\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.panelOpen ? this.overlay.closePanel() : this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n remove(event: any, date: Date) {\n const current = new Set(this.value);\n if (current.has(date)) {\n current.delete(date);\n }\n this.value = [...current];\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: Date[] = []): void {\n if (event) {\n this.value = event;\n this.change.emit(this.value);\n }\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this.value = [];\n this.change.emit(this.value);\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// Vendor\nimport { IMaskModule } from 'angular-imask';\nimport { NovoPipesModule } from 'novo-elements/pipes';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCalendarModule } from 'novo-elements/elements/calendar';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoDatePickerElement } from './DatePicker';\nimport { NovoDatePickerInputElement } from './DatePickerInput';\nimport { NovoDateRangeInputElement } from './DateRangeInput';\nimport { NovoMultiDateInputElement } from './MultiDateInput';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoButtonModule,\n NovoPipesModule,\n NovoOverlayModule,\n IMaskModule,\n NovoIconModule,\n NovoChipsModule,\n NovoCalendarModule,\n ],\n declarations: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n})\nexport class NovoDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","__decorate","DATE_VALUE_ACCESSOR","i2","i5","i7.NovoDatePickerElement","i4","i6"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-drag-drop.mjs","sources":["../../../projects/novo-elements/src/elements/drag-drop/drag-drop-box.ts","../../../projects/novo-elements/src/elements/drag-drop/drag-drop.module.ts","../../../projects/novo-elements/src/elements/drag-drop/novo-elements-elements-drag-drop.ts"],"sourcesContent":["import { OverlayContainer } from '@angular/cdk/overlay';\nimport { AfterViewInit, computed, Directive, ElementRef, EventEmitter, HostBinding, HostListener, inject, Input, OnDestroy, Output, Renderer2, signal } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nexport interface NovoDragFinishEvent<T> {\n draggedItem: T;\n allItems: T[];\n event: DragEvent;\n}\n\ninterface NovoDragItem<T> {\n item: T;\n element: HTMLElement;\n removeListeners: () => void;\n}\n\nconst SCROLL_DRAGGABLE_PADDING_REGION = 30;\nconst SCROLL_DRAGGABLE_EVENT_AMT = 10;\n\n@Directive({\n selector: '[novoDragDrop]',\n standalone: false,\n host: {\n class: 'novo-drag-container',\n '[class.dragging]': '!!pickedUp',\n }\n})\nexport class NovoDragBoxParent<T> implements AfterViewInit, OnDestroy {\n\n pickedUp?: HTMLElement;\n previewReplacing?: HTMLElement;\n savedOrder?: NovoDragItem<T>[];\n\n overlayContainer = inject(OverlayContainer, { optional: true });\n\n @Input('novoDragDrop') items: T[];\n /**\n * A function to specify whether a given item in the child list is draggable.\n * (Note that altering this after setup is not yet supported)\n */\n @Input('novoDragDropFilter') dragFilter?: (item: T) => boolean;\n /**\n * Prevents behavior that eases the act of dragging an object to the edge of a scrollable container. \n */\n @Input('novoDragDropDisableScroll') disableScroll?: boolean;\n\n @Output() novoDragDropFinish = new EventEmitter<NovoDragFinishEvent<T>>();\n\n private trackedItems: NovoDragItem<T>[];\n private scrollContainer = signal<HTMLElement>(null);\n private scrollContainerRect = computed(() => this.scrollContainer()?.getBoundingClientRect());\n private scrollX = signal<boolean>(false);\n private scrollY = signal<boolean>(false);\n\n get itemsReordered(): T[] {\n return this.trackedItems.map(item => item.item);\n }\n\n @HostBinding('class.dragging')\n get dragging() {\n return Boolean(this.pickedUp);\n }\n\n mutationObserver = new MutationObserver(this.mutationDetected.bind(this));\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n get element(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n if (this.items) {\n this.registerChildren();\n this.mutationObserver.observe(this.element, { childList: true });\n }\n // if items is falsey, then no behavior is set up. In future, this component may support late enablement,\n // but for now it's not a priority. (It would open the question of late disablement)\n }\n\n ngOnDestroy(): void {\n this.trackedItems?.forEach(item => {\n item.removeListeners();\n });\n }\n\n private registerChildren(): void {\n if (this.items) {\n if (this.items.length !== this.element.children.length) {\n throw new Error(`Could not match item list to children list - drag box contains ${this.items.length} items, but has ${this.element.children.length} elements`);\n }\n this.trackedItems = [];\n for (let i = 0; i < this.element.children.length; i++) {\n this.registerChild(this.element.children[i] as HTMLElement, i);\n }\n }\n }\n\n private registerChild(element: HTMLElement, index: number) {\n const trackedItem: Partial<NovoDragItem<T>> = {\n item: this.items[index],\n element\n };\n if (this.dragFilter && !this.dragFilter(this.items[index])) {\n element.draggable = false;\n trackedItem.removeListeners = () => {};\n } else {\n const listeners = [\n this.renderer.listen(element, 'dragstart', this.onDragStart.bind(this)),\n this.renderer.listen(element, 'drop', this.onDragFinish.bind(this)),\n this.renderer.listen(element, 'dragend', this.onDragStop.bind(this))\n ];\n element.draggable = true;\n trackedItem.removeListeners = () => listeners.forEach(cb => cb());\n }\n this.trackedItems.push(trackedItem as NovoDragItem<T>);\n }\n\n mutationDetected(mutations: MutationRecord[]) {\n if (this.pickedUp) {\n return;\n }\n const addedNodes = new Set<HTMLElement>();\n const removedNodes = new Set<HTMLElement>();\n for (let mutation of mutations) {\n mutation.addedNodes.forEach((a: HTMLElement) => {\n if (!removedNodes.delete(a)) {\n addedNodes.add(a);\n }\n });\n mutation.removedNodes.forEach((a: HTMLElement) => {\n if (!addedNodes.delete(a)) {\n removedNodes.add(a);\n }\n });\n }\n addedNodes.forEach(node => {\n const idx = Array.prototype.indexOf.call(this.element.children, node);\n this.registerChild(node, idx);\n });\n if (removedNodes.size > 0) {\n this.trackedItems = this.trackedItems.filter(\n item => {\n const keep = !removedNodes.has(item.element);\n if (!keep) {\n item.removeListeners();\n }\n return keep;\n });\n }\n }\n\n /** Per-item listeners */\n\n onDragStart(event: DragEvent) {\n if (this.shouldBlockDragStart(event)) {\n event.preventDefault();\n return;\n }\n const dataTransfer = event.dataTransfer;\n // Present a native 'move item' effect\n dataTransfer.effectAllowed = 'move';\n if (!this.disableScroll) {\n this.scrollContainer.set(this.findScrollableParent());\n }\n\n this.pickedUp = event.target as HTMLElement;\n event.stopPropagation();\n this.savedOrder = [...this.trackedItems];\n }\n\n // Equivalent of \"finally\" - this runs whether or not the drag finished on a valid ending location\n onDragStop(event: DragEvent): void {\n this.pickedUp = null;\n this.previewReplacing = null;\n this.savedOrder = null;\n event.stopPropagation();\n }\n\n onDragFinish(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.element.contains(event.currentTarget as HTMLElement)) {\n // this is for a different drag region - ignore\n return;\n }\n const draggedItem = this.trackedItems.find(item => item.element === this.pickedUp)?.item;\n this.trackedItems = Array.prototype.map.call(this.element.children, child => {\n const item = this.trackedItems.find(item => item.element === child);\n if (!item) {\n throw new Error('DragDrop: Error - could not reassociate an item post-drag');\n }\n return item;\n });\n this.novoDragDropFinish.emit({\n draggedItem,\n allItems: this.itemsReordered,\n event\n });\n\n }\n\n /** - end per-item listeners */\n\n @HostListener('window:dragover', ['$event'])\n onDragOver(event: DragEvent): void {\n if (!this.pickedUp || this.inOverlay(event)) {\n return;\n }\n let target = event.target as HTMLElement;\n if (!this.element.contains(target)) {\n target = null;\n }\n // In some cases (maybe browser-specific) we may have this event reported from a sub-element of a drag destination.\n // We need to go upwards in the tree to find the actual target\n if (target && !target.draggable) {\n target = this.findDraggableParentOfElement(target);\n }\n // Check if this drag event is within this drag box\n if (target && target.parentElement === this.element) {\n event.stopPropagation();\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'move';\n }\n if (this.previewReplacing !== target) {\n if (this.isValidTarget(target)) {\n this.previewReplacing = target;\n this.applyTempSort(this.pickedUp, target);\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n }\n } else {\n // if not within this drag box, then move this item back to its original position and show a diabled drag effect\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'none';\n }\n this.resetSorting();\n }\n if (!this.disableScroll) {\n this.processScrollDuringMove(event);\n }\n }\n\n private inOverlay(event: DragEvent): boolean {\n // Make sure a drag event is not looking at a tooltip or similar.\n // Return false if the dragbox itself is in an overlay - these scenarios will be harder to account for.\n const overlayElement = this.overlayContainer?.getContainerElement();\n return overlayElement && (overlayElement.contains(event.target as Node) && !overlayElement.contains(this.element));\n }\n\n private isValidTarget(target: HTMLElement): boolean {\n return target.draggable;\n }\n\n private findDraggableParentOfElement(target: HTMLElement): HTMLElement | null {\n const parentElement = target.parentElement;\n if (!parentElement) {\n return null;\n } else if (parentElement.draggable) {\n return parentElement;\n } else {\n return this.findDraggableParentOfElement(parentElement);\n }\n }\n\n private applyTempSort(showXElement: HTMLElement, inPlaceOfY: HTMLElement) {\n if (showXElement === inPlaceOfY) {\n // same element - ignoring\n return;\n }\n // Apply the \"preview\" effect from dragging one item to another\n const aIndex = Array.prototype.indexOf.call(this.elementRef.nativeElement.children, showXElement);\n const bIndex = Array.prototype.indexOf.call(this.elementRef.nativeElement.children, inPlaceOfY);\n const diff = bIndex - aIndex;\n let insertPosition: InsertPosition;\n if (diff > 0) {\n insertPosition = 'afterend';\n } else if (diff < 0) {\n insertPosition = 'beforebegin';\n } else {\n throw new Error('DragDrop: Two elements are in the same position');\n }\n inPlaceOfY.insertAdjacentElement(insertPosition, showXElement);\n }\n\n private resetSorting(): void {\n // return to the order of elements from the last time we called onDragPickup\n if (!this.savedOrder) {\n throw new Error('DragDrop: Cannot reset sorting with no saved order');\n }\n const boxElem = this.elementRef.nativeElement as HTMLElement;\n for (let i = 0; i < boxElem.children.length; i++) {\n const item = boxElem.children[i];\n if (this.savedOrder[i].element !== item && i > 0) {\n this.savedOrder[i - 1].element.insertAdjacentElement('afterend', this.savedOrder[i].element);\n }\n }\n }\n\n // If the user has provided classes indicating they only want a certain region to be draggable, ignore\n // this drag event if it is outside of there.\n private shouldBlockDragStart(event: DragEvent): boolean {\n const dragTarget = event.target as HTMLElement;\n // TODO: Allow for multiple drag targets, and drag exclusion targets\n const userDragTarget = dragTarget.querySelector('.novo-drag-target');\n if (userDragTarget) {\n return !this.isElementWithinEventBounds(userDragTarget, event);\n }\n }\n\n private processScrollDuringMove(event: DragEvent) {\n const scrollElement = this.scrollContainer();\n if (!scrollElement) {\n return;\n }\n const rect = this.scrollContainerRect();\n if (this.scrollX()) {\n if (event.x > rect.left && event.x < rect.left + SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollLeft -= 10;\n } else if (event.x < rect.right && event.x > rect.right - SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollLeft += 10;\n }\n }\n if (this.scrollY()) {\n if (event.y > rect.top && event.y < rect.top + SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollTop -= 10;\n } else if (event.y < rect.bottom && event.y > rect.bottom - SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollTop += 10;\n }\n }\n }\n\n public isElementWithinEventBounds(element: Element, event: DragEvent) {\n const rect = element.getBoundingClientRect();\n const isInside = event.clientX > rect.left && event.clientX < rect.right &&\n event.clientY < rect.bottom && event.clientY > rect.top;\n return isInside;\n }\n\n private findScrollableParent(): HTMLElement | null {\n let currentElement = this.element.parentElement;\n this.scrollX.set(false);\n this.scrollY.set(false);\n \n while (currentElement) {\n const hasVerticalScroll = currentElement.scrollHeight > currentElement.clientHeight;\n const hasHorizontalScroll = currentElement.scrollWidth > currentElement.clientWidth;\n const isScrollable = hasVerticalScroll || hasHorizontalScroll;\n \n if (isScrollable) {\n const computedStyle = window.getComputedStyle(currentElement);\n const overflowY = computedStyle.overflowY;\n const overflowX = computedStyle.overflowX;\n \n // Check if overflow is set to allow scrolling\n if ((overflowY === 'auto' || overflowY === 'scroll') || \n (overflowX === 'auto' || overflowX === 'scroll')) {\n // Verify the scrollable parent is smaller than the drag container\n if (currentElement.clientHeight < this.element.clientHeight) {\n this.scrollY.set(true);\n }\n if (currentElement.clientWidth < this.element.clientWidth) {\n this.scrollX.set(true);\n }\n if (this.scrollX() || this.scrollY()) {\n return currentElement;\n }\n }\n }\n \n currentElement = currentElement.parentElement;\n }\n \n return null;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NovoDragBoxParent } from './drag-drop-box';\n\n\n@NgModule({\n declarations: [NovoDragBoxParent],\n exports: [NovoDragBoxParent]\n})\nexport class NovoDragDropModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAgBA,MAAM,+BAA+B,GAAG,EAAE;AAC1C,MAAM,0BAA0B,GAAG,EAAE;MAUxB,iBAAiB,CAAA;AA2B1B,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;;AAGnD,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAKjC,WAAoB,CAAA,UAAsB,EAAU,QAAmB,EAAA;QAAnD,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAhC5D,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAarD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAA0B;AAGjE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAc,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,qBAAqB,EAAE,CAAC;AACrF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAWxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAIzE,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;IAGxC,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;;;;IAMxE,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,IAAG;YAC9B,IAAI,CAAC,eAAe,EAAE;AAC1B,SAAC,CAAC;;IAGE,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpD,gBAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,IAAI,CAAC,KAAK,CAAC,MAAM,mBAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA,SAAA,CAAW,CAAC;;AAElK,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAgB,EAAE,CAAC,CAAC;;;;IAKlE,aAAa,CAAC,OAAoB,EAAE,KAAa,EAAA;AACrD,QAAA,MAAM,WAAW,GAA6B;AAC1C,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACvB;SACH;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACxD,YAAA,OAAO,CAAC,SAAS,GAAG,KAAK;AACzB,YAAA,WAAW,CAAC,eAAe,GAAG,MAAK,GAAG;;aACnC;AACH,YAAA,MAAM,SAAS,GAAG;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACtE;AACD,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI;AACxB,YAAA,WAAW,CAAC,eAAe,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;;AAErE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAA8B,CAAC;;AAG1D,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;AAEJ,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAe;AACzC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe;AAC3C,QAAA,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;YAC5B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAc,KAAI;gBAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACzB,oBAAA,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;;AAEzB,aAAC,CAAC;YACF,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAc,KAAI;gBAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACvB,oBAAA,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;;AAE3B,aAAC,CAAC;;AAEN,QAAA,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;AACjC,SAAC,CAAC;AACF,QAAA,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CACxC,IAAI,IAAG;gBACH,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5C,IAAI,CAAC,IAAI,EAAE;oBACP,IAAI,CAAC,eAAe,EAAE;;AAE1B,gBAAA,OAAO,IAAI;AACf,aAAC,CAAC;;;;AAMd,IAAA,WAAW,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE;YACtB;;AAEJ,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;;AAEvC,QAAA,YAAY,CAAC,aAAa,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAGzD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAqB;QAC3C,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;;;AAI5C,IAAA,UAAU,CAAC,KAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,KAAK,CAAC,eAAe,EAAE;;AAG3B,IAAA,YAAY,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC,EAAE;;YAE5D;;QAEJ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI;AACxF,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAG;AACxE,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;YACnE,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;;AAEhF,YAAA,OAAO,IAAI;AACf,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACzB,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,cAAc;YAC7B;AACH,SAAA,CAAC;;;AAON,IAAA,UAAU,CAAC,KAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACzC;;AAEJ,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAqB;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,GAAG,IAAI;;;;AAIjB,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC7B,YAAA,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC;;;QAGtD,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;YACjD,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACpB,gBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;;AAE1C,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;oBAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;;qBACtC;AACH,oBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;;;;aAG3C;;AAEH,YAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACpB,gBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;;YAE1C,IAAI,CAAC,YAAY,EAAE;;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;AAInC,IAAA,SAAS,CAAC,KAAgB,EAAA;;;QAG9B,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,EAAE;QACnE,OAAO,cAAc,KAAK,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAG9G,IAAA,aAAa,CAAC,MAAmB,EAAA;QACrC,OAAO,MAAM,CAAC,SAAS;;AAGnB,IAAA,4BAA4B,CAAC,MAAmB,EAAA;AACpD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa;QAC1C,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,OAAO,IAAI;;AACR,aAAA,IAAI,aAAa,CAAC,SAAS,EAAE;AAChC,YAAA,OAAO,aAAa;;aACjB;AACH,YAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC;;;IAIvD,aAAa,CAAC,YAAyB,EAAE,UAAuB,EAAA;AACpE,QAAA,IAAI,YAAY,KAAK,UAAU,EAAE;;YAE7B;;;QAGJ,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC;QACjG,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC/F,QAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM;AAC5B,QAAA,IAAI,cAA8B;AAClC,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACV,cAAc,GAAG,UAAU;;AACxB,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACjB,cAAc,GAAG,aAAa;;aAC3B;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;AAEtE,QAAA,UAAU,CAAC,qBAAqB,CAAC,cAAc,EAAE,YAAY,CAAC;;IAG1D,YAAY,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;;AAEzE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAC5D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC9C,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;;;;;AAOhG,IAAA,oBAAoB,CAAC,KAAgB,EAAA;AACzC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAqB;;QAE9C,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC;QACpE,IAAI,cAAc,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,KAAK,CAAC;;;AAI9D,IAAA,uBAAuB,CAAC,KAAgB,EAAA;AAC5C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C,IAAI,CAAC,aAAa,EAAE;YAChB;;AAEJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,+BAA+B,EAAE;AAC9E,gBAAA,aAAa,CAAC,UAAU,IAAI,EAAE;;AAC3B,iBAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,+BAA+B,EAAE;AACvF,gBAAA,aAAa,CAAC,UAAU,IAAI,EAAE;;;AAGtC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,+BAA+B,EAAE;AAC5E,gBAAA,aAAa,CAAC,SAAS,IAAI,EAAE;;AAC1B,iBAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,+BAA+B,EAAE;AACzF,gBAAA,aAAa,CAAC,SAAS,IAAI,EAAE;;;;IAKlC,0BAA0B,CAAC,OAAgB,EAAE,KAAgB,EAAA;AAChE,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK;AACpE,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;AAC3D,QAAA,OAAO,QAAQ;;IAGX,oBAAoB,GAAA;AACxB,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAEvB,OAAO,cAAc,EAAE;YACnB,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY;YACnF,MAAM,mBAAmB,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW;AACnF,YAAA,MAAM,YAAY,GAAG,iBAAiB,IAAI,mBAAmB;YAE7D,IAAI,YAAY,EAAE;gBACd,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC;AAC7D,gBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;AACzC,gBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;;gBAGzC,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ;qBAC9C,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,EAAE;;oBAElD,IAAI,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACzD,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;oBAE1B,IAAI,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACvD,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;oBAE1B,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClC,wBAAA,OAAO,cAAc;;;;AAKjC,YAAA,cAAc,GAAG,cAAc,CAAC,aAAa;;AAGjD,QAAA,OAAO,IAAI;;+GA5VN,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,cAAA,EAAA,OAAA,CAAA,EAAA,UAAA,EAAA,CAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,aAAA,EAAA,CAAA,2BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,kBAAkB,EAAE,YAAY;AACnC;AACJ,iBAAA;uGAS0B,KAAK,EAAA,CAAA;sBAA3B,KAAK;uBAAC,cAAc;gBAKQ,UAAU,EAAA,CAAA;sBAAtC,KAAK;uBAAC,oBAAoB;gBAIS,aAAa,EAAA,CAAA;sBAAhD,KAAK;uBAAC,2BAA2B;gBAExB,kBAAkB,EAAA,CAAA;sBAA3B;gBAaG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAmJ7B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;;MCpMlC,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAHZ,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,iBAAiB,CAAA,EAAA,CAAA,CAAA;gHAElB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB;AAC9B,iBAAA;;;ACPD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-drag-drop.mjs","sources":["../../../projects/novo-elements/src/elements/drag-drop/drag-drop-box.ts","../../../projects/novo-elements/src/elements/drag-drop/drag-drop.module.ts","../../../projects/novo-elements/src/elements/drag-drop/novo-elements-elements-drag-drop.ts"],"sourcesContent":["import { OverlayContainer } from '@angular/cdk/overlay';\nimport { AfterViewInit, computed, Directive, ElementRef, EventEmitter, HostBinding, HostListener, inject, Input, OnDestroy, Output, Renderer2, signal } from '@angular/core';\n\nexport interface NovoDragFinishEvent<T> {\n draggedItem: T;\n allItems: T[];\n event: DragEvent;\n}\n\ninterface NovoDragItem<T> {\n item: T;\n element: HTMLElement;\n removeListeners: () => void;\n}\n\nconst SCROLL_DRAGGABLE_PADDING_REGION = 30;\nconst SCROLL_DRAGGABLE_EVENT_AMT = 10;\n\n@Directive({\n selector: '[novoDragDrop]',\n standalone: false,\n host: {\n class: 'novo-drag-container',\n '[class.dragging]': '!!pickedUp',\n }\n})\nexport class NovoDragBoxParent<T> implements AfterViewInit, OnDestroy {\n\n pickedUp?: HTMLElement;\n previewReplacing?: HTMLElement;\n savedOrder?: NovoDragItem<T>[];\n\n overlayContainer = inject(OverlayContainer, { optional: true });\n\n @Input('novoDragDrop') items: T[];\n /**\n * A function to specify whether a given item in the child list is draggable.\n * (Note that altering this after setup is not yet supported)\n */\n @Input('novoDragDropFilter') dragFilter?: (item: T) => boolean;\n /**\n * Prevents behavior that eases the act of dragging an object to the edge of a scrollable container. \n */\n @Input('novoDragDropDisableScroll') disableScroll?: boolean;\n\n @Output() novoDragDropFinish = new EventEmitter<NovoDragFinishEvent<T>>();\n\n private trackedItems: NovoDragItem<T>[];\n private scrollContainer = signal<HTMLElement>(null);\n private scrollContainerRect = computed(() => this.scrollContainer()?.getBoundingClientRect());\n private scrollX = signal<boolean>(false);\n private scrollY = signal<boolean>(false);\n\n get itemsReordered(): T[] {\n return this.trackedItems.map(item => item.item);\n }\n\n @HostBinding('class.dragging')\n get dragging() {\n return Boolean(this.pickedUp);\n }\n\n mutationObserver = new MutationObserver(this.mutationDetected.bind(this));\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n get element(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n if (this.items) {\n this.registerChildren();\n this.mutationObserver.observe(this.element, { childList: true });\n }\n // if items is falsey, then no behavior is set up. In future, this component may support late enablement,\n // but for now it's not a priority. (It would open the question of late disablement)\n }\n\n ngOnDestroy(): void {\n this.trackedItems?.forEach(item => {\n item.removeListeners();\n });\n }\n\n private registerChildren(): void {\n if (this.items) {\n if (this.items.length !== this.element.children.length) {\n throw new Error(`Could not match item list to children list - drag box contains ${this.items.length} items, but has ${this.element.children.length} elements`);\n }\n this.trackedItems = [];\n for (let i = 0; i < this.element.children.length; i++) {\n this.registerChild(this.element.children[i] as HTMLElement, i);\n }\n }\n }\n\n private registerChild(element: HTMLElement, index: number) {\n const trackedItem: Partial<NovoDragItem<T>> = {\n item: this.items[index],\n element\n };\n if (this.dragFilter && !this.dragFilter(this.items[index])) {\n element.draggable = false;\n trackedItem.removeListeners = () => {};\n } else {\n const listeners = [\n this.renderer.listen(element, 'dragstart', this.onDragStart.bind(this)),\n this.renderer.listen(element, 'drop', this.onDragFinish.bind(this)),\n this.renderer.listen(element, 'dragend', this.onDragStop.bind(this))\n ];\n element.draggable = true;\n trackedItem.removeListeners = () => listeners.forEach(cb => cb());\n }\n this.trackedItems.push(trackedItem as NovoDragItem<T>);\n }\n\n mutationDetected(mutations: MutationRecord[]) {\n if (this.pickedUp) {\n return;\n }\n const addedNodes = new Set<HTMLElement>();\n const removedNodes = new Set<HTMLElement>();\n for (let mutation of mutations) {\n mutation.addedNodes.forEach((a: HTMLElement) => {\n if (!removedNodes.delete(a)) {\n addedNodes.add(a);\n }\n });\n mutation.removedNodes.forEach((a: HTMLElement) => {\n if (!addedNodes.delete(a)) {\n removedNodes.add(a);\n }\n });\n }\n addedNodes.forEach(node => {\n const idx = Array.prototype.indexOf.call(this.element.children, node);\n this.registerChild(node, idx);\n });\n if (removedNodes.size > 0) {\n this.trackedItems = this.trackedItems.filter(\n item => {\n const keep = !removedNodes.has(item.element);\n if (!keep) {\n item.removeListeners();\n }\n return keep;\n });\n }\n }\n\n /** Per-item listeners */\n\n onDragStart(event: DragEvent) {\n if (this.shouldBlockDragStart(event)) {\n event.preventDefault();\n return;\n }\n const dataTransfer = event.dataTransfer;\n // Present a native 'move item' effect\n dataTransfer.effectAllowed = 'move';\n if (!this.disableScroll) {\n this.scrollContainer.set(this.findScrollableParent());\n }\n\n this.pickedUp = event.target as HTMLElement;\n event.stopPropagation();\n this.savedOrder = [...this.trackedItems];\n }\n\n // Equivalent of \"finally\" - this runs whether or not the drag finished on a valid ending location\n onDragStop(event: DragEvent): void {\n this.pickedUp = null;\n this.previewReplacing = null;\n this.savedOrder = null;\n event.stopPropagation();\n }\n\n onDragFinish(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.element.contains(event.currentTarget as HTMLElement)) {\n // this is for a different drag region - ignore\n return;\n }\n const draggedItem = this.trackedItems.find(item => item.element === this.pickedUp)?.item;\n this.trackedItems = Array.prototype.map.call(this.element.children, child => {\n const item = this.trackedItems.find(item => item.element === child);\n if (!item) {\n throw new Error('DragDrop: Error - could not reassociate an item post-drag');\n }\n return item;\n });\n this.novoDragDropFinish.emit({\n draggedItem,\n allItems: this.itemsReordered,\n event\n });\n\n }\n\n /** - end per-item listeners */\n\n @HostListener('window:dragover', ['$event'])\n onDragOver(event: DragEvent): void {\n if (!this.pickedUp || this.inOverlay(event)) {\n return;\n }\n let target = event.target as HTMLElement;\n if (!this.element.contains(target)) {\n target = null;\n }\n // In some cases (maybe browser-specific) we may have this event reported from a sub-element of a drag destination.\n // We need to go upwards in the tree to find the actual target\n if (target && !target.draggable) {\n target = this.findDraggableParentOfElement(target);\n }\n // Check if this drag event is within this drag box\n if (target && target.parentElement === this.element) {\n event.stopPropagation();\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'move';\n }\n if (this.previewReplacing !== target) {\n if (this.isValidTarget(target)) {\n this.previewReplacing = target;\n this.applyTempSort(this.pickedUp, target);\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n }\n } else {\n // if not within this drag box, then move this item back to its original position and show a diabled drag effect\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'none';\n }\n this.resetSorting();\n }\n if (!this.disableScroll) {\n this.processScrollDuringMove(event);\n }\n }\n\n private inOverlay(event: DragEvent): boolean {\n // Make sure a drag event is not looking at a tooltip or similar.\n // Return false if the dragbox itself is in an overlay - these scenarios will be harder to account for.\n const overlayElement = this.overlayContainer?.getContainerElement();\n return overlayElement && (overlayElement.contains(event.target as Node) && !overlayElement.contains(this.element));\n }\n\n private isValidTarget(target: HTMLElement): boolean {\n return target.draggable;\n }\n\n private findDraggableParentOfElement(target: HTMLElement): HTMLElement | null {\n const parentElement = target.parentElement;\n if (!parentElement) {\n return null;\n } else if (parentElement.draggable) {\n return parentElement;\n } else {\n return this.findDraggableParentOfElement(parentElement);\n }\n }\n\n private applyTempSort(showXElement: HTMLElement, inPlaceOfY: HTMLElement) {\n if (showXElement === inPlaceOfY) {\n // same element - ignoring\n return;\n }\n // Apply the \"preview\" effect from dragging one item to another\n const aIndex = Array.prototype.indexOf.call(this.elementRef.nativeElement.children, showXElement);\n const bIndex = Array.prototype.indexOf.call(this.elementRef.nativeElement.children, inPlaceOfY);\n const diff = bIndex - aIndex;\n let insertPosition: InsertPosition;\n if (diff > 0) {\n insertPosition = 'afterend';\n } else if (diff < 0) {\n insertPosition = 'beforebegin';\n } else {\n throw new Error('DragDrop: Two elements are in the same position');\n }\n inPlaceOfY.insertAdjacentElement(insertPosition, showXElement);\n }\n\n private resetSorting(): void {\n // return to the order of elements from the last time we called onDragPickup\n if (!this.savedOrder) {\n throw new Error('DragDrop: Cannot reset sorting with no saved order');\n }\n const boxElem = this.elementRef.nativeElement as HTMLElement;\n for (let i = 0; i < boxElem.children.length; i++) {\n const item = boxElem.children[i];\n if (this.savedOrder[i].element !== item && i > 0) {\n this.savedOrder[i - 1].element.insertAdjacentElement('afterend', this.savedOrder[i].element);\n }\n }\n }\n\n // If the user has provided classes indicating they only want a certain region to be draggable, ignore\n // this drag event if it is outside of there.\n private shouldBlockDragStart(event: DragEvent): boolean {\n const dragTarget = event.target as HTMLElement;\n // TODO: Allow for multiple drag targets, and drag exclusion targets\n const userDragTarget = dragTarget.querySelector('.novo-drag-target');\n if (userDragTarget) {\n return !this.isElementWithinEventBounds(userDragTarget, event);\n }\n }\n\n private processScrollDuringMove(event: DragEvent) {\n const scrollElement = this.scrollContainer();\n if (!scrollElement) {\n return;\n }\n const rect = this.scrollContainerRect();\n if (this.scrollX()) {\n if (event.x > rect.left && event.x < rect.left + SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollLeft -= 10;\n } else if (event.x < rect.right && event.x > rect.right - SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollLeft += 10;\n }\n }\n if (this.scrollY()) {\n if (event.y > rect.top && event.y < rect.top + SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollTop -= 10;\n } else if (event.y < rect.bottom && event.y > rect.bottom - SCROLL_DRAGGABLE_PADDING_REGION) {\n scrollElement.scrollTop += 10;\n }\n }\n }\n\n public isElementWithinEventBounds(element: Element, event: DragEvent) {\n const rect = element.getBoundingClientRect();\n const isInside = event.clientX > rect.left && event.clientX < rect.right &&\n event.clientY < rect.bottom && event.clientY > rect.top;\n return isInside;\n }\n\n private findScrollableParent(): HTMLElement | null {\n let currentElement = this.element.parentElement;\n this.scrollX.set(false);\n this.scrollY.set(false);\n \n while (currentElement) {\n const hasVerticalScroll = currentElement.scrollHeight > currentElement.clientHeight;\n const hasHorizontalScroll = currentElement.scrollWidth > currentElement.clientWidth;\n const isScrollable = hasVerticalScroll || hasHorizontalScroll;\n \n if (isScrollable) {\n const computedStyle = window.getComputedStyle(currentElement);\n const overflowY = computedStyle.overflowY;\n const overflowX = computedStyle.overflowX;\n \n // Check if overflow is set to allow scrolling\n if ((overflowY === 'auto' || overflowY === 'scroll') || \n (overflowX === 'auto' || overflowX === 'scroll')) {\n // Verify the scrollable parent is smaller than the drag container\n if (currentElement.clientHeight < this.element.clientHeight) {\n this.scrollY.set(true);\n }\n if (currentElement.clientWidth < this.element.clientWidth) {\n this.scrollX.set(true);\n }\n if (this.scrollX() || this.scrollY()) {\n return currentElement;\n }\n }\n }\n \n currentElement = currentElement.parentElement;\n }\n \n return null;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NovoDragBoxParent } from './drag-drop-box';\n\n\n@NgModule({\n declarations: [NovoDragBoxParent],\n exports: [NovoDragBoxParent]\n})\nexport class NovoDragDropModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAeA,MAAM,+BAA+B,GAAG,EAAE;AAC1C,MAAM,0BAA0B,GAAG,EAAE;MAUxB,iBAAiB,CAAA;AA2B1B,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;;AAGnD,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAKjC,WAAoB,CAAA,UAAsB,EAAU,QAAmB,EAAA;QAAnD,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAhC5D,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAarD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAA0B;AAGjE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAc,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,qBAAqB,EAAE,CAAC;AACrF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAWxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAIzE,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;IAGxC,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;;;;IAMxE,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,IAAG;YAC9B,IAAI,CAAC,eAAe,EAAE;AAC1B,SAAC,CAAC;;IAGE,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpD,gBAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,IAAI,CAAC,KAAK,CAAC,MAAM,mBAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA,SAAA,CAAW,CAAC;;AAElK,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAgB,EAAE,CAAC,CAAC;;;;IAKlE,aAAa,CAAC,OAAoB,EAAE,KAAa,EAAA;AACrD,QAAA,MAAM,WAAW,GAA6B;AAC1C,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACvB;SACH;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACxD,YAAA,OAAO,CAAC,SAAS,GAAG,KAAK;AACzB,YAAA,WAAW,CAAC,eAAe,GAAG,MAAK,GAAG;;aACnC;AACH,YAAA,MAAM,SAAS,GAAG;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACtE;AACD,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI;AACxB,YAAA,WAAW,CAAC,eAAe,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;;AAErE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAA8B,CAAC;;AAG1D,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;AAEJ,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAe;AACzC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe;AAC3C,QAAA,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;YAC5B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAc,KAAI;gBAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACzB,oBAAA,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;;AAEzB,aAAC,CAAC;YACF,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAc,KAAI;gBAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACvB,oBAAA,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;;AAE3B,aAAC,CAAC;;AAEN,QAAA,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;AACjC,SAAC,CAAC;AACF,QAAA,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CACxC,IAAI,IAAG;gBACH,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5C,IAAI,CAAC,IAAI,EAAE;oBACP,IAAI,CAAC,eAAe,EAAE;;AAE1B,gBAAA,OAAO,IAAI;AACf,aAAC,CAAC;;;;AAMd,IAAA,WAAW,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE;YACtB;;AAEJ,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;;AAEvC,QAAA,YAAY,CAAC,aAAa,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAGzD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAqB;QAC3C,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;;;AAI5C,IAAA,UAAU,CAAC,KAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,KAAK,CAAC,eAAe,EAAE;;AAG3B,IAAA,YAAY,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC,EAAE;;YAE5D;;QAEJ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI;AACxF,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAG;AACxE,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;YACnE,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;;AAEhF,YAAA,OAAO,IAAI;AACf,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACzB,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,cAAc;YAC7B;AACH,SAAA,CAAC;;;AAON,IAAA,UAAU,CAAC,KAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACzC;;AAEJ,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAqB;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,GAAG,IAAI;;;;AAIjB,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC7B,YAAA,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC;;;QAGtD,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;YACjD,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACpB,gBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;;AAE1C,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;oBAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;;qBACtC;AACH,oBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;;;;aAG3C;;AAEH,YAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACpB,gBAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;;YAE1C,IAAI,CAAC,YAAY,EAAE;;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;AAInC,IAAA,SAAS,CAAC,KAAgB,EAAA;;;QAG9B,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,EAAE;QACnE,OAAO,cAAc,KAAK,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAG9G,IAAA,aAAa,CAAC,MAAmB,EAAA;QACrC,OAAO,MAAM,CAAC,SAAS;;AAGnB,IAAA,4BAA4B,CAAC,MAAmB,EAAA;AACpD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa;QAC1C,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,OAAO,IAAI;;AACR,aAAA,IAAI,aAAa,CAAC,SAAS,EAAE;AAChC,YAAA,OAAO,aAAa;;aACjB;AACH,YAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC;;;IAIvD,aAAa,CAAC,YAAyB,EAAE,UAAuB,EAAA;AACpE,QAAA,IAAI,YAAY,KAAK,UAAU,EAAE;;YAE7B;;;QAGJ,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC;QACjG,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC/F,QAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM;AAC5B,QAAA,IAAI,cAA8B;AAClC,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACV,cAAc,GAAG,UAAU;;AACxB,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACjB,cAAc,GAAG,aAAa;;aAC3B;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;AAEtE,QAAA,UAAU,CAAC,qBAAqB,CAAC,cAAc,EAAE,YAAY,CAAC;;IAG1D,YAAY,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;;AAEzE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAC5D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC9C,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;;;;;AAOhG,IAAA,oBAAoB,CAAC,KAAgB,EAAA;AACzC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAqB;;QAE9C,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC;QACpE,IAAI,cAAc,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,KAAK,CAAC;;;AAI9D,IAAA,uBAAuB,CAAC,KAAgB,EAAA;AAC5C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C,IAAI,CAAC,aAAa,EAAE;YAChB;;AAEJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,+BAA+B,EAAE;AAC9E,gBAAA,aAAa,CAAC,UAAU,IAAI,EAAE;;AAC3B,iBAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,+BAA+B,EAAE;AACvF,gBAAA,aAAa,CAAC,UAAU,IAAI,EAAE;;;AAGtC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,+BAA+B,EAAE;AAC5E,gBAAA,aAAa,CAAC,SAAS,IAAI,EAAE;;AAC1B,iBAAA,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,+BAA+B,EAAE;AACzF,gBAAA,aAAa,CAAC,SAAS,IAAI,EAAE;;;;IAKlC,0BAA0B,CAAC,OAAgB,EAAE,KAAgB,EAAA;AAChE,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK;AACpE,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;AAC3D,QAAA,OAAO,QAAQ;;IAGX,oBAAoB,GAAA;AACxB,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAEvB,OAAO,cAAc,EAAE;YACnB,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY;YACnF,MAAM,mBAAmB,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW;AACnF,YAAA,MAAM,YAAY,GAAG,iBAAiB,IAAI,mBAAmB;YAE7D,IAAI,YAAY,EAAE;gBACd,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC;AAC7D,gBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;AACzC,gBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;;gBAGzC,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ;qBAC9C,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,EAAE;;oBAElD,IAAI,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACzD,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;oBAE1B,IAAI,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACvD,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;oBAE1B,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClC,wBAAA,OAAO,cAAc;;;;AAKjC,YAAA,cAAc,GAAG,cAAc,CAAC,aAAa;;AAGjD,QAAA,OAAO,IAAI;;+GA5VN,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,cAAA,EAAA,OAAA,CAAA,EAAA,UAAA,EAAA,CAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,aAAA,EAAA,CAAA,2BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,kBAAkB,EAAE,YAAY;AACnC;AACJ,iBAAA;uGAS0B,KAAK,EAAA,CAAA;sBAA3B,KAAK;uBAAC,cAAc;gBAKQ,UAAU,EAAA,CAAA;sBAAtC,KAAK;uBAAC,oBAAoB;gBAIS,aAAa,EAAA,CAAA;sBAAhD,KAAK;uBAAC,2BAA2B;gBAExB,kBAAkB,EAAA,CAAA;sBAA3B;gBAaG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAmJ7B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;;MCnMlC,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAHZ,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,iBAAiB,CAAA,EAAA,CAAA,CAAA;gHAElB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB;AAC9B,iBAAA;;;ACPD;;AAEG;;;;"}
|
|
@@ -142,7 +142,6 @@ class NovoFieldElement {
|
|
|
142
142
|
this._elementRef.nativeElement.setAttribute('data-control-key', control.ngControl.name);
|
|
143
143
|
}
|
|
144
144
|
// Subscribe to changes in the child control state in order to update the form field UI.
|
|
145
|
-
// tslint:disable-next-line:deprecation
|
|
146
145
|
control.stateChanges.pipe(startWith(null)).subscribe(() => {
|
|
147
146
|
this.stateChanges.next();
|
|
148
147
|
this._changeDetectorRef.markForCheck();
|
|
@@ -1099,7 +1098,6 @@ class NovoInputBase {
|
|
|
1099
1098
|
}
|
|
1100
1099
|
}
|
|
1101
1100
|
/** Directive that allows a native input to work inside a `NovoField`. */
|
|
1102
|
-
// tslint:disable: no-conflicting-lifecycle member-ordering
|
|
1103
1101
|
class NovoInput extends NovoInputBase {
|
|
1104
1102
|
/**
|
|
1105
1103
|
* Implemented as part of NovoFieldControl.
|