novo-elements 11.2.0 → 11.2.1-next.2
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-addons-ace-editor.mjs.map +1 -1
- package/fesm2022/novo-elements-addons-ckeditor.mjs.map +1 -1
- package/fesm2022/novo-elements-addons-code-editor.mjs +3 -3
- package/fesm2022/novo-elements-addons-code-editor.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-agenda.mjs +15 -15
- package/fesm2022/novo-elements-elements-agenda.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-aside.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-autocomplete.mjs +7 -5
- package/fesm2022/novo-elements-elements-autocomplete.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-avatar.mjs +2 -1
- package/fesm2022/novo-elements-elements-avatar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-breadcrumbs.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-button.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-calendar.mjs +7 -4
- package/fesm2022/novo-elements-elements-calendar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-card.mjs +1 -1
- package/fesm2022/novo-elements-elements-card.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-category-dropdown.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-checkbox.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-chips.mjs +18 -14
- package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-color-picker.mjs +1 -1
- package/fesm2022/novo-elements-elements-color-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-common.mjs +28 -28
- package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-data-table.mjs +28 -28
- package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-picker.mjs +4 -4
- package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-date-time-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-divider.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-drag-drop.mjs +7 -7
- package/fesm2022/novo-elements-elements-drag-drop.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-dropdown.mjs +9 -9
- package/fesm2022/novo-elements-elements-dropdown.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-expansion.mjs +5 -5
- package/fesm2022/novo-elements-elements-expansion.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-field.mjs +20 -14
- package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-flex.mjs +12 -12
- package/fesm2022/novo-elements-elements-flex.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-form.mjs +16 -15
- package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-header.mjs +6 -6
- package/fesm2022/novo-elements-elements-header.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-icon.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-layout.mjs +2 -2
- package/fesm2022/novo-elements-elements-layout.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-list.mjs +12 -12
- package/fesm2022/novo-elements-elements-list.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-loading.mjs +5 -5
- package/fesm2022/novo-elements-elements-loading.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-menu.mjs +4 -4
- package/fesm2022/novo-elements-elements-menu.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-modal.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-multi-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-non-ideal-state.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-picker.mjs +5 -5
- package/fesm2022/novo-elements-elements-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-places.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-popover.mjs +3 -3
- package/fesm2022/novo-elements-elements-popover.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-progress.mjs +3 -3
- package/fesm2022/novo-elements-elements-progress.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-query-builder.mjs +27 -25
- package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-quick-note.mjs +2 -2
- package/fesm2022/novo-elements-elements-quick-note.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-radio.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select-search.mjs +2 -2
- package/fesm2022/novo-elements-elements-select-search.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select.mjs +5 -5
- package/fesm2022/novo-elements-elements-select.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-simple-table.mjs +30 -30
- package/fesm2022/novo-elements-elements-simple-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-slider.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-stepper.mjs +4 -4
- package/fesm2022/novo-elements-elements-stepper.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-switch.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tabs.mjs +2 -1
- package/fesm2022/novo-elements-elements-tabs.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tiles.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-time-picker.mjs +1 -0
- package/fesm2022/novo-elements-elements-time-picker.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tip-well.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-toast.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-toolbar.mjs +1 -1
- package/fesm2022/novo-elements-elements-toolbar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-tooltip.mjs +3 -4
- package/fesm2022/novo-elements-elements-tooltip.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-unless.mjs +1 -1
- package/fesm2022/novo-elements-elements-unless.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-value.mjs +2 -2
- package/fesm2022/novo-elements-elements-value.mjs.map +1 -1
- package/fesm2022/novo-elements-pipes.mjs +9 -9
- package/fesm2022/novo-elements-pipes.mjs.map +1 -1
- package/fesm2022/novo-elements-services.mjs +21 -22
- package/fesm2022/novo-elements-services.mjs.map +1 -1
- package/fesm2022/novo-elements-utils.mjs +33 -17
- package/fesm2022/novo-elements-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/services/date-format/DateFormat.d.ts +2 -2
|
@@ -622,9 +622,9 @@ class NovoLabelService {
|
|
|
622
622
|
const dt = new Date();
|
|
623
623
|
return dt.setDate(dt.getDate() - dt.getDay() + dayOfWeek);
|
|
624
624
|
}
|
|
625
|
-
let weekdays = [getDay(0), getDay(1), getDay(2), getDay(3), getDay(4), getDay(5), getDay(6)].reduce((
|
|
626
|
-
|
|
627
|
-
return
|
|
625
|
+
let weekdays = [getDay(0), getDay(1), getDay(2), getDay(3), getDay(4), getDay(5), getDay(6)].reduce((dayList, dt) => {
|
|
626
|
+
dayList.push(new Intl.DateTimeFormat(this.userLocale, { weekday: 'long' }).format(dt));
|
|
627
|
+
return dayList;
|
|
628
628
|
}, []);
|
|
629
629
|
if (weekStartsOn > 0 && weekStartsOn <= 6) {
|
|
630
630
|
const newStart = weekdays.splice(weekStartsOn);
|
|
@@ -813,7 +813,7 @@ class DateFormatService {
|
|
|
813
813
|
}
|
|
814
814
|
getDateMask() {
|
|
815
815
|
return {
|
|
816
|
-
mask: /^((\d)(\d|\/|\.|\-){0,7})?(\d){0,2}
|
|
816
|
+
mask: /^((\d)(\d|\/|\.|\-){0,7})?(\d){0,2}$/,
|
|
817
817
|
};
|
|
818
818
|
}
|
|
819
819
|
getDateTimeMask(militaryTime = false) {
|
|
@@ -835,7 +835,7 @@ class DateFormatService {
|
|
|
835
835
|
const [cleanDateString, cleanFormat] = this.removeNonstandardFormatCharacters(dateString, customFormat);
|
|
836
836
|
try {
|
|
837
837
|
date = parse(cleanDateString, cleanFormat, new Date(), {
|
|
838
|
-
useAdditionalWeekYearTokens: false
|
|
838
|
+
useAdditionalWeekYearTokens: false,
|
|
839
839
|
});
|
|
840
840
|
if (isNaN(date.getTime())) {
|
|
841
841
|
date = null;
|
|
@@ -862,11 +862,11 @@ class DateFormatService {
|
|
|
862
862
|
}
|
|
863
863
|
return [date, dateString, isInvalidDate];
|
|
864
864
|
}
|
|
865
|
-
dateFormatToImaskPattern(
|
|
865
|
+
dateFormatToImaskPattern(formatString) {
|
|
866
866
|
const partsReg = /(\w)\1+|([\.\\/-])/g;
|
|
867
867
|
let output = '';
|
|
868
868
|
let match;
|
|
869
|
-
while ((match = partsReg.exec(
|
|
869
|
+
while ((match = partsReg.exec(formatString)) != null) {
|
|
870
870
|
if (match[1]) {
|
|
871
871
|
const matchLow = match[1].toLowerCase();
|
|
872
872
|
if (matchLow === 'y') {
|
|
@@ -885,26 +885,24 @@ class DateFormatService {
|
|
|
885
885
|
/**
|
|
886
886
|
* Certain date format characters are considered nonstandard. We can still use them, but remove them for date parsing to avoid errors
|
|
887
887
|
* @param dateString
|
|
888
|
-
* @param
|
|
888
|
+
* @param formatString
|
|
889
889
|
* @returns date string and format in array, both having had their
|
|
890
890
|
*/
|
|
891
|
-
removeNonstandardFormatCharacters(dateString,
|
|
891
|
+
removeNonstandardFormatCharacters(dateString, formatString) {
|
|
892
892
|
const bannedChars = /[iIRoPp]+/;
|
|
893
893
|
// remove quotes
|
|
894
|
-
|
|
894
|
+
formatString = formatString.replace(/['"]/g, '');
|
|
895
895
|
let match = null;
|
|
896
|
-
while ((match = bannedChars.exec(
|
|
897
|
-
|
|
896
|
+
while ((match = bannedChars.exec(formatString)) != null) {
|
|
897
|
+
formatString = formatString.substring(0, match.index) + formatString.substring(match.index + match[0].length);
|
|
898
898
|
dateString = dateString.substring(0, match.index) + dateString.substring(match.index + match[0].length);
|
|
899
899
|
}
|
|
900
|
-
return [dateString,
|
|
900
|
+
return [dateString, formatString];
|
|
901
901
|
}
|
|
902
902
|
parseDateString(dateString) {
|
|
903
903
|
let dateFormat = this.labels.dateFormatString();
|
|
904
904
|
const dateFormatRegex = /(\w+)[\/|\.|\-](\w+)[\/|\.|\-](\w+)/gi;
|
|
905
905
|
const dateValueRegex = /(\d+)[\/|\.|\-](\d+)[\/|\.|\-](\d+)/gi;
|
|
906
|
-
let dateFormatTokens;
|
|
907
|
-
let dateValueTokens;
|
|
908
906
|
let year;
|
|
909
907
|
let month;
|
|
910
908
|
let day;
|
|
@@ -917,8 +915,8 @@ class DateFormatService {
|
|
|
917
915
|
else {
|
|
918
916
|
dateFormat = dateFormat.toLowerCase();
|
|
919
917
|
}
|
|
920
|
-
dateFormatTokens = dateFormatRegex.exec(dateFormat);
|
|
921
|
-
dateValueTokens = dateValueRegex.exec(dateString);
|
|
918
|
+
const dateFormatTokens = dateFormatRegex.exec(dateFormat);
|
|
919
|
+
const dateValueTokens = dateValueRegex.exec(dateString);
|
|
922
920
|
if (dateFormatTokens && dateFormatTokens.length === 4 && dateValueTokens && dateValueTokens.length === 4) {
|
|
923
921
|
for (let i = 1; i < 4; i++) {
|
|
924
922
|
if (dateFormatTokens[i].includes('m')) {
|
|
@@ -1027,6 +1025,7 @@ class DateFormatService {
|
|
|
1027
1025
|
convertTime12to24(time12h) {
|
|
1028
1026
|
const pmFormat = this.labels.timeFormatPM.toUpperCase();
|
|
1029
1027
|
const [time, modifier] = time12h.split(' ');
|
|
1028
|
+
// eslint-disable-next-line prefer-const
|
|
1030
1029
|
let [hours, minutes] = time.split(':');
|
|
1031
1030
|
if (hours === '12') {
|
|
1032
1031
|
hours = '00';
|
|
@@ -1036,11 +1035,11 @@ class DateFormatService {
|
|
|
1036
1035
|
}
|
|
1037
1036
|
return `${hours}:${minutes}`;
|
|
1038
1037
|
}
|
|
1039
|
-
isValidDatePart(value,
|
|
1038
|
+
isValidDatePart(value, formatString) {
|
|
1040
1039
|
const datePart = parseInt(value, 10);
|
|
1041
|
-
return ((
|
|
1042
|
-
(
|
|
1043
|
-
(
|
|
1040
|
+
return ((formatString.includes('m') && (datePart >= 2 || value.length === 2)) ||
|
|
1041
|
+
(formatString.includes('d') && (datePart >= 4 || value.length === 2)) ||
|
|
1042
|
+
(formatString.includes('y') && datePart >= 1000));
|
|
1044
1043
|
}
|
|
1045
1044
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DateFormatService, deps: [{ token: NovoLabelService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1046
1045
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DateFormatService }); }
|
|
@@ -1066,7 +1065,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1066
1065
|
}] });
|
|
1067
1066
|
class NodeGlobalRef extends GlobalRef {
|
|
1068
1067
|
get nativeGlobal() {
|
|
1069
|
-
throw new Error(
|
|
1068
|
+
throw new Error('global doesn\'t compile for some reason');
|
|
1070
1069
|
}
|
|
1071
1070
|
get nativeWindow() {
|
|
1072
1071
|
throw new Error('Node does not have a window object');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-services.mjs","sources":["../../../projects/novo-elements/src/services/component-utils/ComponentUtils.ts","../../../projects/novo-elements/src/services/data-provider/CollectionEvent.ts","../../../projects/novo-elements/src/services/data-provider/ArrayCollection.ts","../../../projects/novo-elements/src/services/data-provider/PagedArrayCollection.ts","../../../projects/novo-elements/src/services/novo-label-service.ts","../../../projects/novo-elements/src/services/date-format/DateFormat.ts","../../../projects/novo-elements/src/services/global/global.service.ts","../../../projects/novo-elements/src/services/options/OptionsService.ts","../../../projects/novo-elements/src/services/security/Security.ts","../../../projects/novo-elements/src/services/storage/storage.service.ts","../../../projects/novo-elements/src/services/template/NovoTemplateService.ts","../../../projects/novo-elements/src/services/novo-elements-services.ts"],"sourcesContent":["// NG2\nimport { ComponentFactoryResolver, ComponentRef, Injectable, Injector, StaticProvider, Type, ViewContainerRef } from '@angular/core';\n\n@Injectable()\nexport class ComponentUtils<T = any> {\n constructor(public componentFactoryResolver: ComponentFactoryResolver) {}\n\n append<T>(ComponentClass: Type<T>, location: ViewContainerRef, providers?: StaticProvider[], onTop?: boolean): ComponentRef<T> {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(ComponentClass);\n const parent = location.injector;\n const index = onTop ? 0 : location.length;\n return location.createComponent(componentFactory, index, Injector.create({ providers, parent }));\n }\n}\n","export class CollectionEvent {\n static REFRESH: string = 'Collection.REFRESH';\n static ADD: string = 'Collection.ADD';\n static REMOVE: string = 'Collection.REMOVE';\n static REMOVE_ALL: string = 'Collection.REMOVE_ALL';\n static REPLACE: string = 'Collection.REPLACE';\n static INVALIDATE_ALL: string = 'Collection.INVALIDATE_ALL';\n static SORT: string = 'Collection.SORT';\n static FILTER: string = 'Collection.FILTER';\n static CHANGE: string = 'Collection.CHANGE';\n static CURRENTPAGE_CHANGE: string = 'Collection.CURRENTPAGE_CHANGE';\n static PAGESIZE_CHANGE: string = 'Collection.PAGESIZE_CHANGE';\n static NUMBEROFPAGES_CHANGE: string = 'Collection.NUMBEROFPAGES_CHANGE';\n\n type: string = '';\n data: Array<any> = [];\n\n constructor(type = 'Collection.REFRESH', data = []) {\n this.type = type;\n this.data = data;\n }\n}\n","// Ng\nimport { EventEmitter } from '@angular/core';\nimport { Helpers } from 'novo-elements/utils';\n// App\nimport { Collection } from './Collection';\nimport { CollectionEvent } from './CollectionEvent';\n\n/**\n * Base Class for all Collection based data providers\n *\n * @example\n * var dp:DataProvider = new DataProvider();\n * dp.addItem({label:\"Item 1\"});\n * dp.addItem({label:\"Item 2\"});\n * dp.addItem({label:\"Item 3\"});\n * dp.addItem({label:\"Item 4\"});\n\n * var myList:List = new List();\n * myList.dataProvider = dp;\n */\nexport class ArrayCollection<T> implements Collection<T> {\n dataChange: EventEmitter<CollectionEvent> = new EventEmitter<CollectionEvent>();\n source: Array<T> = [];\n editData: Array<T> = [];\n isEditing: boolean = false;\n filterData: Array<T> = [];\n _filter: any = {};\n _sort: Array<any> = [];\n\n constructor(source: Array<T> = []) {\n this.source = source;\n this.editData = this.copy(this.source);\n this.filterData = this.source.slice();\n }\n\n get length() {\n return this.filterData.length;\n }\n\n get total(): number {\n return this.filterData.length;\n }\n\n get list(): Array<T> {\n return this.filterData;\n }\n\n isEmpty(): boolean {\n return this.length <= 0 && !this.isLoading() && !this.hasErrors();\n }\n\n hasErrors(): boolean {\n return false;\n }\n\n isLoading(): boolean {\n return false;\n }\n\n isFiltered(): boolean {\n return Object.keys(this._filter).length > 0;\n }\n\n /**\n * Method to switch the isEditingflag for the data source\n */\n edit() {\n this.isEditing = true;\n this.editData = this.copy(this.source);\n }\n\n /**\n * Method to leave edit mode and reset source\n */\n undo() {\n this.isEditing = false;\n this.source = this.copy(this.editData);\n this.refresh();\n }\n\n /**\n * Method to leave edit mode and save editData\n */\n commit() {\n this.isEditing = false;\n this.source = this.filterData.slice();\n this.refresh();\n }\n\n /**\n * Appends an item to the end of the data provider.\n *\n *\n * @memberOf ArrayCollection\n */\n addItem(item: T): void {\n this.isEditing ? this.editData.push(item) : this.source.push(item);\n this.onDataChange(new CollectionEvent(CollectionEvent.ADD, [item]));\n this.refresh();\n }\n\n /**\n * Adds a new item to the data provider at the specified index.\n *\n *\n * @memberOf ArrayCollection\n */\n addItemAt(item: T, index: number): void {\n this.isEditing ? this.editData.splice(index, 0, item) : this.source.splice(index, 0, item);\n this.onDataChange(new CollectionEvent(CollectionEvent.ADD, [item]));\n this.refresh();\n }\n\n /**\n * Appends multiple items to the end of the DataProvider and dispatches a CollectionEvent.ADD event.\n *\n * @memberOf ArrayCollection\n */\n addItems(items: Array<T>): void {\n this.isEditing ? this.editData.push(...items) : this.source.push(...items);\n this.onDataChange(new CollectionEvent(CollectionEvent.ADD, items));\n this.refresh();\n }\n\n /**\n * Adds several items to the data provider at the specified index and dispatches a CollectionEvent.ADD event.\n *\n * @memberOf ArrayCollection\n */\n addItemsAt(items: Array<T>, index: number): void {\n this.isEditing ? this.editData.splice(index, 0, ...items) : this.source.splice(index, 0, ...items);\n }\n\n /**\n * Creates a copy of the current ArrayCollection any.\n *\n * @memberOf ArrayCollection\n */\n clone(): ArrayCollection<T> {\n return new ArrayCollection(this.isEditing ? this.copy(this.editData) : this.copy(this.source));\n }\n\n /**\n * Creates a copy of the current ArrayCollection any.\n *\n * @memberOf ArrayCollection\n */\n copy(array: any[]) {\n return Helpers.deepClone(array);\n }\n\n /**\n * Concatenates the specified items to the end of the current data provider.\n *\n * @memberOf ArrayCollection\n */\n concat(items: Array<T>): void {\n this.addItems(items);\n }\n\n /**\n * Returns the item at the specified index.\n *\n * @memberOf ArrayCollection\n */\n getItemAt(index: number): any {\n return this.isEditing ? this.editData[index] : this.source[index];\n }\n\n /**\n * Returns the index of the specified item.\n *\n * @memberOf ArrayCollection\n */\n getItemIndex(item: T): number {\n return this.isEditing ? this.editData.indexOf(item) : this.source.indexOf(item);\n }\n\n /**\n * Invalidates all the data items that the DataProvider contains and dispatches a CollectionEvent.INVALIDATE_ALL event.\n *\n * @memberOf ArrayCollection\n */\n invalidate(): void {\n this.onDataChange(new CollectionEvent(CollectionEvent.INVALIDATE_ALL));\n }\n\n /**\n * Appends the specified data into the data that the data provider contains and removes any duplicate items.\n *\n * @memberOf ArrayCollection\n */\n merge(newData: Array<T>): void {\n for (const obj of newData) {\n const existing = ~this.getItemIndex(obj);\n if (existing) {\n this.replaceItem(obj, existing);\n } else {\n this.addItem(obj);\n }\n }\n }\n\n /**\n * Removes all items from the data provider and dispatches a CollectionEvent.REMOVE_ALL event.\n *\n * @memberOf ArrayCollection\n */\n removeAll(): void {\n this.source = [];\n this.editData = [];\n this.filterData = [];\n this.onDataChange(new CollectionEvent(CollectionEvent.REMOVE_ALL, []));\n this.refresh();\n }\n\n /**\n * Removes the specified item from the data provider and dispatches a CollectionEvent.REMOVE event.\n *\n * @memberOf ArrayCollection\n */\n removeItem(item: T): boolean {\n const index = this.getItemIndex(item);\n return this.removeItemAt(index);\n }\n\n /**\n * Removes the item at the specified index and dispatches a CollectionEvent.REMOVE event.\n *\n * @memberOf ArrayCollection\n */\n removeItemAt(index: number): boolean {\n const success = !!this.source.splice(index, 1);\n this.refresh();\n return success;\n }\n\n /**\n * Replaces an existing item with a new item and dispatches a CollectionEvent.REPLACE event.\n *\n * @memberOf ArrayCollection\n */\n replaceItem(newItem: any, oldItem: any): any {\n const index = this.getItemIndex(oldItem);\n if (index >= 0) {\n this.replaceItemAt(newItem, index);\n }\n }\n\n /**\n * Replaces the item at the specified index and dispatches a CollectionEvent.REPLACE event.\n *\n * @memberOf ArrayCollection\n */\n replaceItemAt(newItem: any, index: number): any {\n this.filterData.splice(index, 1, newItem);\n }\n\n /**\n * Sorts the items that the data provider contains and dispatches a CollectionEvent.SORT event.\n *\n * @memberOf ArrayCollection\n */\n get sort(): Array<any> {\n return this._sort;\n }\n\n set sort(value: Array<any>) {\n this._sort = value;\n this.refresh();\n }\n\n /**\n * Sorts the items that the data provider contains by the specified field and dispatches a CollectionEvent.SORT event.\n *\n * @memberOf ArrayCollection\n */\n sortOn(fieldName: any, reverse = false): Array<T> {\n this.filterData = this.filterData.sort(Helpers.sortByField(fieldName, reverse));\n this.onDataChange(new CollectionEvent(CollectionEvent.SORT));\n return this.filterData;\n }\n\n get filter(): any {\n return this._filter;\n }\n\n set filter(value: any) {\n this._filter = value;\n this.refresh();\n }\n\n filterOn(fieldName: any, value: any = null): Array<T> {\n this.filterData = this.filterData.filter(Helpers.filterByField(fieldName, value));\n return this.filterData;\n }\n\n onDataChange(event: CollectionEvent): void {\n this.dataChange.emit(event);\n }\n\n refresh(): void {\n this.filterData = this.isEditing ? this.editData.slice() : this.source.slice();\n for (const item of this._sort.reverse()) {\n this.sortOn(item.field, item.reverse);\n }\n for (const key in this._filter) {\n if (key) {\n this.filterOn(key, this._filter[key]);\n }\n }\n this.onDataChange(new CollectionEvent(CollectionEvent.CHANGE, this.filterData));\n }\n\n /**\n * Creates an Array any representation of the data that the data provider contains.\n *\n * @memberOf ArrayCollection\n */\n toArray(): Array<T> {\n return this.isEditing ? this.editData : this.source;\n }\n\n toJSON() {\n return this.isEditing ? this.editData : this.source;\n }\n}\n","import { ArrayCollection } from './ArrayCollection';\nimport { CollectionEvent } from './CollectionEvent';\nimport { PagedCollection } from './PagedCollection';\n\nexport class PagedArrayCollection<T> extends ArrayCollection<T> implements PagedCollection<T> {\n _page: number = 1;\n _numberOfPages: number = 1;\n _pageSize: number = 10;\n\n constructor(source: Array<T> = []) {\n super(source);\n }\n\n get numberOfPages(): number {\n let result: number = this.source.length / this.pageSize;\n result = Math.ceil(result);\n return result;\n }\n\n get page(): number {\n return this._page;\n }\n\n set page(value: number) {\n this._page = value;\n this.refresh();\n }\n\n get pageSize(): number {\n return this._pageSize;\n }\n\n set pageSize(value: number) {\n this._pageSize = value;\n this.refresh();\n }\n\n next(): number {\n if (this.page === this.numberOfPages) {\n return this.page;\n }\n this.page++;\n return this.page;\n }\n\n prev(): number {\n if (this._page === 1) {\n return this.page;\n }\n this.page--;\n return this.page;\n }\n\n first(): number {\n if (this.page === 1) {\n return this.page;\n }\n this.page = 1;\n return this.page;\n }\n\n last(): number {\n if (this.page === this.numberOfPages) {\n return this.page;\n }\n this.page = this.numberOfPages;\n return this.page;\n }\n\n refresh(): void {\n this.filterData = this.isEditing ? this.editData.slice() : this.source.slice();\n for (const item of this._sort.reverse()) {\n this.sortOn(item.field, item.reverse);\n }\n for (const key in this._filter) {\n if (key) {\n this.filterOn(key, this._filter[key]);\n }\n }\n if (this.page >= 0) {\n const start = (this.page - 1) * this.pageSize;\n const end = start + this.pageSize;\n const result = this.filterData.slice(start, end);\n this.onDataChange(new CollectionEvent(CollectionEvent.CHANGE, result));\n } else {\n this.onDataChange(new CollectionEvent(CollectionEvent.CHANGE, this.filterData));\n }\n }\n}\n","// NG2\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport { Day } from 'date-fns';\n\ninterface TimeFormatParts {\n hour: string;\n minute: string;\n dayPeriod?: string;\n}\n\nexport interface BigDecimalFormatOptions extends Intl.NumberFormatOptions {\n useAccountingFormat?: boolean; // Render negative numbers using parens. True: \"(3.14)\", False: \"-3.14\"\n}\n\n@Injectable()\nexport class NovoLabelService {\n and = 'and';\n not = 'not';\n filters = 'Filter';\n filterss = 'Filters';\n clear = 'Clear';\n sort = 'Sort';\n distributionListOwner = 'Owner';\n dateAdded = 'Date Added';\n emptyTableMessage = 'No Records to display...';\n noMatchingRecordsMessage = 'No Matching Records';\n noMoreRecordsMessage = 'No More Records';\n erroredTableMessage = 'Oops! An error occurred.';\n pickerError = 'Oops! An error occurred.';\n pickerTextFieldEmpty = 'Begin typing to see results.';\n pickerEmpty = 'No results to display...';\n tabbedGroupPickerEmpty = 'No results found';\n quickNoteError = 'Oops! An error occurred.';\n quickNoteEmpty = 'No results to display...';\n required = 'Required';\n numberTooLarge = 'Number is too large';\n apply = 'Apply';\n save = 'Save';\n cancel = 'Cancel';\n next = 'Next';\n itemsPerPage = 'Items per page:';\n chooseAField = 'Choose a field...';\n operator = 'Operator...';\n select = 'Select...';\n value = 'Value...';\n selectDateRange = 'Select Date Range...'\n typeToAddChips = 'Type and press Enter to add...'\n selected = 'Selected';\n selectAllOnPage = 'Select all on page';\n deselectAll = 'Deselect all';\n refresh = 'Refresh';\n close = 'Close';\n move = 'Move';\n startDate = 'Start Date';\n endDate = 'End Date';\n rate = 'Rate';\n more = 'more';\n clearAll = 'CLEAR ALL';\n clearAllNormalCase = 'Clear All';\n clearSort = 'Clear Sort';\n clearFilter = 'Clear Filter';\n clearSearch = 'Clear Search';\n clearSelected = 'Clear Selected';\n today = 'Today';\n now = 'Now';\n isRequired = 'is required';\n notValidYear = 'is not a valid year';\n isTooLarge = 'is too large';\n invalidAddress = 'requires at least one field filled out';\n invalidEmail = 'requires a valid email (ex. abc@123.com)';\n minLength = 'is required to be a minimum length of';\n past1Day = 'Past 1 Day';\n past7Days = 'Past 7 Days';\n past14Days = 'Past 14 Days';\n past21Days = 'Past 21 Days';\n past30Days = 'Past 30 Days';\n past60Days = 'Past 60 Days';\n past90Days = 'Past 90 Days';\n past180Days = 'Past 180 Days';\n past270Days = 'Past 270 Days';\n past1Year = 'Past 1 Year';\n next1Day = 'Next 1 Day';\n next7Days = 'Next 7 Days';\n next14Days = 'Next 14 Days';\n next21Days = 'Next 21 Days';\n next30Days = 'Next 30 Days';\n next60Days = 'Next 60 Days';\n next90Days = 'Next 90 Days';\n next180Days = 'Next 180 Days';\n next270Days = 'Next 270 Days';\n next1Year = 'Next 1 Year';\n future = 'Future';\n customDateRange = 'Custom Date Range';\n backToPresetFilters = 'Back to Preset Filters';\n okGotIt = 'Ok, Got it';\n address = 'Address';\n address1 = 'Address';\n apt = 'Apt'; // TODO delete\n address2 = 'Apt';\n city = 'City / Locality';\n state = 'State / Region';\n zip = 'Postal Code';\n zipCode = 'Postal Code'; // TODO delete\n country = 'Country';\n or = 'or';\n clickToBrowse = 'click to browse';\n chooseAFile = 'Choose a file';\n no = 'No';\n yes = 'Yes';\n search = 'SEARCH';\n noItems = 'There are no items';\n dateFormat = 'MM/dd/yyyy';\n dateFormatPlaceholder = 'MM/DD/YYYY';\n localDatePlaceholder = 'mm/dd/yyyy';\n timeFormatPlaceholderAM = 'hh:mm AM';\n timeFormatPlaceholder24Hour = 'HH:mm';\n timeFormatAM = 'AM';\n timeFormatPM = 'PM';\n confirmChangesModalMessage = 'Are you sure you want to change this field?';\n promptModalMessage = 'Do you want to perform the following changes?';\n asyncFailure = 'Async validation was not called within the 10s threshold, you might want to reload the page to try again';\n previous = 'Previous';\n actions = 'Actions';\n all = 'All';\n groupedMultiPickerEmpty = 'No items to display';\n groupedMultiPickerSelectCategory = 'Select a category from the left to get started';\n add = 'Add';\n encryptedFieldTooltip = 'This data has been stored at the highest level of security';\n noStatesForCountry = 'No states available for the selected country';\n selectCountryFirst = 'Please select a country before selecting a state';\n invalidIntegerInput = 'Special characters are not allowed for';\n maxRecordsReached = 'Sorry, you have reached the maximum number of records allowed for this field';\n selectFilterOptions = 'Please select one or more filter options below.';\n addCondition = 'Add Condition';\n includeAny = 'Include Any';\n includeAll = 'Include All';\n exclude = 'Exclude';\n excludeAny = 'Exclude Any';\n radius = 'Radius';\n insideRadius = 'Radius (Inside)';\n outsideRadius = 'Radius (Outside)';\n equals = 'Equals';\n equalTo = 'Equal To';\n greaterThan = 'Greater Than';\n lessThan = 'Less Than';\n doesNotEqual = 'Does Not Equal';\n beginsWith = 'Begins With';\n true = 'True';\n false = 'False';\n before = 'Before';\n after = 'After';\n within = 'Within';\n isNull = 'Is Empty';\n isEmpty = 'Is Empty?';\n between = 'Is Between';\n refreshPagination = 'Refresh Pagination';\n location = 'Location';\n showLess = 'Show Less';\n miles = 'Miles';\n km = 'Km';\n minimumPlaceholder = 'Minimum';\n maximumPlaceholder = 'Maximum';\n minGreaterThanMax = 'The minimum is greater than the maximum value';\n\n constructor(\n @Optional()\n @Inject(LOCALE_ID)\n public userLocale = 'en-US',\n ) {}\n\n maxlengthMetWithField(field: string, maxlength: number): string {\n return `Sorry, you have reached the maximum character count of ${maxlength} for ${field}.`;\n }\n\n maxlengthMet(maxlength: number): string {\n return `Sorry, you have reached the maximum character count of ${maxlength} for this field.`;\n }\n\n invalidMaxlengthWithField(field: string, maxlength: number): string {\n return `Sorry, you have exceeded the maximum character count of ${maxlength} for ${field}.`;\n }\n\n invalidMaxlength(maxlength: number): string {\n return `Sorry, you have exceeded the maximum character count of ${maxlength} for this field.`;\n }\n\n getToManyPlusMore(toMany: { quantity: number }): string {\n return `+${toMany.quantity} more`;\n }\n\n selectedRecords(selected: number) {\n return `${selected} records are selected.`;\n }\n\n showingXofXResults(shown: number, total: number) {\n return `Showing ${shown} of ${total} Results.`;\n }\n\n ofXAmount(amount: number) {\n return `of ${amount}`;\n }\n\n totalRecords(total: number, select = false) {\n return select ? `Select all ${total} records.` : `De-select remaining ${total} records.`;\n }\n\n dateFormatString(): string {\n return this.dateFormat;\n }\n\n localizedDatePlaceholder(): string {\n return this.localDatePlaceholder;\n }\n\n tabbedGroupClearSuggestion(tabLabelPlural: string): string {\n return `Clear your search to see all ${tabLabelPlural}.`;\n }\n\n formatDateWithFormat(value: any, format: Intl.DateTimeFormatOptions) {\n const date = value instanceof Date ? value : new Date(value);\n if (date.getTime() !== date.getTime()) {\n return value;\n }\n return new Intl.DateTimeFormat(this.userLocale, format).format(date);\n }\n\n formatToTimeOnly(param) {}\n\n formatToDateOnly(param) {}\n\n formatTimeWithFormat(value: any, format: Intl.DateTimeFormatOptions): string {\n const date = value instanceof Date ? value : new Date(value);\n if (date.getTime() !== date.getTime()) {\n return value;\n }\n const timeParts: { [type: string]: string } = Intl.DateTimeFormat(this.userLocale, format)\n .formatToParts(date)\n .reduce((obj, part) => {\n obj[part.type] = part.value;\n return obj;\n }, {});\n const dayPeriod = timeParts.dayPeriod ? timeParts.dayPeriod : '';\n const res = `${timeParts.hour}:${timeParts.minute} ${dayPeriod}`;\n return res;\n }\n\n getWeekdays(weekStartsOn: Day = 0): string[] {\n function getDay(dayOfWeek) {\n const dt = new Date();\n return dt.setDate(dt.getDate() - dt.getDay() + dayOfWeek);\n }\n\n let weekdays = [getDay(0), getDay(1), getDay(2), getDay(3), getDay(4), getDay(5), getDay(6)].reduce((weekdays, dt) => {\n weekdays.push(new Intl.DateTimeFormat(this.userLocale, { weekday: 'long' }).format(dt));\n return weekdays;\n }, []);\n\n if (weekStartsOn > 0 && weekStartsOn <= 6) {\n const newStart = weekdays.splice(weekStartsOn);\n weekdays = [...newStart, ...weekdays];\n }\n return weekdays;\n }\n\n getMonths(): string[] {\n function getMonth(month) {\n const dt = new Date();\n return dt.setMonth(month, 1);\n }\n\n return [\n getMonth(0),\n getMonth(1),\n getMonth(2),\n getMonth(3),\n getMonth(4),\n getMonth(5),\n getMonth(6),\n getMonth(7),\n getMonth(8),\n getMonth(9),\n getMonth(10),\n getMonth(11),\n ].reduce((months, dt) => {\n months.push(new Intl.DateTimeFormat(this.userLocale, { month: 'long' }).format(dt));\n return months;\n }, []);\n }\n\n getProperty(value: string) {\n return this[value];\n }\n\n getRangeText(page: number, pageSize: number, length: number, short: boolean): string {\n if (length === 0 || pageSize === 0) {\n return `Displaying 0 of ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return short ? `${startIndex + 1} - ${endIndex}/${length}` : `Displaying ${startIndex + 1} - ${endIndex} of ${length}`;\n }\n\n formatCurrency(value: number): string {\n const options: Intl.NumberFormatOptions = { style: 'currency', currency: 'USD' };\n return new Intl.NumberFormat(this.userLocale, options).format(value);\n }\n\n /**\n * Extends the Intl.numberFormat capability with two extra features:\n * - Does NOT round values, but instead truncates to maximumFractionDigits\n * - By default uses accounting format for negative numbers: (3.14) instead of -3.14.\n *\n * @param value The number value to convert to string\n * @param overrideOptions Allows for overriding options used and passed to Intl.NumberFormat()\n */\n formatBigDecimal(value: number, overrideOptions?: BigDecimalFormatOptions): string {\n const defaultOptions: BigDecimalFormatOptions = {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useAccountingFormat: true,\n };\n const options: BigDecimalFormatOptions = Object.assign(defaultOptions, overrideOptions);\n const truncatedValue = this.truncateToPrecision(value, options.maximumFractionDigits);\n let _value = new Intl.NumberFormat(this.userLocale, options).format(truncatedValue);\n if (value < 0) {\n _value = options.useAccountingFormat ? `(${_value.slice(1)})` : `-${_value.slice(1)}`;\n }\n return _value;\n }\n\n /**\n * Performs a string-based truncating of a number with no rounding\n */\n truncateToPrecision(value: number, precision: number) {\n let valueAsString = value ? value.toString() : '0';\n const decimalIndex = valueAsString.indexOf('.');\n if (decimalIndex > -1 && decimalIndex + precision + 1 < valueAsString.length) {\n valueAsString = valueAsString.substring(0, valueAsString.indexOf('.') + precision + 1);\n }\n return Number(valueAsString);\n }\n\n formatNumber(value, options?: Intl.NumberFormatOptions) {\n return new Intl.NumberFormat(this.userLocale, options).format(value);\n }\n\n formatDateShort(value: string | number | Date) {\n const options: Intl.DateTimeFormatOptions = {\n // DD/MM/YYYY, HH:MM A - 02/14/2017, 1:17 PM\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n };\n const _value = value === null || value === undefined || value === '' ? new Date() : new Date(value);\n return new Intl.DateTimeFormat(this.userLocale, options).format(_value);\n }\n\n formatTime(value: string | number | Date) {\n const options: Intl.DateTimeFormatOptions = {\n // HH:MM A - 1:17 PM\n hour: 'numeric',\n minute: '2-digit',\n };\n const _value = value === null || value === undefined || value === '' ? new Date() : new Date(value);\n return new Intl.DateTimeFormat(this.userLocale, options).format(_value);\n }\n\n formatDate(value: string | number | Date) {\n const options: Intl.DateTimeFormatOptions = {\n // DD/MM/YYYY - 02/14/2017\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n };\n const _value = value === null || value === undefined || value === '' ? new Date() : new Date(value);\n return new Intl.DateTimeFormat(this.userLocale, options).format(_value);\n }\n}\n\nexport const NOVO_ELEMENTS_LABELS_PROVIDERS = [{ provide: NovoLabelService, useClass: NovoLabelService }];\n","// NG2\nimport { Injectable } from '@angular/core';\nimport { NovoLabelService } from '../novo-label-service';\n// APP\nimport { format, parse } from 'date-fns';\nimport { MaskedOptions, MaskedEnum, MaskedRange } from 'imask';\nimport { DateUtil, Helpers, convertTokens } from 'novo-elements/utils';\n\n@Injectable()\nexport class DateFormatService {\n\n public readonly dateFormatAsImaskPattern: string;\n\n constructor(private labels: NovoLabelService) {\n this.dateFormatAsImaskPattern = this.dateFormatToImaskPattern(this.labels.dateFormatString());\n }\n\n getTimeMask(militaryTime: boolean): MaskedOptions {\n const amFormat = this.labels.timeFormatAM.toUpperCase();\n const pmFormat = this.labels.timeFormatPM.toUpperCase();\n const mask = {\n mask: Date,\n pattern: militaryTime ? 'HH:mm' : 'hh:mm aa',\n overwrite: true,\n autofix: true,\n lazy: false,\n min: new Date(1970, 0, 1),\n max: new Date(2100, 0, 1),\n prepare(str) {\n return str.toUpperCase();\n },\n format(date) {\n return DateUtil.format(date, militaryTime ? 'HH:mm' : 'hh:mm A');\n },\n parse: (str) => {\n const time = militaryTime ? str : this.convertTime12to24(str);\n return DateUtil.parse(`${DateUtil.format(Date.now(), 'YYYY-MM-DD')}T${time}`);\n },\n blocks: {\n HH: {\n mask: MaskedRange,\n placeholderChar: 'H',\n maxLength: 2,\n from: 0,\n to: 23,\n },\n hh: {\n mask: MaskedRange,\n placeholderChar: 'h',\n maxLength: 2,\n from: 1,\n to: 12,\n },\n mm: {\n mask: MaskedRange,\n placeholderChar: 'm',\n maxLength: 2,\n from: 0,\n to: 59,\n },\n aa: {\n mask: MaskedEnum,\n placeholderChar: 'x',\n enum: ['AM', 'PM', 'am', 'pm', amFormat, pmFormat],\n },\n },\n };\n return mask;\n }\n\n getDateMask(): MaskedOptions {\n return {\n mask: /^((\\d)(\\d|\\/|\\.|\\-){0,7})?(\\d){0,2}$/\n };\n }\n\n getDateTimeMask(militaryTime: boolean = false): Array<any> {\n return [this.getDateMask(), /\\,?/, /\\s/, this.getTimeMask(militaryTime)];\n }\n\n getTimePlaceHolder(militaryTime: boolean): string {\n if (militaryTime) {\n return this.labels.timeFormatPlaceholder24Hour;\n }\n return this.labels.timeFormatPlaceholderAM;\n }\n\n parseCustomDateString(dateString: string, customFormat?: string): [Date, string, boolean] {\n let isInvalidDate = true;\n let date: Date = null;\n if (!customFormat) {\n customFormat = this.labels.dateFormatString();\n }\n customFormat = convertTokens(customFormat);\n const [cleanDateString, cleanFormat] = this.removeNonstandardFormatCharacters(dateString, customFormat);\n try {\n date = parse(cleanDateString, cleanFormat, new Date(), {\n useAdditionalWeekYearTokens: false\n });\n if (isNaN(date.getTime())) {\n date = null;\n } else if (cleanDateString !== dateString) {\n // Verify that this parse matches the original dateString through this format. If not, then something may have mismatched -\n // in which case we consider the date to be invalid.\n // For instance, if we parsed \"Fri Oct 18, 2023\" as \" Oct 18 2023\" (removing the duplicative day-of-week) then it\n // would re-format as \"Wed Oct 18 2023\" and is an invalid date.\n const reformattedDate = format(date, customFormat);\n if (reformattedDate !== dateString) {\n date = null;\n } else {\n isInvalidDate = false;\n }\n } else {\n isInvalidDate = false;\n }\n } catch(err) {\n // ignore error - keep isInvalidDate true and date null\n }\n return [date, dateString, isInvalidDate];\n }\n\n private dateFormatToImaskPattern(format: string): string {\n const partsReg = /(\\w)\\1+|([\\.\\\\/-])/g;\n let output: string = '';\n let match: RegExpExecArray;\n while ((match = partsReg.exec(format)) != null) {\n if (match[1]) {\n const matchLow = match[1].toLowerCase();\n if (matchLow === 'y') {\n output += 'Y';\n } else {\n output += matchLow;\n }\n } else {\n output += `{${match[2]}}\\``;\n }\n }\n return output;\n }\n\n /**\n * Certain date format characters are considered nonstandard. We can still use them, but remove them for date parsing to avoid errors\n * @param dateString\n * @param format\n * @returns date string and format in array, both having had their\n */\n private removeNonstandardFormatCharacters(dateString: string, format: string): [string, string] {\n const bannedChars = /[iIRoPp]+/;\n // remove quotes\n format = format.replace(/['\"]/g, '');\n let match: RegExpExecArray = null;\n while ((match = bannedChars.exec(format)) != null) {\n format = format.substring(0, match.index) + format.substring(match.index + match[0].length);\n dateString = dateString.substring(0, match.index) + dateString.substring(match.index + match[0].length);\n }\n return [dateString, format];\n }\n\n parseDateString(dateString: string): [Date, string, boolean] {\n let dateFormat: string = this.labels.dateFormatString();\n const dateFormatRegex = /(\\w+)[\\/|\\.|\\-](\\w+)[\\/|\\.|\\-](\\w+)/gi;\n const dateValueRegex = /(\\d+)[\\/|\\.|\\-](\\d+)[\\/|\\.|\\-](\\d+)/gi;\n let dateFormatTokens: Array<string>;\n let dateValueTokens: Array<string>;\n let year: number;\n let month: number;\n let day: number;\n let date: Date = null;\n let isInvalidDate = true;\n if (Helpers.isEmpty(dateFormat)) {\n // Default to MM/dd/yyyy\n dateFormat = 'mm/dd/yyyy';\n } else {\n dateFormat = dateFormat.toLowerCase();\n }\n dateFormatTokens = dateFormatRegex.exec(dateFormat);\n dateValueTokens = dateValueRegex.exec(dateString);\n if (dateFormatTokens && dateFormatTokens.length === 4 && dateValueTokens && dateValueTokens.length === 4) {\n for (let i = 1; i < 4; i++) {\n if (dateFormatTokens[i].includes('m')) {\n month = parseInt(dateValueTokens[i], 10) - 1;\n } else if (dateFormatTokens[i].includes('d')) {\n day = parseInt(dateValueTokens[i], 10);\n } else {\n year = parseInt(dateValueTokens[i], 10);\n }\n }\n if (month >= 0 && month <= 11 && year > 1900 && day > 0 && day <= 31) {\n date = new Date(year, month, day);\n isInvalidDate = false;\n }\n } else if (dateFormatTokens && dateFormatTokens.length === 4 && dateString.length >= 1) {\n const twoTokens = /\\d{1,4}(\\/|\\.|\\-)(\\d{1,2})/.exec(dateString);\n const oneToken = /^(\\d{1,4})$/.exec(dateString);\n const delimiter = /\\w+(\\/|\\.|\\-)\\w+[\\/|\\.|\\-]\\w+/gi.exec(dateFormat);\n const dateStringWithDelimiter = dateString[dateString.length - 1].match(/\\/|\\.|\\-/);\n if ((twoTokens && twoTokens.length === 3 && this.isValidDatePart(twoTokens[2], dateFormatTokens[2]) && !dateStringWithDelimiter) ||\n (oneToken && oneToken.length === 2 && this.isValidDatePart(oneToken[1], dateFormatTokens[1]) && !dateStringWithDelimiter)) {\n dateString = `${dateString}${delimiter[1]}`;\n }\n }\n return [date, dateString, isInvalidDate];\n }\n\n parseTimeString(timeString: string, militaryTime: boolean): [Date, string] {\n const value: Date = new Date();\n let timeStringParts: Array<string>;\n let amFormat = this.labels.timeFormatAM;\n let pmFormat = this.labels.timeFormatPM;\n if (!(timeString?.includes(':'))) {\n return [value, timeString];\n }\n if (!militaryTime && amFormat && pmFormat) {\n let splits: Array<string> = [];\n let pm: boolean = false;\n amFormat = this.labels.timeFormatAM.toLowerCase();\n pmFormat = this.labels.timeFormatPM.toLowerCase();\n timeString = timeString.toLowerCase();\n if (timeString.includes(amFormat)) {\n splits = timeString.split(amFormat);\n } else if (timeString.includes(pmFormat)) {\n splits = timeString.split(pmFormat);\n pm = true;\n }\n if (splits?.length) {\n for (const item of splits) {\n if (item?.trim().includes(':')) {\n timeStringParts = item.trim().split(':');\n }\n }\n }\n if (timeStringParts?.length && timeStringParts.length === 2) {\n let hours: number = parseInt(timeStringParts[0], 10);\n if (hours === 12 && pm) {\n hours = 12;\n } else if (pm) {\n hours = hours + 12;\n } else if (hours === 12) {\n hours = 0;\n }\n value.setHours(hours);\n value.setMinutes(parseInt(timeStringParts[1], 10));\n value.setSeconds(0);\n }\n } else {\n timeStringParts = /(\\d{1,2}):(\\d{2})/.exec(timeString);\n if (timeStringParts?.length && timeStringParts.length === 3) {\n value.setHours(parseInt(timeStringParts[1], 10));\n value.setMinutes(parseInt(timeStringParts[2], 10));\n value.setSeconds(0);\n }\n }\n return [value, timeString];\n }\n\n parseString(dateTimeString: string, militaryTime: boolean, type: string): [Date, string, boolean?] {\n if (!(dateTimeString?.length)) {\n return null;\n }\n switch (type) {\n case 'datetime':\n const str = dateTimeString.replace(/-/g, '/');\n const parts = str.split(' ');\n const [dt, dts] = this.parseDateString(parts[0]);\n if (parts.length > 1) {\n const [tm, tms] = this.parseTimeString(parts[1], militaryTime);\n return [new Date(dt.setHours(tm.getHours(), tm.getMinutes())), `${dts} ${tms}`];\n }\n return [dt, dts];\n case 'date':\n return this.parseDateString(dateTimeString);\n case 'time':\n return this.parseTimeString(dateTimeString, militaryTime);\n default:\n return;\n }\n }\n\n convertTime12to24(time12h: string) {\n const pmFormat = this.labels.timeFormatPM.toUpperCase();\n\n const [time, modifier] = time12h.split(' ');\n let [hours, minutes] = time.split(':');\n if (hours === '12') {\n hours = '00';\n }\n if (['PM', pmFormat].includes(modifier)) {\n hours = `${parseInt(hours, 10) + 12}`.padStart(2, '0');\n }\n return `${hours}:${minutes}`;\n }\n\n isValidDatePart(value: string, format: string): boolean {\n const datePart = parseInt(value, 10);\n return ((format.includes('m') && (datePart >= 2 || value.length === 2)) ||\n (format.includes('d') && (datePart >= 4 || value.length === 2)) ||\n (format.includes('y') && datePart >= 1000));\n }\n}\n","import { Injectable } from '@angular/core';\n\nexport interface Global {}\n\nexport abstract class GlobalRef {\n abstract get nativeGlobal(): Global;\n abstract get nativeWindow(): Window;\n}\n\n@Injectable()\nexport class BrowserGlobalRef extends GlobalRef {\n get nativeGlobal(): Global {\n return window as Global;\n }\n get nativeWindow(): Window {\n return window;\n }\n}\nexport class NodeGlobalRef extends GlobalRef {\n get nativeGlobal(): Global {\n throw new Error(`global doesn't compile for some reason`);\n }\n get nativeWindow(): Window {\n throw new Error('Node does not have a window object');\n }\n}\n","// NG2\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n// App\n\n@Injectable()\nexport class OptionsService {\n constructor() {}\n\n getOptionsConfig(http: HttpClient, field: any, config: { token?: string; restUrl?: string; military?: boolean }): any {\n return {\n field: 'value',\n format: '$label',\n options: (query) => {\n return new Promise((resolve, reject) => {\n if (query && query.length) {\n const exp = new RegExp('^(?:[a-z]+:)?//', 'i');\n let endpoint;\n if (exp.test(field.optionsUrl)) {\n const url = new URL(field.optionsUrl);\n url.searchParams.set('filter', query || '');\n endpoint = url.toString();\n } else {\n // Construct relative url (host will not be used but is required for construction)\n const url = new URL(`http://placeholder.com/${field.optionsUrl}`);\n url.searchParams.set('filter', query || '');\n endpoint = `${url.pathname}${url.search}`;\n }\n http.get(endpoint).subscribe(resolve, reject);\n } else {\n resolve([]);\n }\n });\n },\n };\n }\n}\n","// NG2\nimport { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class Security {\n credentials: string[] = [];\n change: EventEmitter<any> = new EventEmitter();\n\n grant(data: any[] | Object): void {\n const parsed = [];\n if (data instanceof Array) {\n for (const permission of data) {\n parsed.push(permission.replace(/\\s/gi, ''));\n }\n } else if (typeof data === 'object') {\n for (const key in data) {\n if (data[key] instanceof Array) {\n for (const permission of data[key]) {\n parsed.push(`${key}.${permission}`);\n }\n }\n }\n }\n this.credentials = [].concat(this.credentials, parsed);\n this.change.emit(this.credentials);\n }\n\n has(value: any): boolean {\n return this.credentials.indexOf(value) > -1;\n }\n\n revoke(value: any): void {\n const i: number = this.credentials.indexOf(value);\n this.credentials.splice(i, 1);\n this.change.emit(this.credentials);\n }\n\n clear(): void {\n this.credentials = [];\n this.change.emit(this.credentials);\n }\n\n subscribe(fn: any): void {\n this.change.subscribe(fn);\n }\n\n checkRoutes(\n routes: { entities?: any[]; permissions?: any[] | Function; path?: string; label?: string; canDisable?: Boolean }[],\n options: { entityType?: string },\n ): any {\n const filtered = [];\n for (const route of routes) {\n if (route.entities && ~route.entities.indexOf(options.entityType)) {\n if (route.permissions instanceof Function) {\n if (route.permissions(options, this)) {\n filtered.push(route);\n }\n } else if (route.permissions && route.permissions.length) {\n if (route.permissions.every((perm) => this.has(perm))) {\n filtered.push(route);\n }\n } else {\n filtered.push(route);\n }\n }\n }\n\n return filtered;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class LocalStorageService {\n setItem(key: any, value: any): any {\n localStorage.setItem(key, value);\n }\n\n getItem(key: any): any {\n return localStorage.getItem(key);\n }\n\n removeItem(key: any): any {\n localStorage.removeItem(key);\n }\n}\n","// NG2\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class NovoTemplateService {\n templates: any = {\n default: {},\n custom: {},\n };\n constructor() {}\n\n getAll(): any {\n const templates: any = {};\n const customTemplateTypes: string[] = Object.keys(this.templates.custom);\n const defaultTemplateTypes: string[] = Object.keys(this.templates.default);\n defaultTemplateTypes.forEach((type: string) => {\n templates[type] = this.templates.default[type];\n });\n customTemplateTypes.forEach((type: string) => {\n templates[type] = this.templates.custom[type];\n });\n return templates;\n }\n\n addDefault(key: string, template: any): void {\n this.templates.default[key] = template;\n }\n\n addCustom(key: string, template: any): void {\n this.templates.custom[key] = template;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoLabelService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-services.mjs","sources":["../../../projects/novo-elements/src/services/component-utils/ComponentUtils.ts","../../../projects/novo-elements/src/services/data-provider/CollectionEvent.ts","../../../projects/novo-elements/src/services/data-provider/ArrayCollection.ts","../../../projects/novo-elements/src/services/data-provider/PagedArrayCollection.ts","../../../projects/novo-elements/src/services/novo-label-service.ts","../../../projects/novo-elements/src/services/date-format/DateFormat.ts","../../../projects/novo-elements/src/services/global/global.service.ts","../../../projects/novo-elements/src/services/options/OptionsService.ts","../../../projects/novo-elements/src/services/security/Security.ts","../../../projects/novo-elements/src/services/storage/storage.service.ts","../../../projects/novo-elements/src/services/template/NovoTemplateService.ts","../../../projects/novo-elements/src/services/novo-elements-services.ts"],"sourcesContent":["// NG2\nimport { ComponentFactoryResolver, ComponentRef, Injectable, Injector, StaticProvider, Type, ViewContainerRef } from '@angular/core';\n\n@Injectable()\nexport class ComponentUtils<T = any> {\n constructor(public componentFactoryResolver: ComponentFactoryResolver) {}\n\n append<T>(ComponentClass: Type<T>, location: ViewContainerRef, providers?: StaticProvider[], onTop?: boolean): ComponentRef<T> { //eslint-disable-line\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(ComponentClass);\n const parent = location.injector;\n const index = onTop ? 0 : location.length;\n return location.createComponent(componentFactory, index, Injector.create({ providers, parent }));\n }\n}\n","export class CollectionEvent {\n static REFRESH: string = 'Collection.REFRESH';\n static ADD: string = 'Collection.ADD';\n static REMOVE: string = 'Collection.REMOVE';\n static REMOVE_ALL: string = 'Collection.REMOVE_ALL';\n static REPLACE: string = 'Collection.REPLACE';\n static INVALIDATE_ALL: string = 'Collection.INVALIDATE_ALL';\n static SORT: string = 'Collection.SORT';\n static FILTER: string = 'Collection.FILTER';\n static CHANGE: string = 'Collection.CHANGE';\n static CURRENTPAGE_CHANGE: string = 'Collection.CURRENTPAGE_CHANGE';\n static PAGESIZE_CHANGE: string = 'Collection.PAGESIZE_CHANGE';\n static NUMBEROFPAGES_CHANGE: string = 'Collection.NUMBEROFPAGES_CHANGE';\n\n type: string = '';\n data: Array<any> = [];\n\n constructor(type = 'Collection.REFRESH', data = []) {\n this.type = type;\n this.data = data;\n }\n}\n","// Ng\nimport { EventEmitter } from '@angular/core';\nimport { Helpers } from 'novo-elements/utils';\n// App\nimport { Collection } from './Collection';\nimport { CollectionEvent } from './CollectionEvent';\n\n/**\n * Base Class for all Collection based data providers\n *\n * @example\n * var dp:DataProvider = new DataProvider();\n * dp.addItem({label:\"Item 1\"});\n * dp.addItem({label:\"Item 2\"});\n * dp.addItem({label:\"Item 3\"});\n * dp.addItem({label:\"Item 4\"});\n\n * var myList:List = new List();\n * myList.dataProvider = dp;\n */\nexport class ArrayCollection<T> implements Collection<T> {\n dataChange: EventEmitter<CollectionEvent> = new EventEmitter<CollectionEvent>();\n source: Array<T> = [];\n editData: Array<T> = [];\n isEditing: boolean = false;\n filterData: Array<T> = [];\n _filter: any = {};\n _sort: Array<any> = [];\n\n constructor(source: Array<T> = []) {\n this.source = source;\n this.editData = this.copy(this.source);\n this.filterData = this.source.slice();\n }\n\n get length() {\n return this.filterData.length;\n }\n\n get total(): number {\n return this.filterData.length;\n }\n\n get list(): Array<T> {\n return this.filterData;\n }\n\n isEmpty(): boolean {\n return this.length <= 0 && !this.isLoading() && !this.hasErrors();\n }\n\n hasErrors(): boolean {\n return false;\n }\n\n isLoading(): boolean {\n return false;\n }\n\n isFiltered(): boolean {\n return Object.keys(this._filter).length > 0;\n }\n\n /**\n * Method to switch the isEditingflag for the data source\n */\n edit() {\n this.isEditing = true;\n this.editData = this.copy(this.source);\n }\n\n /**\n * Method to leave edit mode and reset source\n */\n undo() {\n this.isEditing = false;\n this.source = this.copy(this.editData);\n this.refresh();\n }\n\n /**\n * Method to leave edit mode and save editData\n */\n commit() {\n this.isEditing = false;\n this.source = this.filterData.slice();\n this.refresh();\n }\n\n /**\n * Appends an item to the end of the data provider.\n *\n *\n * @memberOf ArrayCollection\n */\n addItem(item: T): void {\n this.isEditing ? this.editData.push(item) : this.source.push(item);\n this.onDataChange(new CollectionEvent(CollectionEvent.ADD, [item]));\n this.refresh();\n }\n\n /**\n * Adds a new item to the data provider at the specified index.\n *\n *\n * @memberOf ArrayCollection\n */\n addItemAt(item: T, index: number): void {\n this.isEditing ? this.editData.splice(index, 0, item) : this.source.splice(index, 0, item);\n this.onDataChange(new CollectionEvent(CollectionEvent.ADD, [item]));\n this.refresh();\n }\n\n /**\n * Appends multiple items to the end of the DataProvider and dispatches a CollectionEvent.ADD event.\n *\n * @memberOf ArrayCollection\n */\n addItems(items: Array<T>): void {\n this.isEditing ? this.editData.push(...items) : this.source.push(...items);\n this.onDataChange(new CollectionEvent(CollectionEvent.ADD, items));\n this.refresh();\n }\n\n /**\n * Adds several items to the data provider at the specified index and dispatches a CollectionEvent.ADD event.\n *\n * @memberOf ArrayCollection\n */\n addItemsAt(items: Array<T>, index: number): void {\n this.isEditing ? this.editData.splice(index, 0, ...items) : this.source.splice(index, 0, ...items);\n }\n\n /**\n * Creates a copy of the current ArrayCollection any.\n *\n * @memberOf ArrayCollection\n */\n clone(): ArrayCollection<T> {\n return new ArrayCollection(this.isEditing ? this.copy(this.editData) : this.copy(this.source));\n }\n\n /**\n * Creates a copy of the current ArrayCollection any.\n *\n * @memberOf ArrayCollection\n */\n copy(array: any[]) {\n return Helpers.deepClone(array);\n }\n\n /**\n * Concatenates the specified items to the end of the current data provider.\n *\n * @memberOf ArrayCollection\n */\n concat(items: Array<T>): void {\n this.addItems(items);\n }\n\n /**\n * Returns the item at the specified index.\n *\n * @memberOf ArrayCollection\n */\n getItemAt(index: number): any {\n return this.isEditing ? this.editData[index] : this.source[index];\n }\n\n /**\n * Returns the index of the specified item.\n *\n * @memberOf ArrayCollection\n */\n getItemIndex(item: T): number {\n return this.isEditing ? this.editData.indexOf(item) : this.source.indexOf(item);\n }\n\n /**\n * Invalidates all the data items that the DataProvider contains and dispatches a CollectionEvent.INVALIDATE_ALL event.\n *\n * @memberOf ArrayCollection\n */\n invalidate(): void {\n this.onDataChange(new CollectionEvent(CollectionEvent.INVALIDATE_ALL));\n }\n\n /**\n * Appends the specified data into the data that the data provider contains and removes any duplicate items.\n *\n * @memberOf ArrayCollection\n */\n merge(newData: Array<T>): void {\n for (const obj of newData) {\n const existing = ~this.getItemIndex(obj);\n if (existing) {\n this.replaceItem(obj, existing);\n } else {\n this.addItem(obj);\n }\n }\n }\n\n /**\n * Removes all items from the data provider and dispatches a CollectionEvent.REMOVE_ALL event.\n *\n * @memberOf ArrayCollection\n */\n removeAll(): void {\n this.source = [];\n this.editData = [];\n this.filterData = [];\n this.onDataChange(new CollectionEvent(CollectionEvent.REMOVE_ALL, []));\n this.refresh();\n }\n\n /**\n * Removes the specified item from the data provider and dispatches a CollectionEvent.REMOVE event.\n *\n * @memberOf ArrayCollection\n */\n removeItem(item: T): boolean {\n const index = this.getItemIndex(item);\n return this.removeItemAt(index);\n }\n\n /**\n * Removes the item at the specified index and dispatches a CollectionEvent.REMOVE event.\n *\n * @memberOf ArrayCollection\n */\n removeItemAt(index: number): boolean {\n const success = !!this.source.splice(index, 1);\n this.refresh();\n return success;\n }\n\n /**\n * Replaces an existing item with a new item and dispatches a CollectionEvent.REPLACE event.\n *\n * @memberOf ArrayCollection\n */\n replaceItem(newItem: any, oldItem: any): any {\n const index = this.getItemIndex(oldItem);\n if (index >= 0) {\n this.replaceItemAt(newItem, index);\n }\n }\n\n /**\n * Replaces the item at the specified index and dispatches a CollectionEvent.REPLACE event.\n *\n * @memberOf ArrayCollection\n */\n replaceItemAt(newItem: any, index: number): any {\n this.filterData.splice(index, 1, newItem);\n }\n\n /**\n * Sorts the items that the data provider contains and dispatches a CollectionEvent.SORT event.\n *\n * @memberOf ArrayCollection\n */\n get sort(): Array<any> {\n return this._sort;\n }\n\n set sort(value: Array<any>) {\n this._sort = value;\n this.refresh();\n }\n\n /**\n * Sorts the items that the data provider contains by the specified field and dispatches a CollectionEvent.SORT event.\n *\n * @memberOf ArrayCollection\n */\n sortOn(fieldName: any, reverse = false): Array<T> {\n this.filterData = this.filterData.sort(Helpers.sortByField(fieldName, reverse));\n this.onDataChange(new CollectionEvent(CollectionEvent.SORT));\n return this.filterData;\n }\n\n get filter(): any {\n return this._filter;\n }\n\n set filter(value: any) {\n this._filter = value;\n this.refresh();\n }\n\n filterOn(fieldName: any, value: any = null): Array<T> {\n this.filterData = this.filterData.filter(Helpers.filterByField(fieldName, value));\n return this.filterData;\n }\n\n onDataChange(event: CollectionEvent): void {\n this.dataChange.emit(event);\n }\n\n refresh(): void {\n this.filterData = this.isEditing ? this.editData.slice() : this.source.slice();\n for (const item of this._sort.reverse()) {\n this.sortOn(item.field, item.reverse);\n }\n for (const key in this._filter) {\n if (key) {\n this.filterOn(key, this._filter[key]);\n }\n }\n this.onDataChange(new CollectionEvent(CollectionEvent.CHANGE, this.filterData));\n }\n\n /**\n * Creates an Array any representation of the data that the data provider contains.\n *\n * @memberOf ArrayCollection\n */\n toArray(): Array<T> {\n return this.isEditing ? this.editData : this.source;\n }\n\n toJSON() {\n return this.isEditing ? this.editData : this.source;\n }\n}\n","import { ArrayCollection } from './ArrayCollection';\nimport { CollectionEvent } from './CollectionEvent';\nimport { PagedCollection } from './PagedCollection';\n\nexport class PagedArrayCollection<T> extends ArrayCollection<T> implements PagedCollection<T> {\n _page: number = 1;\n _numberOfPages: number = 1;\n _pageSize: number = 10;\n\n constructor(source: Array<T> = []) {\n super(source);\n }\n\n get numberOfPages(): number {\n let result: number = this.source.length / this.pageSize;\n result = Math.ceil(result);\n return result;\n }\n\n get page(): number {\n return this._page;\n }\n\n set page(value: number) {\n this._page = value;\n this.refresh();\n }\n\n get pageSize(): number {\n return this._pageSize;\n }\n\n set pageSize(value: number) {\n this._pageSize = value;\n this.refresh();\n }\n\n next(): number {\n if (this.page === this.numberOfPages) {\n return this.page;\n }\n this.page++;\n return this.page;\n }\n\n prev(): number {\n if (this._page === 1) {\n return this.page;\n }\n this.page--;\n return this.page;\n }\n\n first(): number {\n if (this.page === 1) {\n return this.page;\n }\n this.page = 1;\n return this.page;\n }\n\n last(): number {\n if (this.page === this.numberOfPages) {\n return this.page;\n }\n this.page = this.numberOfPages;\n return this.page;\n }\n\n refresh(): void {\n this.filterData = this.isEditing ? this.editData.slice() : this.source.slice();\n for (const item of this._sort.reverse()) {\n this.sortOn(item.field, item.reverse);\n }\n for (const key in this._filter) {\n if (key) {\n this.filterOn(key, this._filter[key]);\n }\n }\n if (this.page >= 0) {\n const start = (this.page - 1) * this.pageSize;\n const end = start + this.pageSize;\n const result = this.filterData.slice(start, end);\n this.onDataChange(new CollectionEvent(CollectionEvent.CHANGE, result));\n } else {\n this.onDataChange(new CollectionEvent(CollectionEvent.CHANGE, this.filterData));\n }\n }\n}\n","// NG2\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport { Day } from 'date-fns';\n\ninterface TimeFormatParts {\n hour: string;\n minute: string;\n dayPeriod?: string;\n}\n\nexport interface BigDecimalFormatOptions extends Intl.NumberFormatOptions {\n useAccountingFormat?: boolean; // Render negative numbers using parens. True: \"(3.14)\", False: \"-3.14\"\n}\n\n@Injectable()\nexport class NovoLabelService {\n and = 'and';\n not = 'not';\n filters = 'Filter';\n filterss = 'Filters';\n clear = 'Clear';\n sort = 'Sort';\n distributionListOwner = 'Owner';\n dateAdded = 'Date Added';\n emptyTableMessage = 'No Records to display...';\n noMatchingRecordsMessage = 'No Matching Records';\n noMoreRecordsMessage = 'No More Records';\n erroredTableMessage = 'Oops! An error occurred.';\n pickerError = 'Oops! An error occurred.';\n pickerTextFieldEmpty = 'Begin typing to see results.';\n pickerEmpty = 'No results to display...';\n tabbedGroupPickerEmpty = 'No results found';\n quickNoteError = 'Oops! An error occurred.';\n quickNoteEmpty = 'No results to display...';\n required = 'Required';\n numberTooLarge = 'Number is too large';\n apply = 'Apply';\n save = 'Save';\n cancel = 'Cancel';\n next = 'Next';\n itemsPerPage = 'Items per page:';\n chooseAField = 'Choose a field...';\n operator = 'Operator...';\n select = 'Select...';\n value = 'Value...';\n selectDateRange = 'Select Date Range...'\n typeToAddChips = 'Type and press Enter to add...'\n selected = 'Selected';\n selectAllOnPage = 'Select all on page';\n deselectAll = 'Deselect all';\n refresh = 'Refresh';\n close = 'Close';\n move = 'Move';\n startDate = 'Start Date';\n endDate = 'End Date';\n rate = 'Rate';\n more = 'more';\n clearAll = 'CLEAR ALL';\n clearAllNormalCase = 'Clear All';\n clearSort = 'Clear Sort';\n clearFilter = 'Clear Filter';\n clearSearch = 'Clear Search';\n clearSelected = 'Clear Selected';\n today = 'Today';\n now = 'Now';\n isRequired = 'is required';\n notValidYear = 'is not a valid year';\n isTooLarge = 'is too large';\n invalidAddress = 'requires at least one field filled out';\n invalidEmail = 'requires a valid email (ex. abc@123.com)';\n minLength = 'is required to be a minimum length of';\n past1Day = 'Past 1 Day';\n past7Days = 'Past 7 Days';\n past14Days = 'Past 14 Days';\n past21Days = 'Past 21 Days';\n past30Days = 'Past 30 Days';\n past60Days = 'Past 60 Days';\n past90Days = 'Past 90 Days';\n past180Days = 'Past 180 Days';\n past270Days = 'Past 270 Days';\n past1Year = 'Past 1 Year';\n next1Day = 'Next 1 Day';\n next7Days = 'Next 7 Days';\n next14Days = 'Next 14 Days';\n next21Days = 'Next 21 Days';\n next30Days = 'Next 30 Days';\n next60Days = 'Next 60 Days';\n next90Days = 'Next 90 Days';\n next180Days = 'Next 180 Days';\n next270Days = 'Next 270 Days';\n next1Year = 'Next 1 Year';\n future = 'Future';\n customDateRange = 'Custom Date Range';\n backToPresetFilters = 'Back to Preset Filters';\n okGotIt = 'Ok, Got it';\n address = 'Address';\n address1 = 'Address';\n apt = 'Apt'; // TODO delete\n address2 = 'Apt';\n city = 'City / Locality';\n state = 'State / Region';\n zip = 'Postal Code';\n zipCode = 'Postal Code'; // TODO delete\n country = 'Country';\n or = 'or';\n clickToBrowse = 'click to browse';\n chooseAFile = 'Choose a file';\n no = 'No';\n yes = 'Yes';\n search = 'SEARCH';\n noItems = 'There are no items';\n dateFormat = 'MM/dd/yyyy';\n dateFormatPlaceholder = 'MM/DD/YYYY';\n localDatePlaceholder = 'mm/dd/yyyy';\n timeFormatPlaceholderAM = 'hh:mm AM';\n timeFormatPlaceholder24Hour = 'HH:mm';\n timeFormatAM = 'AM';\n timeFormatPM = 'PM';\n confirmChangesModalMessage = 'Are you sure you want to change this field?';\n promptModalMessage = 'Do you want to perform the following changes?';\n asyncFailure = 'Async validation was not called within the 10s threshold, you might want to reload the page to try again';\n previous = 'Previous';\n actions = 'Actions';\n all = 'All';\n groupedMultiPickerEmpty = 'No items to display';\n groupedMultiPickerSelectCategory = 'Select a category from the left to get started';\n add = 'Add';\n encryptedFieldTooltip = 'This data has been stored at the highest level of security';\n noStatesForCountry = 'No states available for the selected country';\n selectCountryFirst = 'Please select a country before selecting a state';\n invalidIntegerInput = 'Special characters are not allowed for';\n maxRecordsReached = 'Sorry, you have reached the maximum number of records allowed for this field';\n selectFilterOptions = 'Please select one or more filter options below.';\n addCondition = 'Add Condition';\n includeAny = 'Include Any';\n includeAll = 'Include All';\n exclude = 'Exclude';\n excludeAny = 'Exclude Any';\n radius = 'Radius';\n insideRadius = 'Radius (Inside)';\n outsideRadius = 'Radius (Outside)';\n equals = 'Equals';\n equalTo = 'Equal To';\n greaterThan = 'Greater Than';\n lessThan = 'Less Than';\n doesNotEqual = 'Does Not Equal';\n beginsWith = 'Begins With';\n true = 'True';\n false = 'False';\n before = 'Before';\n after = 'After';\n within = 'Within';\n isNull = 'Is Empty';\n isEmpty = 'Is Empty?';\n between = 'Is Between';\n refreshPagination = 'Refresh Pagination';\n location = 'Location';\n showLess = 'Show Less';\n miles = 'Miles';\n km = 'Km';\n minimumPlaceholder = 'Minimum';\n maximumPlaceholder = 'Maximum';\n minGreaterThanMax = 'The minimum is greater than the maximum value';\n\n constructor(\n @Optional()\n @Inject(LOCALE_ID)\n public userLocale = 'en-US',\n ) {}\n\n maxlengthMetWithField(field: string, maxlength: number): string {\n return `Sorry, you have reached the maximum character count of ${maxlength} for ${field}.`;\n }\n\n maxlengthMet(maxlength: number): string {\n return `Sorry, you have reached the maximum character count of ${maxlength} for this field.`;\n }\n\n invalidMaxlengthWithField(field: string, maxlength: number): string {\n return `Sorry, you have exceeded the maximum character count of ${maxlength} for ${field}.`;\n }\n\n invalidMaxlength(maxlength: number): string {\n return `Sorry, you have exceeded the maximum character count of ${maxlength} for this field.`;\n }\n\n getToManyPlusMore(toMany: { quantity: number }): string {\n return `+${toMany.quantity} more`;\n }\n\n selectedRecords(selected: number) {\n return `${selected} records are selected.`;\n }\n\n showingXofXResults(shown: number, total: number) {\n return `Showing ${shown} of ${total} Results.`;\n }\n\n ofXAmount(amount: number) {\n return `of ${amount}`;\n }\n\n totalRecords(total: number, select = false) {\n return select ? `Select all ${total} records.` : `De-select remaining ${total} records.`;\n }\n\n dateFormatString(): string {\n return this.dateFormat;\n }\n\n localizedDatePlaceholder(): string {\n return this.localDatePlaceholder;\n }\n\n tabbedGroupClearSuggestion(tabLabelPlural: string): string {\n return `Clear your search to see all ${tabLabelPlural}.`;\n }\n\n formatDateWithFormat(value: any, format: Intl.DateTimeFormatOptions) {\n const date = value instanceof Date ? value : new Date(value);\n if (date.getTime() !== date.getTime()) {\n return value;\n }\n return new Intl.DateTimeFormat(this.userLocale, format).format(date);\n }\n\n formatToTimeOnly(param) {}\n\n formatToDateOnly(param) {}\n\n formatTimeWithFormat(value: any, format: Intl.DateTimeFormatOptions): string {\n const date = value instanceof Date ? value : new Date(value);\n if (date.getTime() !== date.getTime()) {\n return value;\n }\n const timeParts: { [type: string]: string } = Intl.DateTimeFormat(this.userLocale, format)\n .formatToParts(date)\n .reduce((obj, part) => {\n obj[part.type] = part.value;\n return obj;\n }, {});\n const dayPeriod = timeParts.dayPeriod ? timeParts.dayPeriod : '';\n const res = `${timeParts.hour}:${timeParts.minute} ${dayPeriod}`;\n return res;\n }\n\n getWeekdays(weekStartsOn: Day = 0): string[] {\n function getDay(dayOfWeek) {\n const dt = new Date();\n return dt.setDate(dt.getDate() - dt.getDay() + dayOfWeek);\n }\n\n let weekdays = [getDay(0), getDay(1), getDay(2), getDay(3), getDay(4), getDay(5), getDay(6)].reduce((dayList, dt) => {\n dayList.push(new Intl.DateTimeFormat(this.userLocale, { weekday: 'long' }).format(dt));\n return dayList;\n }, []);\n\n if (weekStartsOn > 0 && weekStartsOn <= 6) {\n const newStart = weekdays.splice(weekStartsOn);\n weekdays = [...newStart, ...weekdays];\n }\n return weekdays;\n }\n\n getMonths(): string[] {\n function getMonth(month) {\n const dt = new Date();\n return dt.setMonth(month, 1);\n }\n\n return [\n getMonth(0),\n getMonth(1),\n getMonth(2),\n getMonth(3),\n getMonth(4),\n getMonth(5),\n getMonth(6),\n getMonth(7),\n getMonth(8),\n getMonth(9),\n getMonth(10),\n getMonth(11),\n ].reduce((months, dt) => {\n months.push(new Intl.DateTimeFormat(this.userLocale, { month: 'long' }).format(dt));\n return months;\n }, []);\n }\n\n getProperty(value: string) {\n return this[value];\n }\n\n getRangeText(page: number, pageSize: number, length: number, short: boolean): string {\n if (length === 0 || pageSize === 0) {\n return `Displaying 0 of ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return short ? `${startIndex + 1} - ${endIndex}/${length}` : `Displaying ${startIndex + 1} - ${endIndex} of ${length}`;\n }\n\n formatCurrency(value: number): string {\n const options: Intl.NumberFormatOptions = { style: 'currency', currency: 'USD' };\n return new Intl.NumberFormat(this.userLocale, options).format(value);\n }\n\n /**\n * Extends the Intl.numberFormat capability with two extra features:\n * - Does NOT round values, but instead truncates to maximumFractionDigits\n * - By default uses accounting format for negative numbers: (3.14) instead of -3.14.\n *\n * @param value The number value to convert to string\n * @param overrideOptions Allows for overriding options used and passed to Intl.NumberFormat()\n */\n formatBigDecimal(value: number, overrideOptions?: BigDecimalFormatOptions): string {\n const defaultOptions: BigDecimalFormatOptions = {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useAccountingFormat: true,\n };\n const options: BigDecimalFormatOptions = Object.assign(defaultOptions, overrideOptions);\n const truncatedValue = this.truncateToPrecision(value, options.maximumFractionDigits);\n let _value = new Intl.NumberFormat(this.userLocale, options).format(truncatedValue);\n if (value < 0) {\n _value = options.useAccountingFormat ? `(${_value.slice(1)})` : `-${_value.slice(1)}`;\n }\n return _value;\n }\n\n /**\n * Performs a string-based truncating of a number with no rounding\n */\n truncateToPrecision(value: number, precision: number) {\n let valueAsString = value ? value.toString() : '0';\n const decimalIndex = valueAsString.indexOf('.');\n if (decimalIndex > -1 && decimalIndex + precision + 1 < valueAsString.length) {\n valueAsString = valueAsString.substring(0, valueAsString.indexOf('.') + precision + 1);\n }\n return Number(valueAsString);\n }\n\n formatNumber(value, options?: Intl.NumberFormatOptions) {\n return new Intl.NumberFormat(this.userLocale, options).format(value);\n }\n\n formatDateShort(value: string | number | Date) {\n const options: Intl.DateTimeFormatOptions = {\n // DD/MM/YYYY, HH:MM A - 02/14/2017, 1:17 PM\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n };\n const _value = value === null || value === undefined || value === '' ? new Date() : new Date(value);\n return new Intl.DateTimeFormat(this.userLocale, options).format(_value);\n }\n\n formatTime(value: string | number | Date) {\n const options: Intl.DateTimeFormatOptions = {\n // HH:MM A - 1:17 PM\n hour: 'numeric',\n minute: '2-digit',\n };\n const _value = value === null || value === undefined || value === '' ? new Date() : new Date(value);\n return new Intl.DateTimeFormat(this.userLocale, options).format(_value);\n }\n\n formatDate(value: string | number | Date) {\n const options: Intl.DateTimeFormatOptions = {\n // DD/MM/YYYY - 02/14/2017\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n };\n const _value = value === null || value === undefined || value === '' ? new Date() : new Date(value);\n return new Intl.DateTimeFormat(this.userLocale, options).format(_value);\n }\n}\n\nexport const NOVO_ELEMENTS_LABELS_PROVIDERS = [{ provide: NovoLabelService, useClass: NovoLabelService }];\n","// NG2\nimport { Injectable } from '@angular/core';\nimport { NovoLabelService } from '../novo-label-service';\n// APP\nimport { format, parse } from 'date-fns';\nimport { MaskedOptions, MaskedEnum, MaskedRange } from 'imask';\nimport { DateUtil, Helpers, convertTokens } from 'novo-elements/utils';\n\n@Injectable()\nexport class DateFormatService {\n\n public readonly dateFormatAsImaskPattern: string;\n\n constructor(private labels: NovoLabelService) {\n this.dateFormatAsImaskPattern = this.dateFormatToImaskPattern(this.labels.dateFormatString());\n }\n\n getTimeMask(militaryTime: boolean): MaskedOptions {\n const amFormat = this.labels.timeFormatAM.toUpperCase();\n const pmFormat = this.labels.timeFormatPM.toUpperCase();\n const mask = {\n mask: Date,\n pattern: militaryTime ? 'HH:mm' : 'hh:mm aa',\n overwrite: true,\n autofix: true,\n lazy: false,\n min: new Date(1970, 0, 1),\n max: new Date(2100, 0, 1),\n prepare(str) {\n return str.toUpperCase();\n },\n format(date) {\n return DateUtil.format(date, militaryTime ? 'HH:mm' : 'hh:mm A');\n },\n parse: (str) => {\n const time = militaryTime ? str : this.convertTime12to24(str);\n return DateUtil.parse(`${DateUtil.format(Date.now(), 'YYYY-MM-DD')}T${time}`);\n },\n blocks: {\n HH: {\n mask: MaskedRange,\n placeholderChar: 'H',\n maxLength: 2,\n from: 0,\n to: 23,\n },\n hh: {\n mask: MaskedRange,\n placeholderChar: 'h',\n maxLength: 2,\n from: 1,\n to: 12,\n },\n mm: {\n mask: MaskedRange,\n placeholderChar: 'm',\n maxLength: 2,\n from: 0,\n to: 59,\n },\n aa: {\n mask: MaskedEnum,\n placeholderChar: 'x',\n enum: ['AM', 'PM', 'am', 'pm', amFormat, pmFormat],\n },\n },\n };\n return mask;\n }\n\n getDateMask(): MaskedOptions {\n return {\n mask: /^((\\d)(\\d|\\/|\\.|\\-){0,7})?(\\d){0,2}$/,\n };\n }\n\n getDateTimeMask(militaryTime: boolean = false): Array<any> {\n return [this.getDateMask(), /\\,?/, /\\s/, this.getTimeMask(militaryTime)];\n }\n\n getTimePlaceHolder(militaryTime: boolean): string {\n if (militaryTime) {\n return this.labels.timeFormatPlaceholder24Hour;\n }\n return this.labels.timeFormatPlaceholderAM;\n }\n\n parseCustomDateString(dateString: string, customFormat?: string): [Date, string, boolean] {\n let isInvalidDate = true;\n let date: Date = null;\n if (!customFormat) {\n customFormat = this.labels.dateFormatString();\n }\n customFormat = convertTokens(customFormat);\n const [cleanDateString, cleanFormat] = this.removeNonstandardFormatCharacters(dateString, customFormat);\n try {\n date = parse(cleanDateString, cleanFormat, new Date(), {\n useAdditionalWeekYearTokens: false,\n });\n if (isNaN(date.getTime())) {\n date = null;\n } else if (cleanDateString !== dateString) {\n // Verify that this parse matches the original dateString through this format. If not, then something may have mismatched -\n // in which case we consider the date to be invalid.\n // For instance, if we parsed \"Fri Oct 18, 2023\" as \" Oct 18 2023\" (removing the duplicative day-of-week) then it\n // would re-format as \"Wed Oct 18 2023\" and is an invalid date.\n const reformattedDate = format(date, customFormat);\n if (reformattedDate !== dateString) {\n date = null;\n } else {\n isInvalidDate = false;\n }\n } else {\n isInvalidDate = false;\n }\n } catch(err) {\n // ignore error - keep isInvalidDate true and date null\n }\n return [date, dateString, isInvalidDate];\n }\n\n private dateFormatToImaskPattern(formatString: string): string {\n const partsReg = /(\\w)\\1+|([\\.\\\\/-])/g;\n let output: string = '';\n let match: RegExpExecArray;\n while ((match = partsReg.exec(formatString)) != null) {\n if (match[1]) {\n const matchLow = match[1].toLowerCase();\n if (matchLow === 'y') {\n output += 'Y';\n } else {\n output += matchLow;\n }\n } else {\n output += `{${match[2]}}\\``;\n }\n }\n return output;\n }\n\n /**\n * Certain date format characters are considered nonstandard. We can still use them, but remove them for date parsing to avoid errors\n * @param dateString\n * @param formatString\n * @returns date string and format in array, both having had their\n */\n private removeNonstandardFormatCharacters(dateString: string, formatString: string): [string, string] {\n const bannedChars = /[iIRoPp]+/;\n // remove quotes\n formatString = formatString.replace(/['\"]/g, '');\n let match: RegExpExecArray = null;\n while ((match = bannedChars.exec(formatString)) != null) {\n formatString = formatString.substring(0, match.index) + formatString.substring(match.index + match[0].length);\n dateString = dateString.substring(0, match.index) + dateString.substring(match.index + match[0].length);\n }\n return [dateString, formatString];\n }\n\n parseDateString(dateString: string): [Date, string, boolean] {\n let dateFormat: string = this.labels.dateFormatString();\n const dateFormatRegex = /(\\w+)[\\/|\\.|\\-](\\w+)[\\/|\\.|\\-](\\w+)/gi;\n const dateValueRegex = /(\\d+)[\\/|\\.|\\-](\\d+)[\\/|\\.|\\-](\\d+)/gi;\n let year: number;\n let month: number;\n let day: number;\n let date: Date = null;\n let isInvalidDate = true;\n if (Helpers.isEmpty(dateFormat)) {\n // Default to MM/dd/yyyy\n dateFormat = 'mm/dd/yyyy';\n } else {\n dateFormat = dateFormat.toLowerCase();\n }\n const dateFormatTokens: Array<string> = dateFormatRegex.exec(dateFormat);\n const dateValueTokens: Array<string> = dateValueRegex.exec(dateString);\n if (dateFormatTokens && dateFormatTokens.length === 4 && dateValueTokens && dateValueTokens.length === 4) {\n for (let i = 1; i < 4; i++) {\n if (dateFormatTokens[i].includes('m')) {\n month = parseInt(dateValueTokens[i], 10) - 1;\n } else if (dateFormatTokens[i].includes('d')) {\n day = parseInt(dateValueTokens[i], 10);\n } else {\n year = parseInt(dateValueTokens[i], 10);\n }\n }\n if (month >= 0 && month <= 11 && year > 1900 && day > 0 && day <= 31) {\n date = new Date(year, month, day);\n isInvalidDate = false;\n }\n } else if (dateFormatTokens && dateFormatTokens.length === 4 && dateString.length >= 1) {\n const twoTokens = /\\d{1,4}(\\/|\\.|\\-)(\\d{1,2})/.exec(dateString);\n const oneToken = /^(\\d{1,4})$/.exec(dateString);\n const delimiter = /\\w+(\\/|\\.|\\-)\\w+[\\/|\\.|\\-]\\w+/gi.exec(dateFormat);\n const dateStringWithDelimiter = dateString[dateString.length - 1].match(/\\/|\\.|\\-/);\n if ((twoTokens && twoTokens.length === 3 && this.isValidDatePart(twoTokens[2], dateFormatTokens[2]) && !dateStringWithDelimiter) ||\n (oneToken && oneToken.length === 2 && this.isValidDatePart(oneToken[1], dateFormatTokens[1]) && !dateStringWithDelimiter)) {\n dateString = `${dateString}${delimiter[1]}`;\n }\n }\n return [date, dateString, isInvalidDate];\n }\n\n parseTimeString(timeString: string, militaryTime: boolean): [Date, string] {\n const value: Date = new Date();\n let timeStringParts: Array<string>;\n let amFormat = this.labels.timeFormatAM;\n let pmFormat = this.labels.timeFormatPM;\n if (!(timeString?.includes(':'))) {\n return [value, timeString];\n }\n if (!militaryTime && amFormat && pmFormat) {\n let splits: Array<string> = [];\n let pm: boolean = false;\n amFormat = this.labels.timeFormatAM.toLowerCase();\n pmFormat = this.labels.timeFormatPM.toLowerCase();\n timeString = timeString.toLowerCase();\n if (timeString.includes(amFormat)) {\n splits = timeString.split(amFormat);\n } else if (timeString.includes(pmFormat)) {\n splits = timeString.split(pmFormat);\n pm = true;\n }\n if (splits?.length) {\n for (const item of splits) {\n if (item?.trim().includes(':')) {\n timeStringParts = item.trim().split(':');\n }\n }\n }\n if (timeStringParts?.length && timeStringParts.length === 2) {\n let hours: number = parseInt(timeStringParts[0], 10);\n if (hours === 12 && pm) {\n hours = 12;\n } else if (pm) {\n hours = hours + 12;\n } else if (hours === 12) {\n hours = 0;\n }\n value.setHours(hours);\n value.setMinutes(parseInt(timeStringParts[1], 10));\n value.setSeconds(0);\n }\n } else {\n timeStringParts = /(\\d{1,2}):(\\d{2})/.exec(timeString);\n if (timeStringParts?.length && timeStringParts.length === 3) {\n value.setHours(parseInt(timeStringParts[1], 10));\n value.setMinutes(parseInt(timeStringParts[2], 10));\n value.setSeconds(0);\n }\n }\n return [value, timeString];\n }\n\n parseString(dateTimeString: string, militaryTime: boolean, type: string): [Date, string, boolean?] {\n if (!(dateTimeString?.length)) {\n return null;\n }\n switch (type) {\n case 'datetime':\n const str = dateTimeString.replace(/-/g, '/');\n const parts = str.split(' ');\n const [dt, dts] = this.parseDateString(parts[0]);\n if (parts.length > 1) {\n const [tm, tms] = this.parseTimeString(parts[1], militaryTime);\n return [new Date(dt.setHours(tm.getHours(), tm.getMinutes())), `${dts} ${tms}`];\n }\n return [dt, dts];\n case 'date':\n return this.parseDateString(dateTimeString);\n case 'time':\n return this.parseTimeString(dateTimeString, militaryTime);\n default:\n return;\n }\n }\n\n convertTime12to24(time12h: string) {\n const pmFormat = this.labels.timeFormatPM.toUpperCase();\n\n const [time, modifier] = time12h.split(' ');\n // eslint-disable-next-line prefer-const\n let [hours, minutes] = time.split(':');\n if (hours === '12') {\n hours = '00';\n }\n if (['PM', pmFormat].includes(modifier)) {\n hours = `${parseInt(hours, 10) + 12}`.padStart(2, '0');\n }\n return `${hours}:${minutes}`;\n }\n\n isValidDatePart(value: string, formatString: string): boolean {\n const datePart = parseInt(value, 10);\n return ((formatString.includes('m') && (datePart >= 2 || value.length === 2)) ||\n (formatString.includes('d') && (datePart >= 4 || value.length === 2)) ||\n (formatString.includes('y') && datePart >= 1000));\n }\n}\n","import { Injectable } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Global {}\n\nexport abstract class GlobalRef {\n abstract get nativeGlobal(): Global;\n abstract get nativeWindow(): Window;\n}\n\n@Injectable()\nexport class BrowserGlobalRef extends GlobalRef {\n get nativeGlobal(): Global {\n return window as Global;\n }\n get nativeWindow(): Window {\n return window;\n }\n}\nexport class NodeGlobalRef extends GlobalRef {\n get nativeGlobal(): Global {\n throw new Error('global doesn\\'t compile for some reason');\n }\n get nativeWindow(): Window {\n throw new Error('Node does not have a window object');\n }\n}\n","// NG2\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n// App\n\n@Injectable()\nexport class OptionsService {\n constructor() {}\n\n getOptionsConfig(http: HttpClient, field: any, config: { token?: string; restUrl?: string; military?: boolean }): any {\n return {\n field: 'value',\n format: '$label',\n options: (query) => {\n return new Promise((resolve, reject) => {\n if (query && query.length) {\n const exp = new RegExp('^(?:[a-z]+:)?//', 'i');\n let endpoint;\n if (exp.test(field.optionsUrl)) {\n const url = new URL(field.optionsUrl);\n url.searchParams.set('filter', query || '');\n endpoint = url.toString();\n } else {\n // Construct relative url (host will not be used but is required for construction)\n const url = new URL(`http://placeholder.com/${field.optionsUrl}`);\n url.searchParams.set('filter', query || '');\n endpoint = `${url.pathname}${url.search}`;\n }\n http.get(endpoint).subscribe(resolve, reject);\n } else {\n resolve([]);\n }\n });\n },\n };\n }\n}\n","// NG2\nimport { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class Security {\n credentials: string[] = [];\n change: EventEmitter<any> = new EventEmitter();\n\n grant(data: any[] | Object): void {\n const parsed = [];\n if (data instanceof Array) {\n for (const permission of data) {\n parsed.push(permission.replace(/\\s/gi, ''));\n }\n } else if (typeof data === 'object') {\n for (const key in data) {\n if (data[key] instanceof Array) {\n for (const permission of data[key]) {\n parsed.push(`${key}.${permission}`);\n }\n }\n }\n }\n this.credentials = [].concat(this.credentials, parsed);\n this.change.emit(this.credentials);\n }\n\n has(value: any): boolean {\n return this.credentials.indexOf(value) > -1;\n }\n\n revoke(value: any): void {\n const i: number = this.credentials.indexOf(value);\n this.credentials.splice(i, 1);\n this.change.emit(this.credentials);\n }\n\n clear(): void {\n this.credentials = [];\n this.change.emit(this.credentials);\n }\n\n subscribe(fn: any): void {\n this.change.subscribe(fn);\n }\n\n checkRoutes(\n routes: { entities?: any[]; permissions?: any[] | Function; path?: string; label?: string; canDisable?: Boolean }[],\n options: { entityType?: string },\n ): any {\n const filtered = [];\n for (const route of routes) {\n if (route.entities && ~route.entities.indexOf(options.entityType)) {\n if (route.permissions instanceof Function) {\n if (route.permissions(options, this)) {\n filtered.push(route);\n }\n } else if (route.permissions && route.permissions.length) {\n if (route.permissions.every((perm) => this.has(perm))) {\n filtered.push(route);\n }\n } else {\n filtered.push(route);\n }\n }\n }\n\n return filtered;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class LocalStorageService {\n setItem(key: any, value: any): any {\n localStorage.setItem(key, value);\n }\n\n getItem(key: any): any {\n return localStorage.getItem(key);\n }\n\n removeItem(key: any): any {\n localStorage.removeItem(key);\n }\n}\n","// NG2\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class NovoTemplateService {\n templates: any = {\n default: {},\n custom: {},\n };\n constructor() {}\n\n getAll(): any {\n const templates: any = {};\n const customTemplateTypes: string[] = Object.keys(this.templates.custom);\n const defaultTemplateTypes: string[] = Object.keys(this.templates.default);\n defaultTemplateTypes.forEach((type: string) => {\n templates[type] = this.templates.default[type];\n });\n customTemplateTypes.forEach((type: string) => {\n templates[type] = this.templates.custom[type];\n });\n return templates;\n }\n\n addDefault(key: string, template: any): void {\n this.templates.default[key] = template;\n }\n\n addCustom(key: string, template: any): void {\n this.templates.custom[key] = template;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoLabelService"],"mappings":"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"}
|