@wavemaker/app-ng-runtime 11.9.0-next.24953 → 11.9.0-next.24956

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.
Files changed (92) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +2 -2
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/fesm2022/index.mjs +2 -2
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/components/base/bundles/index.umd.js +1 -1
  7. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  8. app-ng-runtime/components/base/fesm2022/index.mjs +1 -1
  9. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  10. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  11. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  12. app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -8
  13. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  14. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
  15. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
  16. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  17. app-ng-runtime/components/basic/default/fesm2022/index.mjs +10 -8
  18. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  19. app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
  20. app-ng-runtime/components/basic/progress/bundles/index.umd.js +4 -4
  21. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +3 -3
  22. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +3 -3
  23. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +4 -4
  24. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  25. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +1 -0
  26. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  27. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +1 -0
  28. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  29. app-ng-runtime/components/basic/search/bundles/index.umd.js +7 -7
  30. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +8 -8
  31. app-ng-runtime/components/basic/search/fesm2022/index.mjs +7 -7
  32. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  33. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  34. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  35. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  36. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  37. app-ng-runtime/components/data/table/bundles/index.umd.js +24 -3
  38. app-ng-runtime/components/data/table/esm2022/table.component.mjs +24 -4
  39. app-ng-runtime/components/data/table/esm2022/table.props.mjs +2 -1
  40. app-ng-runtime/components/data/table/fesm2022/index.mjs +25 -4
  41. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  42. app-ng-runtime/components/data/table/table.component.d.ts +5 -0
  43. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  44. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  45. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  46. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  47. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -4
  48. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -5
  49. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -4
  50. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  51. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +8 -3
  52. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  53. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  54. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +8 -3
  55. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  56. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  57. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  58. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  59. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  60. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  61. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  62. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  63. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  64. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  65. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  66. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  67. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  68. app-ng-runtime/components/input/chips/bundles/index.umd.js +2 -2
  69. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
  70. app-ng-runtime/components/input/chips/fesm2022/index.mjs +2 -2
  71. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  72. app-ng-runtime/components/input/default/bundles/index.umd.js +63 -24
  73. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  74. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +2 -1
  75. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +6 -6
  76. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +50 -13
  77. app-ng-runtime/components/input/default/fesm2022/index.mjs +62 -23
  78. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  79. app-ng-runtime/components/input/default/select/select.component.d.ts +1 -0
  80. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  81. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +127 -95
  82. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +125 -96
  83. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +4 -1
  84. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +127 -95
  85. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  86. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +3 -7
  87. app-ng-runtime/core/bundles/index.umd.js +5 -5
  88. app-ng-runtime/core/esm2022/utils/utils.mjs +2 -3
  89. app-ng-runtime/core/fesm2022/index.mjs +1 -2
  90. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  91. app-ng-runtime/core/utils/utils.d.ts +0 -1
  92. app-ng-runtime/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/chips/src/chips.props.ts","../../../../../projects/components/widgets/input/chips/src/chips.component.html","../../../../../projects/components/widgets/input/chips/src/chips.component.ts","../../../../../projects/components/widgets/input/chips/src/chips.module.ts","../../../../../projects/components/widgets/input/chips/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\nimport { FormWidgetType } from '@wm/core';\n\nexport const chipsProps = new Map(\n [\n ['allowonlyselect', PROP_BOOLEAN],\n ['autofocus', PROP_BOOLEAN],\n ['chipclass', PROP_STRING],\n ['class', PROP_STRING],\n ['compareby', PROP_STRING],\n ['datafield', PROP_STRING],\n ['dataoptions', PROP_ANY],\n ['dataset', {value: 'Option 1, Option 2, Option 3', ...PROP_ANY}],\n ['datasource', PROP_ANY],\n ['datavalue', PROP_ANY],\n ['datavaluesource', PROP_ANY],\n ['dateformat', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['displayexpression', PROP_STRING],\n ['displayfield', PROP_STRING],\n ['displayimagesrc', PROP_STRING],\n ['enablereorder', PROP_BOOLEAN],\n ['groupby', PROP_STRING],\n ['inputposition', {value: 'last', ...PROP_STRING}],\n ['inputwidth', {value: 'default', ...PROP_STRING}],\n ['limit', PROP_NUMBER],\n ['loadingdatamsg', {value: 'Loading items...', ...PROP_STRING}],\n ['match', PROP_STRING],\n ['matchmode', PROP_STRING],\n ['maxsize', PROP_NUMBER],\n ['minchars', {value: 1 , ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['navsearchbar', {value: false, ...PROP_BOOLEAN}],\n ['orderby', PROP_STRING],\n ['placeholder', {value: 'Type here..', ...PROP_STRING}],\n ['query', PROP_STRING],\n ['readonly', PROP_BOOLEAN],\n ['searchkey', PROP_STRING],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showsearchicon', PROP_BOOLEAN],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['type', {value: 'search', ...PROP_STRING}],\n ['debouncetime', {value: 250, ...PROP_NUMBER}],\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-chips',\n chipsProps\n );\n registerFormWidget(\n FormWidgetType.CHIPS,\n new Map(chipsProps)\n );\n};\n\n","<li class=\"chip-item {{chipclass && !bindChipclass ? chipclass : ''}}\" role=\"option\" *ngFor=\"let item of chipsList; let $index = index;\"\n [ngClass]=\"{'active': item.active, 'disabled': disabled}\">\n <a class=\"app-chip\" href=\"javascript:void(0);\" tabindex=\"-1\"\n (click)=\"handleChipClick($event, item)\"\n (keydown.delete)=\"onDelete($event, item, $index)\"\n (keydown.backspace)=\"onBackspace($event, item, $index)\"\n (keydown.arrowleft)=\"onArrowLeft(item, $index)\"\n (keydown.arrowright)=\"onArrowRight(item, $index)\"\n (focus)=\"handleChipFocus($event, item)\"\n (blur)=\"readonly ? 0 : item.active = false\"\n [ngClass]=\"{'chip-duplicate bg-danger': item.isDuplicate, 'chip-picture': item.imgSrc}\">\n <img data-identifier=\"img\" alt=\"Chip Image\" class=\"button-image-icon\" [src]=\"item.imgSrc\" *ngIf=\"item.imgSrc\"/>\n <span class=\"app-chip-title\" [textContent]=\"item.label\" [title]=\"item.label\"></span>\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Clear Button\" class=\"btn btn-transparent\" (click)=\"removeItem($event, item, $index);\" *ngIf=\"!readonly\">\n <i class=\"app-icon wi wi-close\"></i>\n </button>\n </a>\n</li>\n<li class=\"app-chip-search\" [ngClass]=\"{'full-width': inputwidth === 'full'}\">\n <div #search wmSearch class=\"app-chip-input\"\n name=\"app-chip-search\"\n submit.event=\"addItem($event, widget)\"\n beforeservicecall.event=\"invokeOnBeforeServiceCall(inputData)\"\n disabled.bind=\"disabled || readonly || saturate\"\n datafield.bind=\"datafield\"\n allowonlyselect.bind=\"allowonlyselect\"\n searchkey.bind=\"searchkey\"\n orderby.bind=\"orderby\"\n placeholder.bind=\"saturate ? maxSizeReached : placeholder\"\n showsearchicon.bind=\"showsearchicon\"\n tabindex.bind=\"tabindex\"\n minchars.bind=\"minchars\"\n debouncetime.bind=\"debouncetime\"\n matchmode.bind=\"matchmode\"\n groupby.bind=\"groupby\"\n match.bind=\"match\"\n dateformat.bind=\"dateformat\"\n (keydown.enter)=\"stopEvent($event)\"\n (keydown.delete)=\"onTextDelete($event)\"\n (keydown.backspace)=\"onInputClear($event)\"\n (keydown.arrowleft)=\"onArrowLeft()\"\n (keydown.arrowright)=\"onArrowRight()\">\n </div>\n</li>\n","import {\n AfterViewInit,\n Attribute,\n Component,\n Inject,\n Injector,\n OnInit,\n Optional,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n $appDigest,\n $unwatch,\n $watch,\n debounce,\n isAppleProduct,\n isDefined,\n toBoolean\n} from '@wm/core';\nimport { ALLFIELDS, configureDnD, DataSetItem, getConditionalClasses, getUniqObjsByDataField, IWidgetConfig, provideAs, provideAsWidgetRef, styler } from '@wm/components/base';\nimport { DatasetAwareFormComponent } from '@wm/components/input';\nimport { SearchComponent } from '@wm/components/basic/search';\n\nimport { registerProps } from './chips.props';\nimport {\n clone,\n filter,\n find,\n findIndex,\n forEach, isArray,\n isEqual,\n isObject, max, pullAt, reduce,\n slice,\n toString,\n trim\n} from \"lodash-es\";\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-chips',\n hostClass: 'app-chips nav nav-pills list-inline'\n};\n\n@Component({\n selector: '[wmChips]',\n templateUrl: './chips.component.html',\n providers: [\n provideAs(ChipsComponent, NG_VALUE_ACCESSOR, true),\n provideAsWidgetRef(ChipsComponent)\n ]\n})\nexport class ChipsComponent extends DatasetAwareFormComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n public allowonlyselect: boolean;\n public enablereorder: boolean;\n public maxsize: number;\n public inputwidth: any;\n private debouncetime: number;\n\n public chipsList: Array<any> = [];\n private readonly maxSizeReached = 'Max size reached';\n private saturate: boolean;\n private nextItemIndex: number;\n private getTransformedData: (data, itemIndex?) => DataSetItem[];\n private inputposition: string;\n private showsearchicon: boolean;\n\n @ViewChild(SearchComponent, /* TODO: add static flag */ {static: true}) searchComponent: SearchComponent;\n private _datasource: any;\n private _unsubscribeDv = false;\n private searchkey: string;\n private _debounceUpdateQueryModel: any;\n private limit: number;\n private _classExpr: any;\n private minchars: number;\n private matchmode: string;\n\n // getter setter is added to pass the datasource to searchcomponent.\n get datasource () {\n return this._datasource;\n }\n\n set datasource(nv) {\n this._datasource = nv;\n this.searchComponent.datasource = nv;\n this._debounceUpdateQueryModel(this.datavalue || this.toBeProcessedDatavalue);\n }\n\n constructor(\n inj: Injector,\n @Attribute('displayfield.bind') private bindDisplayField,\n @Attribute('displayexpression.bind') private bindDisplayExpr,\n @Attribute('displayimagesrc.bind') private bindDisplayImgSrc,\n @Attribute('datafield.bind') private bindDataField,\n @Attribute('dataset.bind') private bindDataSet,\n @Attribute('chipclass.bind') private bindChipclass,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n\n // set the showsearchicon as false by default.\n if (!isDefined(this.showsearchicon)) {\n this.showsearchicon = false;\n }\n\n this.multiple = true;\n this.nextItemIndex = 0; // default chip index\n\n this._debounceUpdateQueryModel = debounce((val) => {\n this.updateQueryModel(val).then(() => {\n if (this.bindChipclass) {\n forEach(this.chipsList, (item, index) => {\n this.registerChipItemClass(item, index);\n });\n }\n });\n }, 150);\n\n const datasetSubscription = this.dataset$.subscribe(() => {\n this.searchComponent.dataset = this.dataset;\n // clearing the last results when dataset is reassigned\n (this.searchComponent as any)._lastResult = undefined;\n this.nextItemIndex = this.datasetItems.length;\n this._debounceUpdateQueryModel(this.datavalue || this.toBeProcessedDatavalue);\n });\n this.registerDestroyListener(() => datasetSubscription.unsubscribe());\n\n const datavalueSubscription = this.datavalue$.subscribe((val: Array<string> | string) => {\n // update queryModel only when parentRef is available.\n if (!this._unsubscribeDv) {\n this.chipsList = [];\n // if the datafield is ALLFILEDS do not fetch the records\n // update the query model with the values we have\n this._debounceUpdateQueryModel(val);\n }\n });\n this.registerDestroyListener(() => datavalueSubscription.unsubscribe());\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.searchComponent.multiple = true;\n this.searchComponent.binddisplayimagesrc = this.bindDisplayImgSrc;\n this.searchComponent.displayimagesrc = this.displayimagesrc;\n this.searchComponent.binddisplaylabel = this.bindDisplayExpr;\n this.searchComponent.displaylabel = this.displayfield;\n this.searchComponent.datafield = this.bindDataField || this.datafield;\n this.searchComponent.binddataset = this.bindDataSet;\n this.searchComponent.dataset = this.dataset;\n this.searchComponent.searchkey = this.searchkey;\n this.searchComponent.limit = this.limit;\n this.searchComponent.debouncetime = this.debouncetime;\n this.searchComponent.matchmode = this.matchmode;\n\n this.getTransformedData = (val, isCustom) => {\n return this.searchComponent.getTransformedData([val], this.nextItemIndex++, isCustom);\n };\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.enablereorder) {\n this.configureDnD();\n }\n }\n\n /**\n * This method returns the evaluated class expression.\n * @param $index index of the chip\n * @param item chip object containing the key, value, label\n * @returns {any} evaluated class expression value\n */\n private registerChipItemClass(item, $index) {\n if (this.bindChipclass) {\n const watchName = `${this.widgetId}_chipItemClass_${$index}`;\n $unwatch(watchName);\n //[Todo-CSP]: same as list item class\n this.registerDestroyListener($watch(this.bindChipclass, this.viewParent, {item, $index}, (nv, ov) => {\n this.applyItemClass(getConditionalClasses(nv, ov), $index);\n }, watchName));\n }\n }\n\n private applyItemClass(val, index) {\n const chipItem = this.nativeElement.querySelectorAll('.chip-item').item(index);\n $(chipItem).removeClass(val.toRemove).addClass(val.toAdd);\n }\n\n private removeDuplicates() {\n this.chipsList = getUniqObjsByDataField(this.chipsList, this.datafield, this.displayfield || this.displaylabel);\n }\n\n // This method updates the queryModel.\n // default call to get the default data can be done only when defaultQuery is true.\n private updateQueryModel(data: any): Promise<void> {\n const promises = [];\n if (!data) {\n this.chipsList = [];\n return Promise.resolve();\n }\n\n // clone the data as the updations on data will change the datavalue.\n let dataValue = clone(data);\n const prevChipsList = this.chipsList;\n this.chipsList = [];\n\n // update the model when model has items more than maxsize\n if (this.maxsize && dataValue.length > this.maxsize) {\n this._modelByValue = dataValue = slice(dataValue, 0, this.maxsize);\n data = dataValue;\n }\n\n const searchQuery: Array<string> = [];\n\n /**\n * For each value in datavalue,\n * 1. check whether value is in datasetItems, if item is found, addd to the chipsList.\n * 2. else make a default query to the filter and get the record.\n * 3. In step 2, if datavalue is not ALLFIELDS, then make a query. Extract the chipsList from the query response.\n * 4. If there is no response for the value and allowonlyselect is true, remove the value from the datavalue. So that datavalue just contains the valid values.\n * 5. In step 2, if datavalue is ALLFIELDS and value is object, then just prepare the datasetItem from the value.\n * 6. If value is not object and allowonlyselect is false, then create a customModel and replace this value with customModel and prepare datasetItem from this value\n */\n dataValue.forEach((val: any, i: number) => {\n const itemFound = find(this.datasetItems, item => {\n return isObject(item.value) ? isEqual(item.value, val) : toString(item.value) === toString(val);\n });\n\n if (itemFound) {\n this.chipsList.push(itemFound);\n } else if (this.datafield !== ALLFIELDS) {\n searchQuery.push(val);\n } else if (this.datafield === ALLFIELDS) {\n let dataObj, isCustom = false;\n if (!isObject(val)) {\n dataObj = this.createCustomDataModel(val);\n isCustom = true;\n if (dataObj) {\n data.splice(i, 1, dataObj);\n }\n } else {\n // if custom chips is already generated, val will be object as {'dataField_val': 'entered_val'}\n // Hence check this val in previous chipList and assign the iscustom flag\n const prevChipObj = prevChipsList.find(obj => {\n return isEqual(obj.value, val);\n });\n if (prevChipObj) {\n isCustom = prevChipObj.iscustom;\n }\n }\n dataObj = dataObj || val;\n\n const transformedData = this.getTransformedData(dataObj, isCustom);\n const chipObj = transformedData[0];\n if (isCustom) {\n (chipObj as any).iscustom = isCustom;\n }\n this.chipsList.push(chipObj);\n }\n });\n\n // make default query with all the values and if response for the value is not in datavalue then add a custom chip object.\n if (searchQuery.length) {\n promises.push(this.getDefaultModel(searchQuery, this.nextItemIndex)\n .then(response => {\n this.chipsList = this.chipsList.concat(response || []);\n dataValue.forEach((val: any, i: number) => {\n const isExists = find(this.chipsList, (obj) => {\n return obj.value.toString() === val.toString();\n });\n\n if (!isExists) {\n if (this.allowonlyselect) {\n const index = data.indexOf(val);\n if (index > -1) {\n data.splice(index, 1);\n }\n return;\n }\n const transformedData = this.getTransformedData(val, true);\n const chipObj = transformedData[0];\n (chipObj as any).iscustom = true;\n this.chipsList.push(chipObj);\n }\n });\n }));\n }\n\n // default chip data is adding focus on to the search input. Hence this flag helps not to focus.\n this.resetSearchModel(true);\n\n return Promise.all(promises).then(() => {\n this._modelByValue = data;\n this.removeDuplicates();\n this.updateMaxSize();\n $appDigest();\n });\n }\n\n private resetSearchModel(defaultQuery?: boolean) {\n this._unsubscribeDv = true;\n // clear search will empty the query model and gets the data when minchars is 0 (i.e. autocomplete) on focus\n // defaultQuery flag is set when widget is not active. This will only load the autocomplete dropup with minchars as 0 when widget is focused/active\n (this.searchComponent as any).clearSearch(undefined, !this.minchars && !defaultQuery);\n this._unsubscribeDv = false;\n }\n\n // Add the newItem to the list\n private addItem($event: Event, widget?: SearchComponent) {\n const searchComponent = widget;\n let allowAdd;\n let chipObj;\n\n if (searchComponent && isDefined(searchComponent.datavalue) && searchComponent.queryModel !== '') {\n if (!searchComponent.query || !trim(searchComponent.query)) {\n return;\n }\n chipObj = searchComponent.queryModel;\n } else {\n if (this.allowonlyselect) {\n return;\n }\n let dataObj;\n if (this.datafield === ALLFIELDS) {\n if (!isObject(this.searchComponent.query) && trim(this.searchComponent.query)) {\n dataObj = this.createCustomDataModel(this.searchComponent.query);\n // return if the custom chip is empty\n if (!dataObj) {\n this.resetSearchModel();\n return;\n }\n }\n }\n\n const data = dataObj || trim(this.searchComponent.query);\n if (data) {\n const transformedData = this.getTransformedData(data, true);\n chipObj = transformedData[0];\n chipObj.iscustom = true;\n }\n }\n\n if (!isDefined(chipObj) || chipObj === '') {\n return;\n }\n\n allowAdd = this.invokeEventCallback('beforeadd', {$event, newItem: chipObj});\n\n if (isDefined(allowAdd) && !toBoolean(allowAdd)) {\n return;\n }\n\n if (this.isDuplicate(chipObj)) {\n this.resetSearchModel();\n return;\n }\n this.registerChipItemClass(chipObj, this.chipsList.length);\n this.chipsList.push(chipObj);\n\n if (!this.datavalue) {\n this._modelByValue = [chipObj.value];\n } else {\n this._modelByValue = [...this._modelByValue, chipObj.value];\n }\n\n this._unsubscribeDv = true;\n this.invokeOnTouched();\n this.invokeOnChange(this._modelByValue, $event || {}, true);\n\n this.invokeEventCallback('add', {$event, $item: chipObj});\n\n this.updateMaxSize();\n\n // reset input box when item is added.\n this.resetSearchModel();\n\n // stop the event to not to call the submit event on enter press.\n if ($event && (($event as any).key === 'Enter' || ($event as any).keyCode === 13)) {\n this.stopEvent($event);\n }\n }\n\n // Prepare datavalue object from a string(junk) value when datafield is allFields.\n private createCustomDataModel(val: string) {\n const key = this.displayfield || (this.datafield !== ALLFIELDS ? this.datafield : undefined);\n\n if (key) {\n const customObj = {};\n customObj[key] = val;\n return customObj;\n }\n }\n\n // Check if newItem already exists\n private isDuplicate(item: DataSetItem) {\n if (this.datafield === ALLFIELDS) {\n return findIndex(this.chipsList, {value: item.value}) > -1;\n }\n return findIndex(this.chipsList, {key: item.key}) > -1;\n }\n\n // Check if max size is reached\n private updateMaxSize() {\n this.saturate = this.maxsize > 0 && this.chipsList.length === this.maxsize;\n }\n\n // Makes call to searchComponent to filter the dataSource based on the query.\n protected getDefaultModel(query: Array<string> | string, index?: number) {\n this.nextItemIndex++;\n return this.searchComponent.getDataSource(query, true, index)\n .then((response) => {\n // @ts-ignore\n return filter(query, queryVal => {\n find(response, {value: queryVal});\n });\n });\n }\n\n private handleChipClick($event: Event, chip: DataSetItem) {\n if (this.readonly) {\n return;\n }\n ($event.currentTarget as any).focus();\n this.invokeEventCallback('chipclick', {$event, $item: chip});\n }\n\n private handleChipFocus($event: Event, chip: DataSetItem) {\n if (this.readonly) {\n return;\n }\n (chip as any).active = true;\n this.invokeEventCallback('chipselect', {$event, $item: chip});\n }\n\n // To avoid form submit on pressing enter key\n public stopEvent($event: Event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n\n public onTextDelete($event: Event) {\n if (isAppleProduct) {\n this.onInputClear($event);\n }\n }\n\n public onInputClear($event: Event) {\n if (!this.chipsList || !this.chipsList.length || this.searchComponent.query) {\n return;\n }\n this.$element.find('li.chip-item > a.app-chip').last().focus();\n this.stopEvent($event);\n }\n\n private onBackspace($event: Event, $item: DataSetItem, $index: number) {\n if (this.readonly) {\n return;\n }\n this.removeItem($event, $item, $index, true);\n }\n\n private onDelete($event: Event, $item: DataSetItem, $index: number) {\n if (this.readonly) {\n return;\n }\n this.removeItem($event, $item, $index);\n }\n\n public onArrowLeft($item?: DataSetItem, $index?: number) {\n if (this.readonly) {\n return;\n }\n\n // On left arrow click when search input query is empty.\n if (!this.searchComponent.query && !isDefined($index) && !isDefined($item)) {\n this.$element.find('li.chip-item > a.app-chip').last().focus();\n return;\n }\n\n if ($index > 0) {\n this.$element.find('li.chip-item > a.app-chip').get($index - 1).focus();\n } else {\n this.focusSearchBox();\n }\n }\n\n public onArrowRight($item?: DataSetItem, $index?: number) {\n if (this.readonly) {\n return;\n }\n // On right arrow click when search input query is empty.\n if (!this.searchComponent.query && !isDefined($index) && !isDefined($item)) {\n this.$element.find('li.chip-item > a.app-chip').first().focus();\n return;\n }\n\n if ($index < (this.chipsList.length - 1)) {\n this.$element.find('li.chip-item > a.app-chip').get($index + 1).focus();\n } else {\n this.focusSearchBox();\n }\n }\n\n // focus search box.\n private focusSearchBox() {\n this.$element.find('.app-chip-input > input.app-textbox').focus();\n }\n\n // Remove the item from list\n private removeItem($event: Event, item: DataSetItem, index: number, canFocus?: boolean) {\n $event.stopPropagation();\n\n const indexes = isArray(index) ? index : [index];\n const focusIndex = max(indexes);\n\n const items = reduce(indexes, (result, i) => {\n result.push(this.chipsList[i]);\n return result;\n }, []);\n\n // prevent deletion if the before-remove event callback returns false\n const allowRemove = this.invokeEventCallback('beforeremove', {$event, $item: items.length === 1 ? items[0] : items});\n if (isDefined(allowRemove) && !toBoolean(allowRemove)) {\n return;\n }\n\n const prevDatavalue = clone(this.datavalue);\n\n // focus next chip after deletion.\n // if there are no chips in the list focus search box\n setTimeout(() => {\n const chipsLength = this.chipsList.length;\n const $chipsList = this.$element.find('li.chip-item > a.app-chip');\n\n if (!chipsLength || !canFocus) {\n this.focusSearchBox();\n } else if ((chipsLength - 1) < focusIndex) {\n // if focus index is greater than chips length select last chip\n $chipsList.get(chipsLength - 1).focus();\n } else {\n // manually set the succeeding chip as active if there is a chip next to the current chip.\n this.chipsList[focusIndex].active = true;\n $chipsList.get(focusIndex).focus();\n }\n });\n\n const pulledItems = pullAt(this.chipsList, indexes);\n\n pulledItems.forEach(datasetItem => {\n this._modelByValue = filter(this._modelByValue, val => {\n return !(isObject(val) ? isEqual(val, datasetItem.value) : toString(val) === toString(datasetItem.value));\n });\n });\n\n this._unsubscribeDv = false;\n\n this.invokeOnChange(this._modelByValue, $event, true);\n this.invokeEventCallback('change', {$event, newVal: this.datavalue, oldVal: prevDatavalue});\n\n this.updateMaxSize();\n\n this.invokeEventCallback('remove', {$event, $item: items.length === 1 ? items[0] : items});\n }\n\n /**\n * Swaps items in an array if provided with indexes.\n * @param data :- array to be swapped\n * @param newIndex :- new index for the element to be placed\n * @param currentIndex :- the current index of the element.\n */\n private swapElementsInArray(data: Array<any>, newIndex: number, currentIndex: number) {\n const draggedItem = pullAt(data, currentIndex)[0];\n data.splice(newIndex, 0, draggedItem);\n }\n\n /**\n * Cancels the reorder by reseting the elements to the original position.\n */\n private resetReorder() {\n this.$element.removeData('oldIndex');\n }\n\n private invokeOnBeforeServiceCall(inputData) {\n this.invokeEventCallback('beforeservicecall', {inputData});\n }\n\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (eventName === 'remove' || eventName === 'beforeremove' || eventName === 'chipselect'\n || eventName === 'chipclick' || eventName === 'add' || eventName === 'reorder' || eventName === 'change') {\n return;\n }\n\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n\n // Configures the reordable feature in chips widgets.\n private configureDnD() {\n const options = {\n items: '> li:not(.app-chip-search)',\n placeholder: 'chip-placeholder'\n };\n\n configureDnD(this.$element, options, this.onReorderStart.bind(this), this.update.bind(this));\n }\n\n // Triggered on drag start while reordering.\n private onReorderStart(evt: Event, ui: Object) {\n const helper = (ui as any).helper;\n // increasing the width of the dragged item by 1\n helper.width(helper.width() + 1);\n this.$element.data('oldIndex', (ui as any).item.index() - (this.inputposition === 'first' ? 1 : 0));\n }\n\n // updates the chipsList and datavalue on reorder.\n private update($event: Event, ui: Object) {\n let changedItem,\n newIndex,\n oldIndex;\n\n // Get the index of the item at position before drag and after the reorder.\n newIndex = (ui as any).item.index() - (this.inputposition === 'first' ? 1 : 0);\n oldIndex = this.$element.data('oldIndex');\n\n newIndex = this.chipsList.length === newIndex ? newIndex - 1 : newIndex;\n changedItem = {\n oldIndex: oldIndex,\n newIndex: newIndex,\n item: this.chipsList[oldIndex]\n };\n\n if (newIndex === oldIndex) {\n this.resetReorder();\n return;\n }\n changedItem.item = this.chipsList[oldIndex];\n\n const allowReorder = this.invokeEventCallback('beforereorder', {$event, $data: this.chipsList, $changedItem: changedItem});\n\n if (isDefined(allowReorder) && toBoolean(allowReorder) === false) {\n this.resetReorder();\n return;\n }\n\n // modify the chipsList and datavalue after the reorder.\n this.swapElementsInArray(this.chipsList, newIndex, oldIndex);\n this.swapElementsInArray(this._modelByValue, newIndex, oldIndex);\n\n changedItem.item = this.chipsList[newIndex];\n\n this.chipsList = [...this.chipsList];\n\n this.resetReorder();\n this.invokeEventCallback('reorder', {$event, $data: this.chipsList, $changedItem: changedItem});\n }\n\n onPropertyChange(key: string, nv: any, ov: any) {\n if (key === 'tabindex') {\n return;\n }\n if (key === 'dataoptions') {\n (this.searchComponent as any).dataoptions = nv;\n }\n if (key === 'datafield') {\n this.searchComponent.datafield = this.datafield;\n }\n if (key === 'displayfield') {\n this.searchComponent.displaylabel = this.displayfield;\n }\n if (key === 'displayexpression') {\n this.searchComponent.binddisplaylabel = this.binddisplayexpression ? this.binddisplayexpression : this.displayexpression;\n }\n if (key === 'displayimagesrc') {\n this.searchComponent.binddisplayimagesrc = this.binddisplayimagesrc ? this.binddisplayimagesrc : this.displayimagesrc;\n }\n if (key === 'limit') {\n this.searchComponent.limit = this.limit;\n }\n if (key === 'matchmode') {\n this.searchComponent.matchmode = this.matchmode;\n }\n if (key === 'groupby') {\n this.searchComponent.groupby = this.groupby;\n }\n if (key === 'enablereorder') {\n if (this.$element.hasClass('ui-sortable')) {\n this.$element.sortable('option', 'disabled', !nv );\n } else if (nv) {\n this.configureDnD();\n }\n }\n if (key === 'readonly') {\n if (nv) {\n this.$element.addClass('readonly');\n } else {\n this.$element.removeClass('readonly');\n }\n }\n if (key === 'inputposition') {\n const $inputEl = this.$element.find('li.app-chip-search');\n if (nv === 'first') {\n this.$element.prepend($inputEl);\n } else {\n this.$element.append($inputEl);\n }\n }\n if (key === 'autofocus' && nv) {\n // setting the autofocus on the input once after dom is updated\n setTimeout(() => {\n const $chipsList = this.$element.find('.app-chip-input > input.app-textbox');\n if ($chipsList && $chipsList.length) {\n this.focusSearchBox();\n }\n });\n }\n super.onPropertyChange(key, nv, ov);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { SearchModule } from '@wm/components/basic/search';\n\nimport { ChipsComponent } from './chips.component';\n\nconst components = [\n ChipsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n SearchModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class ChipsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/chips/src/chips.props.ts","../../../../../projects/components/widgets/input/chips/src/chips.component.html","../../../../../projects/components/widgets/input/chips/src/chips.component.ts","../../../../../projects/components/widgets/input/chips/src/chips.module.ts","../../../../../projects/components/widgets/input/chips/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\nimport { FormWidgetType } from '@wm/core';\n\nexport const chipsProps = new Map(\n [\n ['allowonlyselect', PROP_BOOLEAN],\n ['autofocus', PROP_BOOLEAN],\n ['chipclass', PROP_STRING],\n ['class', PROP_STRING],\n ['compareby', PROP_STRING],\n ['datafield', PROP_STRING],\n ['dataoptions', PROP_ANY],\n ['dataset', {value: 'Option 1, Option 2, Option 3', ...PROP_ANY}],\n ['datasource', PROP_ANY],\n ['datavalue', PROP_ANY],\n ['datavaluesource', PROP_ANY],\n ['dateformat', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['displayexpression', PROP_STRING],\n ['displayfield', PROP_STRING],\n ['displayimagesrc', PROP_STRING],\n ['enablereorder', PROP_BOOLEAN],\n ['groupby', PROP_STRING],\n ['inputposition', {value: 'last', ...PROP_STRING}],\n ['inputwidth', {value: 'default', ...PROP_STRING}],\n ['limit', PROP_NUMBER],\n ['loadingdatamsg', {value: 'Loading items...', ...PROP_STRING}],\n ['match', PROP_STRING],\n ['matchmode', PROP_STRING],\n ['maxsize', PROP_NUMBER],\n ['minchars', {value: 1 , ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['navsearchbar', {value: false, ...PROP_BOOLEAN}],\n ['orderby', PROP_STRING],\n ['placeholder', {value: 'Type here..', ...PROP_STRING}],\n ['query', PROP_STRING],\n ['readonly', PROP_BOOLEAN],\n ['searchkey', PROP_STRING],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showsearchicon', PROP_BOOLEAN],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['type', {value: 'search', ...PROP_STRING}],\n ['debouncetime', {value: 250, ...PROP_NUMBER}],\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-chips',\n chipsProps\n );\n registerFormWidget(\n FormWidgetType.CHIPS,\n new Map(chipsProps)\n );\n};\n\n","<li class=\"chip-item {{chipclass && !bindChipclass ? chipclass : ''}}\" role=\"option\" *ngFor=\"let item of chipsList; let $index = index;\"\n [ngClass]=\"{'active': item.active, 'disabled': disabled}\">\n <a class=\"app-chip\" tabindex=\"-1\"\n (click)=\"handleChipClick($event, item)\"\n (keydown.delete)=\"onDelete($event, item, $index)\"\n (keydown.backspace)=\"onBackspace($event, item, $index)\"\n (keydown.arrowleft)=\"onArrowLeft(item, $index)\"\n (keydown.arrowright)=\"onArrowRight(item, $index)\"\n (focus)=\"handleChipFocus($event, item)\"\n (blur)=\"readonly ? 0 : item.active = false\"\n [ngClass]=\"{'chip-duplicate bg-danger': item.isDuplicate, 'chip-picture': item.imgSrc}\">\n <img data-identifier=\"img\" alt=\"Chip Image\" class=\"button-image-icon\" [src]=\"item.imgSrc\" *ngIf=\"item.imgSrc\"/>\n <span class=\"app-chip-title\" [textContent]=\"item.label\" [title]=\"item.label\"></span>\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Clear Button\" class=\"btn btn-transparent\" (click)=\"removeItem($event, item, $index);\" *ngIf=\"!readonly\">\n <i class=\"app-icon wi wi-close\"></i>\n </button>\n </a>\n</li>\n<li class=\"app-chip-search\" [ngClass]=\"{'full-width': inputwidth === 'full'}\">\n <div #search wmSearch class=\"app-chip-input\"\n name=\"app-chip-search\"\n submit.event=\"addItem($event, widget)\"\n beforeservicecall.event=\"invokeOnBeforeServiceCall(inputData)\"\n disabled.bind=\"disabled || readonly || saturate\"\n datafield.bind=\"datafield\"\n allowonlyselect.bind=\"allowonlyselect\"\n searchkey.bind=\"searchkey\"\n orderby.bind=\"orderby\"\n placeholder.bind=\"saturate ? maxSizeReached : placeholder\"\n showsearchicon.bind=\"showsearchicon\"\n tabindex.bind=\"tabindex\"\n minchars.bind=\"minchars\"\n debouncetime.bind=\"debouncetime\"\n matchmode.bind=\"matchmode\"\n groupby.bind=\"groupby\"\n match.bind=\"match\"\n dateformat.bind=\"dateformat\"\n (keydown.enter)=\"stopEvent($event)\"\n (keydown.delete)=\"onTextDelete($event)\"\n (keydown.backspace)=\"onInputClear($event)\"\n (keydown.arrowleft)=\"onArrowLeft()\"\n (keydown.arrowright)=\"onArrowRight()\">\n </div>\n</li>\n","import {\n AfterViewInit,\n Attribute,\n Component,\n Inject,\n Injector,\n OnInit,\n Optional,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n $appDigest,\n $unwatch,\n $watch,\n debounce,\n isAppleProduct,\n isDefined,\n toBoolean\n} from '@wm/core';\nimport { ALLFIELDS, configureDnD, DataSetItem, getConditionalClasses, getUniqObjsByDataField, IWidgetConfig, provideAs, provideAsWidgetRef, styler } from '@wm/components/base';\nimport { DatasetAwareFormComponent } from '@wm/components/input';\nimport { SearchComponent } from '@wm/components/basic/search';\n\nimport { registerProps } from './chips.props';\nimport {\n clone,\n filter,\n find,\n findIndex,\n forEach, isArray,\n isEqual,\n isObject, max, pullAt, reduce,\n slice,\n toString,\n trim\n} from \"lodash-es\";\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-chips',\n hostClass: 'app-chips nav nav-pills list-inline'\n};\n\n@Component({\n selector: '[wmChips]',\n templateUrl: './chips.component.html',\n providers: [\n provideAs(ChipsComponent, NG_VALUE_ACCESSOR, true),\n provideAsWidgetRef(ChipsComponent)\n ]\n})\nexport class ChipsComponent extends DatasetAwareFormComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n public allowonlyselect: boolean;\n public enablereorder: boolean;\n public maxsize: number;\n public inputwidth: any;\n private debouncetime: number;\n\n public chipsList: Array<any> = [];\n private readonly maxSizeReached = 'Max size reached';\n private saturate: boolean;\n private nextItemIndex: number;\n private getTransformedData: (data, itemIndex?) => DataSetItem[];\n private inputposition: string;\n private showsearchicon: boolean;\n\n @ViewChild(SearchComponent, /* TODO: add static flag */ {static: true}) searchComponent: SearchComponent;\n private _datasource: any;\n private _unsubscribeDv = false;\n private searchkey: string;\n private _debounceUpdateQueryModel: any;\n private limit: number;\n private _classExpr: any;\n private minchars: number;\n private matchmode: string;\n\n // getter setter is added to pass the datasource to searchcomponent.\n get datasource () {\n return this._datasource;\n }\n\n set datasource(nv) {\n this._datasource = nv;\n this.searchComponent.datasource = nv;\n this._debounceUpdateQueryModel(this.datavalue || this.toBeProcessedDatavalue);\n }\n\n constructor(\n inj: Injector,\n @Attribute('displayfield.bind') private bindDisplayField,\n @Attribute('displayexpression.bind') private bindDisplayExpr,\n @Attribute('displayimagesrc.bind') private bindDisplayImgSrc,\n @Attribute('datafield.bind') private bindDataField,\n @Attribute('dataset.bind') private bindDataSet,\n @Attribute('chipclass.bind') private bindChipclass,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n\n // set the showsearchicon as false by default.\n if (!isDefined(this.showsearchicon)) {\n this.showsearchicon = false;\n }\n\n this.multiple = true;\n this.nextItemIndex = 0; // default chip index\n\n this._debounceUpdateQueryModel = debounce((val) => {\n this.updateQueryModel(val).then(() => {\n if (this.bindChipclass) {\n forEach(this.chipsList, (item, index) => {\n this.registerChipItemClass(item, index);\n });\n }\n });\n }, 150);\n\n const datasetSubscription = this.dataset$.subscribe(() => {\n this.searchComponent.dataset = this.dataset;\n // clearing the last results when dataset is reassigned\n (this.searchComponent as any)._lastResult = undefined;\n this.nextItemIndex = this.datasetItems.length;\n this._debounceUpdateQueryModel(this.datavalue || this.toBeProcessedDatavalue);\n });\n this.registerDestroyListener(() => datasetSubscription.unsubscribe());\n\n const datavalueSubscription = this.datavalue$.subscribe((val: Array<string> | string) => {\n // update queryModel only when parentRef is available.\n if (!this._unsubscribeDv) {\n this.chipsList = [];\n // if the datafield is ALLFILEDS do not fetch the records\n // update the query model with the values we have\n this._debounceUpdateQueryModel(val);\n }\n });\n this.registerDestroyListener(() => datavalueSubscription.unsubscribe());\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.searchComponent.multiple = true;\n this.searchComponent.binddisplayimagesrc = this.bindDisplayImgSrc;\n this.searchComponent.displayimagesrc = this.displayimagesrc;\n this.searchComponent.binddisplaylabel = this.bindDisplayExpr;\n this.searchComponent.displaylabel = this.displayfield;\n this.searchComponent.datafield = this.bindDataField || this.datafield;\n this.searchComponent.binddataset = this.bindDataSet;\n this.searchComponent.dataset = this.dataset;\n this.searchComponent.searchkey = this.searchkey;\n this.searchComponent.limit = this.limit;\n this.searchComponent.debouncetime = this.debouncetime;\n this.searchComponent.matchmode = this.matchmode;\n\n this.getTransformedData = (val, isCustom) => {\n return this.searchComponent.getTransformedData([val], this.nextItemIndex++, isCustom);\n };\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.enablereorder) {\n this.configureDnD();\n }\n }\n\n /**\n * This method returns the evaluated class expression.\n * @param $index index of the chip\n * @param item chip object containing the key, value, label\n * @returns {any} evaluated class expression value\n */\n private registerChipItemClass(item, $index) {\n if (this.bindChipclass) {\n const watchName = `${this.widgetId}_chipItemClass_${$index}`;\n $unwatch(watchName);\n //[Todo-CSP]: same as list item class\n this.registerDestroyListener($watch(this.bindChipclass, this.viewParent, {item, $index}, (nv, ov) => {\n this.applyItemClass(getConditionalClasses(nv, ov), $index);\n }, watchName));\n }\n }\n\n private applyItemClass(val, index) {\n const chipItem = this.nativeElement.querySelectorAll('.chip-item').item(index);\n $(chipItem).removeClass(val.toRemove).addClass(val.toAdd);\n }\n\n private removeDuplicates() {\n this.chipsList = getUniqObjsByDataField(this.chipsList, this.datafield, this.displayfield || this.displaylabel);\n }\n\n // This method updates the queryModel.\n // default call to get the default data can be done only when defaultQuery is true.\n private updateQueryModel(data: any): Promise<void> {\n const promises = [];\n if (!data) {\n this.chipsList = [];\n return Promise.resolve();\n }\n\n // clone the data as the updations on data will change the datavalue.\n let dataValue = clone(data);\n const prevChipsList = this.chipsList;\n this.chipsList = [];\n\n // update the model when model has items more than maxsize\n if (this.maxsize && dataValue.length > this.maxsize) {\n this._modelByValue = dataValue = slice(dataValue, 0, this.maxsize);\n data = dataValue;\n }\n\n const searchQuery: Array<string> = [];\n\n /**\n * For each value in datavalue,\n * 1. check whether value is in datasetItems, if item is found, addd to the chipsList.\n * 2. else make a default query to the filter and get the record.\n * 3. In step 2, if datavalue is not ALLFIELDS, then make a query. Extract the chipsList from the query response.\n * 4. If there is no response for the value and allowonlyselect is true, remove the value from the datavalue. So that datavalue just contains the valid values.\n * 5. In step 2, if datavalue is ALLFIELDS and value is object, then just prepare the datasetItem from the value.\n * 6. If value is not object and allowonlyselect is false, then create a customModel and replace this value with customModel and prepare datasetItem from this value\n */\n dataValue.forEach((val: any, i: number) => {\n const itemFound = find(this.datasetItems, item => {\n return isObject(item.value) ? isEqual(item.value, val) : toString(item.value) === toString(val);\n });\n\n if (itemFound) {\n this.chipsList.push(itemFound);\n } else if (this.datafield !== ALLFIELDS) {\n searchQuery.push(val);\n } else if (this.datafield === ALLFIELDS) {\n let dataObj, isCustom = false;\n if (!isObject(val)) {\n dataObj = this.createCustomDataModel(val);\n isCustom = true;\n if (dataObj) {\n data.splice(i, 1, dataObj);\n }\n } else {\n // if custom chips is already generated, val will be object as {'dataField_val': 'entered_val'}\n // Hence check this val in previous chipList and assign the iscustom flag\n const prevChipObj = prevChipsList.find(obj => {\n return isEqual(obj.value, val);\n });\n if (prevChipObj) {\n isCustom = prevChipObj.iscustom;\n }\n }\n dataObj = dataObj || val;\n\n const transformedData = this.getTransformedData(dataObj, isCustom);\n const chipObj = transformedData[0];\n if (isCustom) {\n (chipObj as any).iscustom = isCustom;\n }\n this.chipsList.push(chipObj);\n }\n });\n\n // make default query with all the values and if response for the value is not in datavalue then add a custom chip object.\n if (searchQuery.length) {\n promises.push(this.getDefaultModel(searchQuery, this.nextItemIndex)\n .then(response => {\n this.chipsList = this.chipsList.concat(response || []);\n dataValue.forEach((val: any, i: number) => {\n const isExists = find(this.chipsList, (obj) => {\n return obj.value.toString() === val.toString();\n });\n\n if (!isExists) {\n if (this.allowonlyselect) {\n const index = data.indexOf(val);\n if (index > -1) {\n data.splice(index, 1);\n }\n return;\n }\n const transformedData = this.getTransformedData(val, true);\n const chipObj = transformedData[0];\n (chipObj as any).iscustom = true;\n this.chipsList.push(chipObj);\n }\n });\n }));\n }\n\n // default chip data is adding focus on to the search input. Hence this flag helps not to focus.\n this.resetSearchModel(true);\n\n return Promise.all(promises).then(() => {\n this._modelByValue = data;\n this.removeDuplicates();\n this.updateMaxSize();\n $appDigest();\n });\n }\n\n private resetSearchModel(defaultQuery?: boolean) {\n this._unsubscribeDv = true;\n // clear search will empty the query model and gets the data when minchars is 0 (i.e. autocomplete) on focus\n // defaultQuery flag is set when widget is not active. This will only load the autocomplete dropup with minchars as 0 when widget is focused/active\n (this.searchComponent as any).clearSearch(undefined, !this.minchars && !defaultQuery);\n this._unsubscribeDv = false;\n }\n\n // Add the newItem to the list\n private addItem($event: Event, widget?: SearchComponent) {\n const searchComponent = widget;\n let allowAdd;\n let chipObj;\n\n if (searchComponent && isDefined(searchComponent.datavalue) && searchComponent.queryModel !== '') {\n if (!searchComponent.query || !trim(searchComponent.query)) {\n return;\n }\n chipObj = searchComponent.queryModel;\n } else {\n if (this.allowonlyselect) {\n return;\n }\n let dataObj;\n if (this.datafield === ALLFIELDS) {\n if (!isObject(this.searchComponent.query) && trim(this.searchComponent.query)) {\n dataObj = this.createCustomDataModel(this.searchComponent.query);\n // return if the custom chip is empty\n if (!dataObj) {\n this.resetSearchModel();\n return;\n }\n }\n }\n\n const data = dataObj || trim(this.searchComponent.query);\n if (data) {\n const transformedData = this.getTransformedData(data, true);\n chipObj = transformedData[0];\n chipObj.iscustom = true;\n }\n }\n\n if (!isDefined(chipObj) || chipObj === '') {\n return;\n }\n\n allowAdd = this.invokeEventCallback('beforeadd', {$event, newItem: chipObj});\n\n if (isDefined(allowAdd) && !toBoolean(allowAdd)) {\n return;\n }\n\n if (this.isDuplicate(chipObj)) {\n this.resetSearchModel();\n return;\n }\n this.registerChipItemClass(chipObj, this.chipsList.length);\n this.chipsList.push(chipObj);\n\n if (!this.datavalue) {\n this._modelByValue = [chipObj.value];\n } else {\n this._modelByValue = [...this._modelByValue, chipObj.value];\n }\n\n this._unsubscribeDv = true;\n this.invokeOnTouched();\n this.invokeOnChange(this._modelByValue, $event || {}, true);\n\n this.invokeEventCallback('add', {$event, $item: chipObj});\n\n this.updateMaxSize();\n\n // reset input box when item is added.\n this.resetSearchModel();\n\n // stop the event to not to call the submit event on enter press.\n if ($event && (($event as any).key === 'Enter' || ($event as any).keyCode === 13)) {\n this.stopEvent($event);\n }\n }\n\n // Prepare datavalue object from a string(junk) value when datafield is allFields.\n private createCustomDataModel(val: string) {\n const key = this.displayfield || (this.datafield !== ALLFIELDS ? this.datafield : undefined);\n\n if (key) {\n const customObj = {};\n customObj[key] = val;\n return customObj;\n }\n }\n\n // Check if newItem already exists\n private isDuplicate(item: DataSetItem) {\n if (this.datafield === ALLFIELDS) {\n return findIndex(this.chipsList, {value: item.value}) > -1;\n }\n return findIndex(this.chipsList, {key: item.key}) > -1;\n }\n\n // Check if max size is reached\n private updateMaxSize() {\n this.saturate = this.maxsize > 0 && this.chipsList.length === this.maxsize;\n }\n\n // Makes call to searchComponent to filter the dataSource based on the query.\n protected getDefaultModel(query: Array<string> | string, index?: number) {\n this.nextItemIndex++;\n return this.searchComponent.getDataSource(query, true, index)\n .then((response) => {\n // @ts-ignore\n return filter(query, queryVal => {\n find(response, {value: queryVal});\n });\n });\n }\n\n private handleChipClick($event: Event, chip: DataSetItem) {\n if (this.readonly) {\n return;\n }\n ($event.currentTarget as any).focus();\n this.invokeEventCallback('chipclick', {$event, $item: chip});\n }\n\n private handleChipFocus($event: Event, chip: DataSetItem) {\n if (this.readonly) {\n return;\n }\n (chip as any).active = true;\n this.invokeEventCallback('chipselect', {$event, $item: chip});\n }\n\n // To avoid form submit on pressing enter key\n public stopEvent($event: Event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n\n public onTextDelete($event: Event) {\n if (isAppleProduct) {\n this.onInputClear($event);\n }\n }\n\n public onInputClear($event: Event) {\n if (!this.chipsList || !this.chipsList.length || this.searchComponent.query) {\n return;\n }\n this.$element.find('li.chip-item > a.app-chip').last().focus();\n this.stopEvent($event);\n }\n\n private onBackspace($event: Event, $item: DataSetItem, $index: number) {\n if (this.readonly) {\n return;\n }\n this.removeItem($event, $item, $index, true);\n }\n\n private onDelete($event: Event, $item: DataSetItem, $index: number) {\n if (this.readonly) {\n return;\n }\n this.removeItem($event, $item, $index);\n }\n\n public onArrowLeft($item?: DataSetItem, $index?: number) {\n if (this.readonly) {\n return;\n }\n\n // On left arrow click when search input query is empty.\n if (!this.searchComponent.query && !isDefined($index) && !isDefined($item)) {\n this.$element.find('li.chip-item > a.app-chip').last().focus();\n return;\n }\n\n if ($index > 0) {\n this.$element.find('li.chip-item > a.app-chip').get($index - 1).focus();\n } else {\n this.focusSearchBox();\n }\n }\n\n public onArrowRight($item?: DataSetItem, $index?: number) {\n if (this.readonly) {\n return;\n }\n // On right arrow click when search input query is empty.\n if (!this.searchComponent.query && !isDefined($index) && !isDefined($item)) {\n this.$element.find('li.chip-item > a.app-chip').first().focus();\n return;\n }\n\n if ($index < (this.chipsList.length - 1)) {\n this.$element.find('li.chip-item > a.app-chip').get($index + 1).focus();\n } else {\n this.focusSearchBox();\n }\n }\n\n // focus search box.\n private focusSearchBox() {\n this.$element.find('.app-chip-input > input.app-textbox').focus();\n }\n\n // Remove the item from list\n private removeItem($event: Event, item: DataSetItem, index: number, canFocus?: boolean) {\n $event.stopPropagation();\n\n const indexes = isArray(index) ? index : [index];\n const focusIndex = max(indexes);\n\n const items = reduce(indexes, (result, i) => {\n result.push(this.chipsList[i]);\n return result;\n }, []);\n\n // prevent deletion if the before-remove event callback returns false\n const allowRemove = this.invokeEventCallback('beforeremove', {$event, $item: items.length === 1 ? items[0] : items});\n if (isDefined(allowRemove) && !toBoolean(allowRemove)) {\n return;\n }\n\n const prevDatavalue = clone(this.datavalue);\n\n // focus next chip after deletion.\n // if there are no chips in the list focus search box\n setTimeout(() => {\n const chipsLength = this.chipsList.length;\n const $chipsList = this.$element.find('li.chip-item > a.app-chip');\n\n if (!chipsLength || !canFocus) {\n this.focusSearchBox();\n } else if ((chipsLength - 1) < focusIndex) {\n // if focus index is greater than chips length select last chip\n $chipsList.get(chipsLength - 1).focus();\n } else {\n // manually set the succeeding chip as active if there is a chip next to the current chip.\n this.chipsList[focusIndex].active = true;\n $chipsList.get(focusIndex).focus();\n }\n });\n\n const pulledItems = pullAt(this.chipsList, indexes);\n\n pulledItems.forEach(datasetItem => {\n this._modelByValue = filter(this._modelByValue, val => {\n return !(isObject(val) ? isEqual(val, datasetItem.value) : toString(val) === toString(datasetItem.value));\n });\n });\n\n this._unsubscribeDv = false;\n\n this.invokeOnChange(this._modelByValue, $event, true);\n this.invokeEventCallback('change', {$event, newVal: this.datavalue, oldVal: prevDatavalue});\n\n this.updateMaxSize();\n\n this.invokeEventCallback('remove', {$event, $item: items.length === 1 ? items[0] : items});\n }\n\n /**\n * Swaps items in an array if provided with indexes.\n * @param data :- array to be swapped\n * @param newIndex :- new index for the element to be placed\n * @param currentIndex :- the current index of the element.\n */\n private swapElementsInArray(data: Array<any>, newIndex: number, currentIndex: number) {\n const draggedItem = pullAt(data, currentIndex)[0];\n data.splice(newIndex, 0, draggedItem);\n }\n\n /**\n * Cancels the reorder by reseting the elements to the original position.\n */\n private resetReorder() {\n this.$element.removeData('oldIndex');\n }\n\n private invokeOnBeforeServiceCall(inputData) {\n this.invokeEventCallback('beforeservicecall', {inputData});\n }\n\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (eventName === 'remove' || eventName === 'beforeremove' || eventName === 'chipselect'\n || eventName === 'chipclick' || eventName === 'add' || eventName === 'reorder' || eventName === 'change') {\n return;\n }\n\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n\n // Configures the reordable feature in chips widgets.\n private configureDnD() {\n const options = {\n items: '> li:not(.app-chip-search)',\n placeholder: 'chip-placeholder'\n };\n\n configureDnD(this.$element, options, this.onReorderStart.bind(this), this.update.bind(this));\n }\n\n // Triggered on drag start while reordering.\n private onReorderStart(evt: Event, ui: Object) {\n const helper = (ui as any).helper;\n // increasing the width of the dragged item by 1\n helper.width(helper.width() + 1);\n this.$element.data('oldIndex', (ui as any).item.index() - (this.inputposition === 'first' ? 1 : 0));\n }\n\n // updates the chipsList and datavalue on reorder.\n private update($event: Event, ui: Object) {\n let changedItem,\n newIndex,\n oldIndex;\n\n // Get the index of the item at position before drag and after the reorder.\n newIndex = (ui as any).item.index() - (this.inputposition === 'first' ? 1 : 0);\n oldIndex = this.$element.data('oldIndex');\n\n newIndex = this.chipsList.length === newIndex ? newIndex - 1 : newIndex;\n changedItem = {\n oldIndex: oldIndex,\n newIndex: newIndex,\n item: this.chipsList[oldIndex]\n };\n\n if (newIndex === oldIndex) {\n this.resetReorder();\n return;\n }\n changedItem.item = this.chipsList[oldIndex];\n\n const allowReorder = this.invokeEventCallback('beforereorder', {$event, $data: this.chipsList, $changedItem: changedItem});\n\n if (isDefined(allowReorder) && toBoolean(allowReorder) === false) {\n this.resetReorder();\n return;\n }\n\n // modify the chipsList and datavalue after the reorder.\n this.swapElementsInArray(this.chipsList, newIndex, oldIndex);\n this.swapElementsInArray(this._modelByValue, newIndex, oldIndex);\n\n changedItem.item = this.chipsList[newIndex];\n\n this.chipsList = [...this.chipsList];\n\n this.resetReorder();\n this.invokeEventCallback('reorder', {$event, $data: this.chipsList, $changedItem: changedItem});\n }\n\n onPropertyChange(key: string, nv: any, ov: any) {\n if (key === 'tabindex') {\n return;\n }\n if (key === 'dataoptions') {\n (this.searchComponent as any).dataoptions = nv;\n }\n if (key === 'datafield') {\n this.searchComponent.datafield = this.datafield;\n }\n if (key === 'displayfield') {\n this.searchComponent.displaylabel = this.displayfield;\n }\n if (key === 'displayexpression') {\n this.searchComponent.binddisplaylabel = this.binddisplayexpression ? this.binddisplayexpression : this.displayexpression;\n }\n if (key === 'displayimagesrc') {\n this.searchComponent.binddisplayimagesrc = this.binddisplayimagesrc ? this.binddisplayimagesrc : this.displayimagesrc;\n }\n if (key === 'limit') {\n this.searchComponent.limit = this.limit;\n }\n if (key === 'matchmode') {\n this.searchComponent.matchmode = this.matchmode;\n }\n if (key === 'groupby') {\n this.searchComponent.groupby = this.groupby;\n }\n if (key === 'enablereorder') {\n if (this.$element.hasClass('ui-sortable')) {\n this.$element.sortable('option', 'disabled', !nv );\n } else if (nv) {\n this.configureDnD();\n }\n }\n if (key === 'readonly') {\n if (nv) {\n this.$element.addClass('readonly');\n } else {\n this.$element.removeClass('readonly');\n }\n }\n if (key === 'inputposition') {\n const $inputEl = this.$element.find('li.app-chip-search');\n if (nv === 'first') {\n this.$element.prepend($inputEl);\n } else {\n this.$element.append($inputEl);\n }\n }\n if (key === 'autofocus' && nv) {\n // setting the autofocus on the input once after dom is updated\n setTimeout(() => {\n const $chipsList = this.$element.find('.app-chip-input > input.app-textbox');\n if ($chipsList && $chipsList.length) {\n this.focusSearchBox();\n }\n });\n }\n super.onPropertyChange(key, nv, ov);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { SearchModule } from '@wm/components/basic/search';\n\nimport { ChipsComponent } from './chips.component';\n\nconst components = [\n ChipsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n SearchModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class ChipsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1255,6 +1255,7 @@
1255
1255
  ['trailingzero', { value: false, ...i2.PROP_BOOLEAN }],
1256
1256
  ['updateon', i2.PROP_STRING],
1257
1257
  ['inputmode', { value: 'natural', ...i2.PROP_STRING }],
1258
+ ['decimalplaces', i2.PROP_NUMBER],
1258
1259
  ['conditionalclass', i2.PROP_ANY],
1259
1260
  ['conditionalstyle', i2.PROP_ANY]
1260
1261
  ]);
@@ -1381,8 +1382,27 @@
1381
1382
  if (this.isDefaultQuery) {
1382
1383
  const isLocalizedNumber = lodashEs.isString(value) && lodashEs.includes(value, this.DECIMAL);
1383
1384
  const parts = isLocalizedNumber ? value.split(this.DECIMAL) : lodashEs.isString(value) && value.split('.');
1384
- this.decimalValue = parts[1] || '';
1385
- value = isLocalizedNumber ? value : this.transformNumber(value);
1385
+ let decimalPlacesAttrVal = this.getAttr('decimalplaces');
1386
+ const decimalplaces = decimalPlacesAttrVal !== '' && decimalPlacesAttrVal !== undefined ? Number(decimalPlacesAttrVal) : NaN;
1387
+ if (this.inputmode === i2.INPUTMODE.NATURAL && !isNaN(decimalplaces)) {
1388
+ if (decimalplaces === 0) {
1389
+ this.decimalValue = '';
1390
+ value = isLocalizedNumber ? parts[0] : this.transformNumber(parts[0]);
1391
+ }
1392
+ if (decimalplaces > 0) {
1393
+ this.decimalValue = parts[1] && parts[1].substring(0, decimalplaces) || '';
1394
+ if (isLocalizedNumber) {
1395
+ value = this.decimalValue.length ? `${parts[0]}${this.DECIMAL}${this.decimalValue}` : parts[0];
1396
+ }
1397
+ else {
1398
+ value = Number.parseFloat(String(value)).toFixed(decimalplaces);
1399
+ }
1400
+ }
1401
+ }
1402
+ else {
1403
+ this.decimalValue = parts[1] || '';
1404
+ value = isLocalizedNumber ? value : this.transformNumber(value);
1405
+ }
1386
1406
  }
1387
1407
  const numberReg = /\d/;
1388
1408
  const strVal = value.toString();
@@ -1431,8 +1451,14 @@
1431
1451
  */
1432
1452
  isValid(val) {
1433
1453
  // id number is infinite then consider it as invalid value
1434
- if (isNaN(val) || !isFinite(val) || (!Number.isInteger(this.step) &&
1435
- this.countDecimals(val) > this.countDecimals(this.step))) {
1454
+ let invalidDecimalPlaces = false;
1455
+ if (this.inputmode === i2.INPUTMODE.NATURAL && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
1456
+ invalidDecimalPlaces = this.countDecimals(val) > this.decimalplaces;
1457
+ }
1458
+ else if (!Number.isInteger(this.step) && this.countDecimals(val) > this.countDecimals(this.step)) {
1459
+ invalidDecimalPlaces = true;
1460
+ }
1461
+ if (isNaN(val) || !isFinite(val) || invalidDecimalPlaces) {
1436
1462
  this.isInvalidNumber = true;
1437
1463
  return false;
1438
1464
  }
@@ -1541,6 +1567,9 @@
1541
1567
  }
1542
1568
  // This function returns the step length set in the studio
1543
1569
  stepLength() {
1570
+ if (this.inputmode === 'INPUTMODE.NATURAL' && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
1571
+ return this.decimalplaces;
1572
+ }
1544
1573
  const stepLen = this.step.toString().split('.');
1545
1574
  if (stepLen.length === 1) {
1546
1575
  return;
@@ -1623,11 +1652,10 @@
1623
1652
  * @returns {number}
1624
1653
  */
1625
1654
  countDecimals(value) {
1626
- if ((value % 1) !== 0) {
1627
- const decimalValue = value.toString().split('.')[1];
1628
- return decimalValue && decimalValue.length;
1629
- }
1630
- return 0;
1655
+ const valueStr = value.toString();
1656
+ const isLocalizedNumber = lodashEs.includes(valueStr, this.DECIMAL);
1657
+ const parts = isLocalizedNumber ? valueStr.split(this.DECIMAL) : valueStr.split('.');
1658
+ return parts[1] ? parts[1].length : 0;
1631
1659
  }
1632
1660
  /**
1633
1661
  * handles the arrow press event. Increases or decreases the number. triggered fom the template
@@ -1712,7 +1740,7 @@
1712
1740
  const validity = new RegExp(`^[\\d\\s-,.e+${this.GROUP}${this.DECIMAL}]$`, 'i');
1713
1741
  const inputValue = $event.target.value;
1714
1742
  // when input mode is financial, do not restrict user on entering the value when step value limit is reached.
1715
- const skipStepValidation = this.inputmode === i2.INPUTMODE.FINANCIAL;
1743
+ this.inputmode === i2.INPUTMODE.FINANCIAL;
1716
1744
  // Validates if user eneters more than 16 digits
1717
1745
  if (inputValue) {
1718
1746
  const parsedVal = parseInt(inputValue.toString().replace(/\D/g, ''));
@@ -1729,13 +1757,23 @@
1729
1757
  }
1730
1758
  // validates entering of decimal values only when user provides decimal limit(i.e step contains decimal values).
1731
1759
  // Restrict user from entering only if the decimal limit is reached and the new digit is entered in decimal place
1732
- if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
1733
- return false;
1734
- }
1760
+ // if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
1761
+ // return false;
1762
+ // }
1735
1763
  // validates if user entered an invalid character.
1736
1764
  if (!validity.test($event.key)) {
1737
1765
  return false;
1738
1766
  }
1767
+ if (this.inputmode === i2.INPUTMODE.NATURAL && !isNaN(this.decimalplaces)) {
1768
+ if (this.decimalplaces === 0 && this.DECIMAL === $event.key) {
1769
+ return false;
1770
+ }
1771
+ const parts = lodashEs.includes(inputValue, this.DECIMAL) ? inputValue.split(this.DECIMAL) : inputValue.split('.');
1772
+ const isCursorPositionAtDecimalPlace = $event.target.selectionStart > parts[0].length;
1773
+ if (this.decimalplaces > 0 && this.countDecimals(inputValue) >= this.decimalplaces && isCursorPositionAtDecimalPlace) {
1774
+ return false;
1775
+ }
1776
+ }
1739
1777
  // comma cannot be entered consecutively
1740
1778
  if (lodashEs.includes(inputValue, ',') && inputValue[inputValue.length - 1] === ',' && $event.key === ',') {
1741
1779
  return false;
@@ -2326,7 +2364,7 @@
2326
2364
  i2.provideAs(SelectComponent, i2$1.NG_VALUE_ACCESSOR, true),
2327
2365
  i2.provideAs(SelectComponent, i2$1.NG_VALIDATORS, true),
2328
2366
  i2.provideAsWidgetRef(SelectComponent)
2329
- ]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 5, vars: 17, consts: [["select", ""], ["focus-target", "", 3, "ngModelChange", "change", "mousedown", "blur", "ngClass", "disabled", "required", "tabindex", "ngModel", "ngModelOptions", "multiple", "autofocus"], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], [3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], [3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
2367
+ ]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 5, vars: 18, consts: [["select", ""], ["focus-target", "", 3, "ngModelChange", "change", "mousedown", "blur", "ngClass", "disabled", "required", "tabindex", "ngModel", "ngModelOptions", "multiple", "autofocus"], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], [3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], [3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
2330
2368
  const _r1 = i0__namespace.ɵɵgetCurrentView();
2331
2369
  i0__namespace.ɵɵelementStart(0, "select", 1, 0);
2332
2370
  i0__namespace.ɵɵtwoWayListener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { i0__namespace.ɵɵrestoreView(_r1); i0__namespace.ɵɵtwoWayBindingSet(ctx.modelByKey, $event) || (ctx.modelByKey = $event); return i0__namespace.ɵɵresetView($event); });
@@ -2335,10 +2373,10 @@
2335
2373
  i0__namespace.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3)(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
2336
2374
  i0__namespace.ɵɵelementEnd();
2337
2375
  } if (rf & 2) {
2338
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(14, _c1$6, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex);
2376
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(15, _c1$6, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex);
2339
2377
  i0__namespace.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
2340
- i0__namespace.ɵɵproperty("ngModelOptions", i0__namespace.ɵɵpureFunction0(16, _c2$4))("multiple", ctx.multiple)("autofocus", ctx.autofocus);
2341
- i0__namespace.ɵɵattribute("name", ctx.name)("aria-label", ctx.arialabel);
2378
+ i0__namespace.ɵɵproperty("ngModelOptions", i0__namespace.ɵɵpureFunction0(17, _c2$4))("multiple", ctx.multiple)("autofocus", ctx.autofocus);
2379
+ i0__namespace.ɵɵattribute("accesskey", ctx.shortcutkey)("name", ctx.name)("aria-label", ctx.arialabel);
2342
2380
  i0__namespace.ɵɵadvance(2);
2343
2381
  i0__namespace.ɵɵproperty("textContent", ctx.placeholder)("hidden", !ctx.placeholder);
2344
2382
  i0__namespace.ɵɵadvance();
@@ -2353,7 +2391,7 @@
2353
2391
  i2.provideAs(SelectComponent, i2$1.NG_VALUE_ACCESSOR, true),
2354
2392
  i2.provideAs(SelectComponent, i2$1.NG_VALIDATORS, true),
2355
2393
  i2.provideAsWidgetRef(SelectComponent)
2356
- ], template: "<!--Updated focus with mousedown event. IOS devices not allow update of option value after opening dropdown-->\n<select #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [ngModelOptions]=\"{standalone: true}\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (mousedown)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </ng-container>\n</select>\n" }]
2394
+ ], template: "<!--Updated focus with mousedown event. IOS devices not allow update of option value after opening dropdown-->\n<select #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [attr.accesskey]=\"shortcutkey\"\n [(ngModel)]=\"modelByKey\"\n [ngModelOptions]=\"{standalone: true}\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (mousedown)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </ng-container>\n</select>\n" }]
2357
2395
  }], () => [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
2358
2396
  type: i0.Inject,
2359
2397
  args: ['EXPLICIT_CONTEXT']
@@ -3227,9 +3265,10 @@
3227
3265
  }
3228
3266
  // For select widget, display placeholder only on focus else remove the text of the option selected.
3229
3267
  checkForSelectPlaceholder() {
3230
- if ($(this.nativeEl).find('select option:selected').text() && !$(this.nativeEl).find('select').is(':focus') &&
3268
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
3269
+ if (selectElPlaceholderOption && selectElPlaceholderOption.textContent && !$(this.nativeEl).find('select').is(':focus') &&
3231
3270
  !$(this.inputEl.closest('[widget-id]')).attr('datavalue')) {
3232
- $(this.nativeEl).find('select option:selected').text('');
3271
+ selectElPlaceholderOption.textContent = '';
3233
3272
  }
3234
3273
  }
3235
3274
  setDefaultValueAnimation() {
@@ -3331,10 +3370,10 @@
3331
3370
  // before placeholder is removed assign it to the placeholder variable
3332
3371
  // check for placeholder in inputel and selectel
3333
3372
  if (this.inputEl) {
3334
- const selectEl = this.inputEl.find('option:first');
3335
- if (this.inputEl.attr('placeholder') || selectEl.text()) {
3336
- if (selectEl.length) {
3337
- selectEl.text('');
3373
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
3374
+ if (this.inputEl.attr('placeholder') || selectElPlaceholderOption) {
3375
+ if (selectElPlaceholderOption) {
3376
+ selectElPlaceholderOption.textContent = '';
3338
3377
  }
3339
3378
  else {
3340
3379
  this.placeholder = this.inputEl.attr('placeholder');