@wavemaker/app-ng-runtime 12.0.0-next.45076 → 12.0.0-next.45080
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/build-task/bundles/index.umd.js +8 -1
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +9 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +8 -1
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +49 -12
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +11 -4
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +51 -11
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +50 -10
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +13 -3
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +14 -4
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +14 -4
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +1 -0
- app-ng-runtime/components/basic/search/bundles/index.umd.js +36 -24
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +33 -24
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +5 -2
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +36 -24
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +3 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +23 -11
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +24 -12
- app-ng-runtime/components/data/form/fesm2022/index.mjs +23 -11
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
- app-ng-runtime/components/input/default/base-form-custom.component.d.ts +2 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +13 -4
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +2 -2
- app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +6 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +3 -1
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +3 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +13 -4
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +6 -6
- app-ng-runtime/core/enums/enums.d.ts +2 -2
- app-ng-runtime/core/esm2022/enums/enums.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +6 -6
- app-ng-runtime/core/fesm2022/index.mjs +6 -6
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +9 -0
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +2 -0
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +10 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs +9 -0
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../projects/components/base/src/widgets/framework/types.ts","../../../../projects/components/base/src/utils/widget-utils.ts","../../../../projects/components/base/src/widgets/framework/styler.ts","../../../../projects/components/base/src/widgets/framework/widget-props.ts","../../../../projects/components/base/src/widgets/common/container/container.props.ts","../../../../projects/components/base/src/widgets/framework/widget-registry.ts","../../../../projects/components/base/src/widgets/framework/widget-id-generator.ts","../../../../projects/components/base/src/widgets/framework/constants.ts","../../../../projects/components/base/src/widgets/framework/property-change-handler.ts","../../../../projects/components/base/src/widgets/framework/widget-proxy-provider.ts","../../../../projects/components/base/src/widgets/common/base/base.component.ts","../../../../projects/components/base/src/widgets/common/base/stylable.component.ts","../../../../projects/components/base/src/widgets/common/redraw/redrawable.directive.ts","../../../../projects/components/base/src/widgets/common/base/base-container.component.ts","../../../../projects/components/base/src/widgets/common/container/container.directive.ts","../../../../projects/components/base/src/pipes/image.pipe.ts","../../../../projects/components/base/src/widgets/common/item-template/item-template.props.ts","../../../../projects/components/base/src/widgets/common/item-template/item-template.directive.ts","../../../../projects/components/base/src/widgets/common/repeat-template/repeat-template.props.ts","../../../../projects/components/base/src/widgets/common/repeat-template/repeat-template.directive.ts","../../../../projects/components/base/src/widgets/common/lazy-load/lazy-load.directive.ts","../../../../projects/components/base/src/widgets/common/message/message.props.ts","../../../../projects/components/base/src/widgets/common/message/message.component.ts","../../../../projects/components/base/src/widgets/common/message/message.component.html","../../../../projects/components/base/src/widgets/common/partial/partial.props.ts","../../../../projects/components/base/src/widgets/common/partial/partial.directive.ts","../../../../projects/components/base/src/widgets/common/partial-param/partial-param.directive.ts","../../../../projects/components/base/src/widgets/common/base/partial-container.directive.ts","../../../../projects/components/base/src/widgets/common/base/custom-widget-container.directive.ts","../../../../projects/components/base/src/directives/show-in-device.directive.ts","../../../../projects/components/base/src/widgets/common/smooth-scroll/smooth-scroll.directive.ts","../../../../projects/components/base/src/widgets/common/base/text-content.directive.ts","../../../../projects/components/base/src/pipes/wm-pipe.ts","../../../../projects/components/base/src/pipes/custom-pipes.ts","../../../../projects/components/base/src/pipes/trust-as.pipe.ts","../../../../projects/components/base/src/widgets/common/dialog/dialog.service.ts","../../../../projects/components/base/src/pipes/sanitize.pipe.ts","../../../../projects/components/base/src/components.module.ts","../../../../projects/components/base/src/utils/data-utils.ts","../../../../projects/components/base/src/utils/form-utils.ts","../../../../projects/components/base/src/utils/live-utils.ts","../../../../projects/components/base/src/widgets/common/base/dataset-aware-nav.component.ts","../../../../projects/components/base/src/widgets/common/base/base-field-validations.ts","../../../../projects/components/base/src/widgets/common/pull-to-refresh/pull-to-refresh.ts","../../../../projects/components/base/src/widgets/framework/deviceview.ts","../../../../projects/components/base/src/index.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { BaseComponent } from '../common/base/base.component';\n\nexport const WidgetConfig = new InjectionToken<IWidgetConfig>('WidgetConfig');\n\nexport interface IWidgetConfig {\n widgetType: string;\n widgetSubType?: string;\n hostClass?: string;\n displayType?: string;\n}\n\nexport interface IRedrawableComponent {\n redraw: Function;\n}\n\nexport type ChangeListener = (key: string, nv: any, ov?: any) => void;\n\nexport abstract class WidgetRef {}\n\nexport abstract class DialogRef<T extends BaseComponent> {\n bsModal: any;\n}\n\nexport const Context = new InjectionToken('Context Provider Reference');\n\nexport interface IDialog {\n open: (initState?: any) => void;\n close: () => void;\n}\n","import {forwardRef} from '@angular/core';\n\nimport {\n $parseExpr,\n checkIsCustomPipeExpression,\n deHyphenate,\n encodeUrl,\n FormWidgetType,\n getClonedObject,\n initCaps,\n isValidWebURL,\n prettifyLabel,\n stringStartsWith\n} from '@wm/core';\nimport {DialogRef, WidgetRef} from '../widgets/framework/types';\nimport {createFocusTrap} from '@wavemaker/focus-trap';\nimport {NavNode} from \"../widgets/common/base/dataset-aware-nav.component\";\nimport {assignWith, forEach, get, includes, isArray, isNull, isObject, isString, join, split, union} from \"lodash-es\";\n\nconst DATASET_WIDGETS = new Set([FormWidgetType.SELECT, FormWidgetType.CHECKBOXSET, FormWidgetType.RADIOSET,\n FormWidgetType.SWITCH, FormWidgetType.AUTOCOMPLETE, FormWidgetType.CHIPS, FormWidgetType.TYPEAHEAD, FormWidgetType.RATING]);\n/**\n * Returns the parsed, updated bound expression\n * if the expression is $[data[$i][firstName]] + '--' + $[lastName] + '--' + $['@ID@']\n * returns __1.firstName + '--' + lastName + '--' + __1['@ID@']\n */\nconst getUpdatedExpr = (expr: string) => {\n let updated = '', ch, next, i, j, matchCh, matchCount, isQuotedStr, subStr, isQuotedStrEvaluated;\n\n expr = expr.replace(/\\$\\[data\\[\\$i\\]/g, '$[__1');\n\n for (i = 0; i < expr.length; i++) {\n ch = expr[i];\n next = expr[i + 1];\n\n /**\n * if the expression starts with $[, check the next(ch) character,\n * if ch is a quote(', \") change the expr to __[\n * if ch is a whiteSpace, remove it\n * else remove $[\n */\n if (ch === '$' && next === '[') {\n matchCount = 1;\n isQuotedStrEvaluated = false;\n isQuotedStr = false;\n\n for (j = i + 2; j < expr.length; j++) {\n\n matchCh = expr[j];\n\n if (matchCh === ' ') {\n continue;\n }\n\n if (!isQuotedStrEvaluated) {\n isQuotedStr = expr[j] === '\"' || expr[j] === '\\'';\n isQuotedStrEvaluated = true;\n }\n\n if (matchCh === '[') {\n matchCount++;\n } else if (matchCh === ']') {\n matchCount--;\n }\n\n if (!matchCount) {\n subStr = expr.substring(i + 2, j);\n if (isQuotedStr) {\n updated += '__1[' + subStr + ']';\n } else {\n updated += subStr;\n }\n\n break;\n }\n }\n i = j;\n } else {\n updated += ch;\n }\n }\n\n return updated;\n};\n\n/**\n * Returns the value for the provided key in the object\n */\nexport const getObjValueByKey = (obj: any, strKey: string) => {\n /* check for the key-string */\n if (strKey) {\n let val;\n /* convert indexes to properties, so as to work for even 'key1[0].child1'*/\n strKey.replace(/\\[(\\w+)\\]/g, '.$1').split('.').forEach(key => {\n // If obj is null, then assign val to null.\n val = (val && val[key]) || (isNull(obj) ? obj : obj[key]);\n });\n return val;\n }\n return obj;\n};\n\n/**\n * returns the display field data for any dataset widgets\n * Based on the bind display expression or display expression or display name,\n * data is extracted and formatted from the passed option object\n * If there is field is specified, field value is obtained from the dataObj.\n * If expression is given, evaluates the expression value.\n * else check for bindExpression, extract the value from the dataObj\n */\nexport const getEvaluatedData = (dataObj: any, options: any, context?: any) => {\n let expressionValue;\n const field = options.field,\n expr = options.expression,\n bindExpr = options.bindExpression;\n\n // if key is bound expression\n if (bindExpr) {\n // remove 'bind:' prefix from the boundExpressionName\n expressionValue = bindExpr.replace('bind:', '');\n\n // For bind expression passing the last argument that the object of dataset item.\n // Note: For parse expression we are sending dataObj with the propery name \"__1\", we used the same propery to send the last argument as dataset item\n if(checkIsCustomPipeExpression(expressionValue)){\n expressionValue = expressionValue+': __1';\n }\n // parse the expressionValue for replacing all the expressions with values in the object\n expressionValue = getUpdatedExpr(expressionValue);\n } else {\n expressionValue = expr ? expr : field;\n }\n\n // Handling field name with special charecters\n // Ex: field = \"f name\"\n if (!bindExpr && !expr) {\n return get(dataObj, field);\n }\n\n return $parseExpr(expressionValue)(context, Object.assign({}, dataObj, {__1: dataObj}));\n};\n\nexport const isActiveNavItem = (link, routeName) => {\n if (!link || !routeName) {\n return false;\n }\n routeName = routeName.indexOf('?') === -1 ? routeName : routeName.substring(0, routeName.indexOf('?'));\n link = link.indexOf('?') === -1 ? link : link.substring(0, link.indexOf('?'));\n const routeRegex = new RegExp('^(#\\/|#)' + routeName + '$');\n return routeRegex.test(link);\n};\n\n/**\n* returns true if the menu has link to the current page.\n* @param nodes\n* @param routeUrl\n*/\nexport const hasLinkToCurrentPage = (nodes: Array<NavNode>, routeUrl) => {\n return nodes.some(node => {\n if (isActiveNavItem(node.link, routeUrl)) {\n return true;\n }\n if (node.children) {\n return hasLinkToCurrentPage(node.children, routeUrl);\n }\n });\n}\n\n/**\n * Returns the orderBy Expression based on the 'sort 'option in pageable object\n * returned by backend\n * @param pageableObj\n * @returns {string}\n */\nexport const getOrderByExpr = pageableObj => {\n pageableObj = pageableObj || [];\n const expressions = [],\n KEY_VAL_SEPARATOR = ' ',\n FIELD_SEPARATOR = ',';\n forEach(pageableObj, obj => {\n if (obj.direction) {\n expressions.push(obj.property + KEY_VAL_SEPARATOR + obj.direction.toLowerCase());\n }\n });\n\n return join(expressions, FIELD_SEPARATOR);\n};\n\nexport const isDataSetWidget = widget => {\n return DATASET_WIDGETS.has(widget);\n};\n\n/*This function returns the url to the image after checking the validity of url*/\nexport const getImageUrl = (urlString, shouldEncode?, defaultUrl?) => {\n /*In studio mode before setting picturesource, check if the studioController is loaded and new picturesource is in 'styles/images/' path or not.\n * When page is refreshed, loader.gif will be loaded first and it will be in 'style/images/'.\n * Prepend 'services/projects/' + $rootScope.project.id + '/web/resources/images/imagelists/' if the image url is just image name in the project root,\n * and if the url pointing to resources/images/ then 'services/projects/' + $rootScope.project.id + '/web/'*/\n if (isValidWebURL(urlString)) {\n return urlString;\n }\n\n // If no value is provided for picturesource assign pictureplaceholder or default-image\n if (!urlString) {\n urlString = defaultUrl || 'resources/images/imagelists/default-image.png';\n }\n\n urlString = shouldEncode ? encodeUrl(urlString) : urlString;\n\n // if the resource to be loaded is inside a prefab\n if (stringStartsWith(urlString, 'services/prefabs')) {\n return urlString;\n }\n\n return urlString;\n};\n\n/*This method returns the url to the backgroundImage*/\nexport const getBackGroundImageUrl = (urlString) => {\n if (urlString === '' || urlString === 'none') {\n return urlString;\n }\n return 'url(' + getImageUrl(urlString) + ')';\n};\n\nexport function provideAs(reference: any, key: any, multi?: boolean) {\n return {\n provide: key,\n useExisting: forwardRef(() => reference),\n multi: multi\n };\n}\n\nexport function provideAsWidgetRef(reference: any) {\n return provideAs(reference, WidgetRef);\n}\n\nexport function provideAsDialogRef(reference: any) {\n return provideAs(reference, DialogRef);\n}\n\nexport const NAVIGATION_TYPE = {\n ADVANCED: 'Advanced',\n BASIC: 'Basic',\n CLASSIC: 'Classic',\n INLINE: 'Inline',\n NONE: 'None',\n ONDEMAND: 'On-Demand',\n PAGER: 'Pager',\n SCROLL: 'Scroll'\n};\n\nexport const INPUTMODE = {\n FINANCIAL: 'financial',\n NATURAL: 'natural'\n};\n\nexport const AUTOCLOSE_TYPE = {\n OUTSIDECLICK: 'outsideClick',\n ALWAYS: 'always',\n DISABLED: 'disabled'\n}\n\nexport const unsupportedStatePersistenceTypes = ['On-Demand', 'Scroll'];\n\nexport const getWatchIdentifier = (...args) => args.join('_');\n\nconst typesMap = {\n number: ['number', 'integer', 'big_integer', 'short', 'float', 'big_decimal', 'double', 'long', 'byte'],\n string: ['string', 'text'],\n character: ['character'],\n date: ['date', 'time', 'timestamp', 'datetime']\n};\nconst modes = {\n number: ['exact', 'notequals', 'lessthan', 'lessthanequal', 'greaterthan', 'greaterthanequal', 'null', 'isnotnull'],\n string: ['anywhereignorecase', 'anywhere', 'startignorecase', 'start', 'endignorecase', 'end', 'exactignorecase', 'exact', 'notequalsignorecase', 'notequals', 'null', 'isnotnull', 'empty', 'isnotempty', 'nullorempty'],\n character: ['exactignorecase', 'exact', 'notequalsignorecase', 'notequals', 'null', 'isnotnull', 'empty', 'isnotempty', 'nullorempty'],\n date: ['exact', 'lessthan', 'lessthanequal', 'greaterthan', 'greaterthanequal', 'null', 'notequals', 'isnotnull']\n};\nconst matchModeTypesMap = {\n boolean: ['exact', 'null', 'isnotnull'],\n clob: [],\n blob: []\n};\nexport const getMatchModeTypesMap = (multiMode?) => {\n if (multiMode) {\n modes.number.push('in', 'notin', 'between');\n modes.date.push('between');\n modes.string.push('in', 'notin');\n modes.character.push('in', 'notin');\n }\n\n forEach(typesMap, (types, primType) => {\n forEach(types, type => {\n matchModeTypesMap[type] = modes[primType];\n });\n });\n // this is used in filter criteria when the user types the column name manually and where we dont know the type of the column\n matchModeTypesMap['default'] = union(modes['number'], modes['string'], modes['character'], modes['date'], modes['date']);\n return matchModeTypesMap;\n};\n\nexport const getMatchModeMsgs = (appLocale) => {\n return {\n start : appLocale.LABEL_STARTS_WITH,\n startignorecase : appLocale.LABEL_STARTS_WITH_IGNORECASE,\n end : appLocale.LABEL_ENDS_WITH,\n endignorecase : appLocale.LABEL_ENDS_WITH_IGNORECASE,\n anywhere : appLocale.LABEL_CONTAINS,\n anywhereignorecase: appLocale.LABEL_CONTAINS_IGNORECASE,\n exact : appLocale.LABEL_IS_EQUAL_TO,\n exactignorecase : appLocale.LABEL_IS_EQUAL_TO_IGNORECASE,\n notequals : appLocale.LABEL_IS_NOT_EQUAL_TO,\n notequalsignorecase: appLocale.LABEL_IS_NOT_EQUAL_TO_IGNORECASE,\n lessthan : appLocale.LABEL_LESS_THAN,\n lessthanequal : appLocale.LABEL_LESS_THAN_OR_EQUALS_TO,\n greaterthan : appLocale.LABEL_GREATER_THAN,\n greaterthanequal : appLocale.LABEL_GREATER_THAN_OR_EQUALS_TO,\n null : appLocale.LABEL_IS_NULL,\n isnotnull : appLocale.LABEL_IS_NOT_NULL,\n empty : appLocale.LABEL_IS_EMPTY,\n isnotempty : appLocale.LABEL_IS_NOT_EMPTY,\n nullorempty : appLocale.LABEL_IS_NULL_OR_EMPTY,\n in : appLocale.LABEL_IN,\n notin : appLocale.LABEL_NOT_IN,\n between : appLocale.LABEL_BETWEEN\n };\n};\n\n// Returns array of classes that are evaluated true for given object or array\nconst getClassesArray = classVal => {\n let classes = [];\n\n if (isArray(classVal)) {\n classVal.forEach(v => {\n classes = classes.concat(getClassesArray(v));\n });\n return classes;\n }\n if (isObject(classVal)) {\n forEach(classVal, (val, key) => {\n if (val) {\n classes = classes.concat(key.split(' '));\n }\n });\n return classes;\n }\n};\n\nexport const getConditionalClasses = (nv, ov?) => {\n let toAdd;\n let toRemove;\n // if the conditional class property has already toAdd and toRemove arrays then take that otherwise build those arrays\n const classToAdd = nv.toAdd || nv;\n const classToRemove = nv.toRemove || ov;\n if (isObject(nv)) {\n toAdd = isArray(classToAdd) ? classToAdd : getClassesArray(classToAdd || []);\n toRemove = classToRemove ? (isArray(classToRemove) ? classToRemove : getClassesArray(classToRemove)) : [];\n } else {\n toAdd = classToAdd ? [classToAdd] : [];\n toRemove = classToRemove ? [classToRemove] : [];\n }\n return {toAdd, toRemove};\n};\n\n/*helper function for prepareFieldDefs*/\nconst pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {\n /*loop over the fields in the dataObject to process them*/\n let modifiedTitle,\n relatedTable,\n relatedField,\n relatedInfo,\n fieldName,\n isRelated;\n if (!options) {\n options = {};\n }\n forEach(dataObject, (value, title) => {\n if (includes(title, '.')) {\n relatedInfo = split(title, '.');\n relatedTable = relatedInfo[0];\n relatedField = relatedInfo[1];\n isRelated = true;\n }\n if (options.noModifyTitle) {\n modifiedTitle = title;\n } else {\n if (isString(title)) {\n modifiedTitle = prettifyLabel(title);\n modifiedTitle = deHyphenate(modifiedTitle);\n modifiedTitle = namePrefix ? initCaps(namePrefix) + ' ' + modifiedTitle : modifiedTitle;\n } else {\n modifiedTitle = title;\n }\n }\n title = namePrefix ? namePrefix + '.' + title : title;\n if (isRelated) {\n // For related columns, shorten the title to last two words\n fieldName = split(modifiedTitle, ' ');\n fieldName = fieldName.length > 1 ? fieldName[fieldName.length - 2] + ' ' + fieldName[fieldName.length - 1] : fieldName[0];\n } else {\n fieldName = modifiedTitle;\n }\n const defObj = options.setBindingField ? {'displayName': fieldName, 'field': title, 'relatedTable': relatedTable, 'relatedField': relatedField || modifiedTitle}\n : {'displayName': fieldName, 'relatedTable': relatedTable, 'relatedField': relatedField || modifiedTitle};\n /*if field is a leaf node, push it in the columnDefs*/\n if (!isObject(value) || (isArray(value) && !value[0])) {\n /*if the column counter has reached upperBound return*/\n if (options.upperBound && options.columnCount === options.upperBound) {\n return;\n }\n columnDefObj.terminals.push(defObj);\n /*increment the column counter*/\n options.columnCount += 1;\n } else {\n /*else field is an object, process it recursively*/\n /* if parent node to be included, include it */\n if (options.columnCount !== options.upperBound) {\n columnDefObj.objects.push(defObj);\n }\n\n /* if field is an array node, process its first child */\n if (isArray(value) && value[0]) {\n pushFieldDef(value[0], columnDefObj, title + '[0]', options);\n } else {\n pushFieldDef(value, columnDefObj, title, options);\n }\n }\n });\n};\n\nconst getMetaDataFromData = (data) => {\n let dataObject;\n if (isArray(data)) {\n if (isObject(data[0])) {\n dataObject = getClonedObject(data[0]);\n /*Loop over the object to find out any null values. If any null values are present in the first row, check and assign the values from other row.\n * As column generation is dependent on data, for related fields if first row value is null, columns are not generated.\n * To prevent this, check the data in other rows and generate the columns. New keys from others rows are also added*/\n forEach(data, (row, index) => {\n if ((index + 1) >= 10) { // Limit the data search to first 10 records\n return false;\n }\n assignWith(dataObject, row, (objValue, srcValue) => {\n return (objValue === null || objValue === undefined) ? srcValue : objValue;\n });\n });\n } else {\n dataObject = data[0];\n }\n } else {\n dataObject = data;\n }\n return dataObject;\n};\n\nexport const prepareFieldDefs = (data, options?) => {\n let dataObject;\n const columnDef = {\n 'objects' : [],\n 'terminals' : []\n };\n /*if no data provided, initialize default column definitions*/\n if (!data) {\n data = [];\n }\n if (!options) {\n options = {};\n }\n options.setBindingField = true;\n options.columnCount = 0;\n dataObject = getMetaDataFromData(data);\n /*first of the many data objects from grid data*/\n pushFieldDef(dataObject, columnDef, '', options);\n if (!options || (options && !options.filter)) {\n return columnDef.terminals;\n }\n switch (options.filter) {\n case 'all':\n return columnDef;\n case 'objects':\n return columnDef.objects;\n case 'terminals':\n return columnDef.terminals;\n }\n return columnDef;\n};\n\n\n/**\n * To get container target element to append the list for search and datepicker panel when field present in dialog\n */\nexport const getContainerTargetClass = (element) => {\n return '.wm-app';\n\n // Below code is not working when we have nested dialogs.\n // Nested dialogs case we will have multiple '.modal-content' classes on DOM due to that container positions is not working as expected.\n // Below code to fix the issue ==> WMS-18751\n // As regression we got ==> WMS-19835\n\n // if (element.closest('.modal-dialog')) {\n // return '.modal-content';\n // } else {\n // return 'body';\n // }\n\n}\n\n/**\n * To extract the Variable Name from a Widget's binddatasource attribute\n */\nexport const extractDataSourceName = (bindDataSource) => {\n if (!bindDataSource) {\n return;\n }\n let dataSourceName;\n const parts = bindDataSource.split('.');\n if (parts.length > 1 && parts[0] === 'Variables') {\n dataSourceName = parts[1];\n }\n return dataSourceName;\n}\n\nexport const setFocusTrap = (container, allowOutsideClick, setReturnFocusElement?) => {\n return createFocusTrap(container, {\n onActivate: () => container.classList.add('is-active'),\n onDeactivate: () => container.classList.remove('is-active'),\n allowOutsideClick: allowOutsideClick,\n setReturnFocus: setReturnFocusElement,\n });\n}\n\n/**\n * Gets keyboard focusable elements within a specified element\n * @param element {HTMLElement}\n * @returns {Array}\n */\nexport const getKeyboardFocusableElements = (element: HTMLElement) => {\n const elementNodeList = element.querySelectorAll('a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable]');\n const elements = Array.from(elementNodeList);\n return elements.filter(el => {\n return (!el.hasAttribute('disabled') && !el.hasAttribute('hidden')\n && (!el.hasAttribute('tabindex') || (el.hasAttribute('tabindex') && !el.getAttribute(\"tabindex\").startsWith('-'))));\n });\n}\n","import { setCSS } from '@wm/core';\n\nimport { getBackGroundImageUrl } from '../../utils/widget-utils';\nimport { StylableComponent } from '../common/base/stylable.component';\n\nexport enum APPLY_STYLES_TYPE {\n CONTAINER,\n SCROLLABLE_CONTAINER,\n INNER_SHELL,\n SHELL\n}\n\nexport const propNameCSSKeyMap = {\n 'backgroundattachment': 'backgroundAttachment',\n 'backgroundcolor': 'backgroundColor',\n 'backgroundgradient': 'backgroundGradient',\n 'backgroundimage': 'backgroundImage',\n 'backgroundposition': 'backgroundPosition',\n 'backgroundrepeat': 'backgroundRepeat',\n 'backgroundsize': 'backgroundSize',\n 'bordercolor': 'borderColor',\n 'borderradius': 'borderRadius',\n 'borderstyle': 'borderStyle',\n 'borderwidth': 'borderWidth',\n 'borderbottomwidth': 'borderBottomWidth',\n 'borderleftwidth': 'borderLeftWidth',\n 'borderrightwidth': 'borderRightWidth',\n 'bordertopwidth': 'borderTopWidth',\n 'color': 'color',\n 'cursor': 'cursor',\n 'display': 'display',\n 'fontsize': 'fontSize',\n 'fontfamily': 'fontFamily',\n 'fontstyle': 'fontStyle',\n 'fontunit': 'fontunit',\n 'fontvariant': 'fontVariant',\n 'fontweight': 'fontWeight',\n 'height': 'height',\n 'horizontalalign': 'textAlign',\n 'lineheight': 'lineHeight',\n 'margin': 'margin',\n 'marginbottom': 'marginBottom',\n 'marginleft': 'marginLeft',\n 'marginright': 'marginRight',\n 'margintop': 'marginTop',\n 'opacity': 'opacity',\n 'overflow': 'overflow',\n 'padding': 'padding',\n 'paddingbottom': 'paddingBottom',\n 'paddingleft': 'paddingLeft',\n 'paddingright': 'paddingRight',\n 'paddingtop': 'paddingTop',\n 'picturesource': 'backgroundImage',\n 'textalign': 'textAlign',\n 'textdecoration': 'textDecoration',\n 'verticalalign': 'verticalAlign',\n 'visibility': 'visibility',\n 'whitespace': 'whiteSpace',\n 'width': 'width',\n 'wordbreak': 'wordbreak',\n 'zindex': 'zIndex'\n};\n\nexport const isStyle = key => !!propNameCSSKeyMap[key];\n\nconst MAP_SHELL_TYPE_IGNORE_LIST = {\n height: true,\n overflow: true,\n padding: true,\n paddingbottom: true,\n paddingleft: true,\n paddingright: true,\n paddingtop: true\n};\n\nconst MAP_CONTAINER_TYPE_IGNORE_LIST = {\n textalign: true\n};\n\nconst MAP_SCROLLABLE_CONTAINER_TYPE_IGNORE_LIST = {\n textalign: true,\n width: true\n};\n\n\nexport function styler($node: HTMLElement, component: StylableComponent, type?: APPLY_STYLES_TYPE, skipList?: Array<string>) {\n // apply init styles;\n const skipListMap = Object.create(null);\n if (skipList) {\n skipList.forEach(k => skipListMap[k] = true);\n }\n\n component.registerStyleChangeListener((key, nv) => {\n\n if (skipListMap[key]) {\n return;\n }\n\n // if the type is `shell` and the key is in the SHELL_TYPE_IGNORE_LIST, return\n if (type === APPLY_STYLES_TYPE.SHELL && MAP_SHELL_TYPE_IGNORE_LIST[key]) {\n return;\n }\n\n // if the type is `inner-shell` and the key is NOT in the SHELL_TYPE_IGNORE_LIST, return\n if (type === APPLY_STYLES_TYPE.INNER_SHELL) {\n if (!MAP_SHELL_TYPE_IGNORE_LIST[key]) {\n return;\n }\n if (key === 'height') {\n setCSS($node, 'overflow', nv ? 'auto' : '');\n }\n }\n\n // if the type is `container` and the key is in the CONTAINER_TYPE_IGNORE_LIST, return\n if (type === APPLY_STYLES_TYPE.CONTAINER && MAP_CONTAINER_TYPE_IGNORE_LIST[key]) {\n return;\n }\n\n if (type === APPLY_STYLES_TYPE.SCROLLABLE_CONTAINER) {\n if (MAP_SCROLLABLE_CONTAINER_TYPE_IGNORE_LIST[key]) {\n return;\n }\n\n if (key === 'height') {\n setCSS($node, 'overflow', nv ? 'auto' : '');\n }\n }\n\n if (key === 'fontsize' || key === 'fontunit') {\n setCSS($node, 'fontSize', component.fontsize === '' ? '' : component.fontsize + (component.fontunit || 'px'));\n } else if (key === 'backgroundimage') {\n setCSS($node, 'backgroundImage', component.picturesource || getBackGroundImageUrl(nv));\n } else if (propNameCSSKeyMap[key]) {\n setCSS($node, propNameCSSKeyMap[key], nv);\n }\n });\n}\n","import { FormWidgetType } from '@wm/core';\n\ndeclare const window;\nconst formFieldPrefix = 'wm-form-field-';\n// map of widgetSubType vs WidgetProps\nconst widgetProps = (() => {\n const props = new Map<string, Map<string, any>>();\n for (const key in FormWidgetType) {\n props.set(formFieldPrefix + FormWidgetType[key], new Map<string, any>());\n }\n return props;\n})();\n\n// returns the widgetPropsMap associated with the given identifier\nexport const getWidgetPropsByType = (identifier: string): Map<string, any> => widgetProps.get(identifier);\n\n// register the widgetProps with the given identifier\nexport const register = (identifier: string, props: Map<string, any>) => {\n widgetProps.set(identifier, props);\n window.WM_LOADED_COMPONENTS = [...window.WM_LOADED_COMPONENTS || [], identifier ];\n};\n\nexport const registerFormWidget = (identifier: string, props: Map<string, any>) => {\n const widgetName = formFieldPrefix + identifier;\n const existingProps = widgetProps.get(widgetName);\n if (existingProps) {\n props.forEach((v: any, k) => existingProps.set(k, v));\n }\n};\n\nexport enum PROP_TYPE {\n BOOLEAN = 1,\n NUMBER,\n STRING\n}\n\nexport const PROP_STRING: any = {type: PROP_TYPE.STRING};\nexport const PROP_NUMBER: any = {type: PROP_TYPE.NUMBER};\nexport const PROP_BOOLEAN: any = {type: PROP_TYPE.BOOLEAN};\nexport const PROP_ANY: any = {arrayType: true};\n","import { PROP_ANY, PROP_BOOLEAN, PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-container',\n new Map(\n [\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['conditionalclass', PROP_ANY],\n ['conditionalstyle', PROP_ANY],\n ['content', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ]\n )\n );\n};\n","import { isDefined } from '@wm/core';\n\n/**\n * Widget Registry\n */\nconst registryById = new Map<string, any>();\n\n/**\n * returns the widget by the given widgetId\n */\nexport const getById = (widgetId: string) => registryById.get(widgetId);\n\n\n/**\n * Registers the Widget with the given id and name\n * Makes the Widget available with the viewParent\n * returns unRegister method\n */\nexport const register = (widget: any, viewParent: any, widgetId: string, name?: string): () => void => {\n let registered = false;\n registryById.set(widgetId, widget);\n if (name) {\n if (isDefined(viewParent.Widgets)) {\n registered = true;\n viewParent.Widgets[name] = widget;\n }\n }\n\n // Unregister method.\n return () => {\n registryById.delete(widgetId);\n if (registered) {\n viewParent.Widgets[name] = undefined;\n }\n };\n};\n\n/**\n * Deregisters the oldname in widgets registry and sets new name\n */\nexport const renameWidget = (viewParent: any, widget: any, nv: string, ov?: string) => {\n if (!isDefined(viewParent.Widgets)) {\n return;\n }\n if (ov) {\n viewParent.Widgets[ov] = undefined;\n }\n if (nv) {\n viewParent.Widgets[nv] = widget;\n }\n};\n","import { IDGenerator } from '@wm/core';\n\nexport const widgetIdGenerator = new IDGenerator('widget-id');\n","\nexport const EVENTS_MAP = new Map<string, string>([\n // ['enterkeypress', 'keypress.enter']\n ['tap', 'click']\n]);\n\n\n// TODO: Implement touch events for the mobile\n\nexport const DISPLAY_TYPE = {\n BLOCK: 'block',\n INLINE_BLOCK: 'inline-block',\n INLINE: 'inline'\n};\n\n// set of boolean attrs\nconst BOOLEAN_ATTRS = new Set([\n 'readonly', 'autofocus', 'disabled', 'startchecked', 'multiple',\n 'selected', 'required', 'controls', 'autoplay', 'loop', 'muted', 'show'\n]);\n\n/**\n * Returns true if the provided key is a boolean attribute\n * @param {string} key\n * @returns {boolean}\n */\nexport const isBooleanAttr = (key: string): boolean => BOOLEAN_ATTRS.has(key);\n\nconst DIMENSION_PROPS = new Set([\n 'width',\n 'height',\n 'iconheight',\n 'iconwidth',\n 'popoverwidth',\n 'popoverheight',\n 'imagewidth',\n 'imageheight'\n]);\n\nexport const isDimensionProp = (key: string): boolean => DIMENSION_PROPS.has(key);\n\nexport const DEBOUNCE_TIMES = {\n PAGINATION_DEBOUNCE_TIME : 250\n};\n","import { $appDigest, $unwatch, isChangeFromWatch, isObject, resetChangeFromWatch, toBoolean, toDimension } from '@wm/core';\n\nimport { BaseComponent } from '../common/base/base.component';\nimport { getWidgetPropsByType, PROP_TYPE } from './widget-props';\nimport { isStyle } from './styler';\nimport { getConditionalClasses, getWatchIdentifier } from '../../utils/widget-utils';\nimport { isBooleanAttr, isDimensionProp } from './constants';\nimport {startsWith} from \"lodash-es\";\n\n/**\n * Returns the parsed value based on the provided type\n * if the type is PROP_TYPE.NUMBER returns a number/NaN\n * if the type is PROP_BOOLEAN returns true/false\n * else returns the same value without any type conversion\n *\n * @param {string} key\n * @param value\n * @param {PROP_TYPE} type\n * @returns {any}\n */\nconst parseValue = (key: string, value: any, type: PROP_TYPE): any => {\n if (type === PROP_TYPE.BOOLEAN) {\n return toBoolean(value, isBooleanAttr(key) && key);\n }\n\n if (type === PROP_TYPE.NUMBER) {\n return +value;\n }\n\n return value;\n};\n\n\n/**\n * Whenever a property on a component changes through a proxy this method will be triggered\n * If the new value is not from a watch, the existing watch on that particular property will be removed\n * This method invokes the defaultPropertyChange handler where the common widget properties like name, class are handled\n * Notifies the component about the style/property change\n */\nexport const globalPropertyChangeHandler = (component: BaseComponent, key: string, nv: any) => {\n const widgetId = component.widgetId;\n const ov = component[key];\n\n // if the change is not from the bound watch, remove the existing watch\n if (!isChangeFromWatch()) {\n $unwatch(getWatchIdentifier(widgetId, key));\n }\n\n resetChangeFromWatch();\n\n const widgetProps = getWidgetPropsByType(component.getWidgetSubType());\n const propInfo = widgetProps.get(key);\n if (propInfo) {\n const type = propInfo.type;\n if (type) {\n nv = parseValue(key, nv, type);\n }\n }\n\n // Set the value in the component and trigger appDigest when there is a change in the value\n if (nv !== ov || isObject(nv) || isObject(ov)) {\n\n if (isDimensionProp(key)) {\n nv = toDimension(nv);\n } else if (startsWith(nv, 'resources/')) {\n const ref: any = component;\n if (ref._parentPrefab_ === undefined) {\n ref._parentPrefab_ = component.$element.parent().closest('[prefabname][prefabname!=\"__self__\"]').attr('prefabname') || '';\n }\n if (ref._parentPrefab_) {\n nv = `./app/prefabs/${ref._parentPrefab_}/${nv}`;\n } else if(propInfo && nv != propInfo.value) {\n nv = './' + nv;\n }\n }\n\n component[key] = nv;\n\n if (isStyle(key)) {\n component.notifyStyleChange(key, nv, ov);\n } else {\n\n if (key === 'conditionalclass') {\n nv = getConditionalClasses(nv, ov);\n }\n\n if (propInfo) {\n component.notifyPropertyChange(key, nv, ov);\n }\n }\n\n $appDigest();\n }\n};\n","/**\n * Proxy Provider - Creates a JS proxy for the given object\n */\nimport { propNameCSSKeyMap } from './styler';\nimport { globalPropertyChangeHandler } from './property-change-handler';\nimport { BaseComponent } from '../common/base/base.component';\nimport {isFunction, startsWith} from \"lodash-es\";\n\n/**\n * proxy handler for the components\n */\nexport const proxyHandler = {\n set: (target: BaseComponent, key: string, value: any): boolean => {\n globalPropertyChangeHandler(target, key, value);\n return true;\n },\n get: (target: BaseComponent, key: string): any => {\n const v = target[key];\n if (isFunction(v)) { // bind the proper context for the methods\n return v.bind(target);\n }\n return v;\n }\n};\n\nconst $RAF = window.requestAnimationFrame;\nconst $RAFQueue = [];\n\nconst invokeLater = fn => {\n if (!$RAFQueue.length) {\n $RAF(() => {\n $RAFQueue.forEach(f => f());\n $RAFQueue.length = 0;\n });\n }\n $RAFQueue.push(fn);\n};\n\nexport class WidgetProxyProvider {\n public static create(instance: BaseComponent, widgetSubType: string, propsByWidgetSubType: Map<string, any>) {\n // If the native Proxy is supported\n if ((window as any).Proxy) {\n return new Proxy(instance, proxyHandler);\n } else {\n\n // If the native Proxy is not supported, IE11\n const widget = Object.create(instance);\n\n // bind proper context for the methods\n invokeLater(() => {\n for (const key in instance) {\n if (isFunction(instance[key]) && key !== 'constructor' && key !== 'super' && !startsWith(key, 'ng')) {\n instance[key] = instance[key].bind(instance);\n }\n }\n });\n\n // define setters and getters for styles\n Object.keys(propNameCSSKeyMap)\n .forEach(key => {\n Object.defineProperty(widget, key, {\n get: () => instance[key],\n set: nv => globalPropertyChangeHandler(instance, key, nv)\n });\n });\n\n // define the setters and getters for Props\n if (propsByWidgetSubType) {\n propsByWidgetSubType\n .forEach((value, key) => {\n Object.defineProperty(widget, key, {\n get: () => instance[key],\n set: nv => globalPropertyChangeHandler(instance, key, nv)\n });\n });\n }\n\n return widget;\n }\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ElementRef,\n Inject,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n ViewContainerRef\n} from '@angular/core';\nimport {EventManager} from '@angular/platform-browser';\n\nimport {ReplaySubject, Subject} from 'rxjs';\n\nimport {\n $invokeWatchers,\n $parseEvent,\n $unwatch,\n $watch,\n addClass,\n App,\n findParent,\n isDefined,\n isMobileApp,\n removeAttr,\n removeClass,\n setAttr,\n setCSS,\n setCSSFromObj,\n switchClass\n} from '@wm/core';\n\nimport {getWidgetPropsByType} from '../../framework/widget-props';\nimport {isStyle} from '../../framework/styler';\nimport {register, renameWidget} from '../../framework/widget-registry';\nimport {ChangeListener, Context, IWidgetConfig, WidgetConfig} from '../../framework/types';\nimport {widgetIdGenerator} from '../../framework/widget-id-generator';\nimport {DISPLAY_TYPE, EVENTS_MAP} from '../../framework/constants';\nimport {WidgetProxyProvider} from '../../framework/widget-proxy-provider';\nimport {getWatchIdentifier} from '../../../utils/widget-utils';\nimport {camelCase, extend, forEach, isArray, isObject, join, map} from \"lodash-es\";\n\ndeclare const $;\n\n// Gets list of classes to add and remove and applies on the $el\nconst updateClasses = (toAdd, toRemove, el) => {\n if (toRemove && toRemove.length) {\n removeClass(el, join(toRemove, ' '));\n }\n if (toAdd && toAdd.length) {\n addClass(el, join(toAdd, ' '));\n }\n};\n\n// To add and remove styles on the $el\nconst updateStyles = (nv, ov, el) => {\n if (ov && isObject(ov)) {\n const keys = Object.keys(ov || {});\n keys.forEach(function(key) {\n setCSS(el, key, '');\n });\n }\n if (nv && isObject(nv)) {\n setCSSFromObj(el, nv);\n }\n\n};\n\ninterface Child {\n widget: any,\n nativeElement: any\n}\n\n@Injectable()\nexport abstract class BaseComponent implements OnDestroy, OnInit, AfterViewInit, AfterContentInit {\n\n /**\n * unique identifier for the widget\n */\n public readonly widgetId: any;\n\n public isDestroyed: boolean;\n\n public isAttached = false;\n\n /**\n * jQuery nativeElement reference of the component root\n */\n public get $element() {\n return $(this.nativeElement);\n }\n\n /**\n * DOM node reference of the component root\n */\n public readonly nativeElement: HTMLElement;\n\n /**\n * Type of the component\n */\n protected readonly widgetType: string;\n\n /**\n * Most of the cases it is same as widgetType\n * for specific widgets like charts widgetType can be wm-chart where as the subtype can be wm-bar-chart\n */\n protected readonly widgetSubType: string;\n\n /**\n * Proxy for the component instance.\n */\n protected widget: any;\n\n /**\n * View parent component\n * eg, Page, Partial, Prefab\n */\n protected readonly viewParent: any;\n\n /**\n * EventManger to add/remove events\n */\n protected readonly eventManager: EventManager;\n\n /**\n * App Locale\n */\n public readonly appLocale: any;\n\n /**\n * Style change subject and observable\n */\n private readonly styleChange = new ReplaySubject();\n\n /**\n * Property change subject and observable\n */\n private readonly propertyChange = new Subject();\n\n /**\n * On Ready State change subject and observable\n */\n private readonly readyState = new Subject();\n\n /**\n * Component destroy subject and observable\n */\n private readonly destroy = new Subject();\n\n /**\n * Map of event handler callbacks\n */\n private eventHandlers = new Map<string, {callback: Function, locals: any}>();\n\n /**\n * context of the widget\n * when the widget is preset inside a repeater this context will have the repeater related properties\n */\n public context: any;\n\n /**\n * Initial state of the widget.\n * Will be undefined once the initial properties are set on to the component\n */\n private initState: Map<string, any>;\n\n /**\n * Internal flag to determine whether to wait for the widget initialization or not\n * If the initPromise is provided in the construction wait till the promise is resolved\n * If the initPromise is not provided proceed with the initialization, which is the default behavior.\n */\n private readonly delayedInit: boolean;\n\n /**\n * Display type of the component. eg, block(Default), inline-block, inline etc\n */\n private readonly displayType: string;\n\n /**\n * Holds the event registration functions.\n * these functions needs to be executed after onViewInit\n */\n private toBeSetupEventsQueue: Array<Function> = [];\n\n public __cloneable__ = false;\n\n public widgetProps: Map<string, any>;\n\n private $attrs = new Map<string, string>();\n\n private isMuted = false;\n\n public viewContainerRef: ViewContainerRef;\n public viewParentApp: App;\n /**\n * To avoid re-rendering of widget, passing unique id as contextKey to createCustomInjector\n * (for List, Dynamic Tabs, Accordion, Nav, Carousel)\n */\n public trackId: string;\n\n protected constructor(\n protected inj: Injector,\n @Inject(WidgetConfig) config: IWidgetConfig,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext?: any,\n initPromise?: Promise<any> // Promise on which the initialization has to wait\n ) {\n const elementRef = inj.get(ElementRef);\n this.nativeElement = elementRef.nativeElement;\n //making the code compatible in both the JIT and AOT modes\n this.viewParentApp = inj ? inj.get(App) : inject(App);\n this.widgetType = config.widgetType;\n this.widgetSubType = config.widgetSubType || config.widgetType;\n this.viewContainerRef = inj.get(ViewContainerRef);\n // this.viewParent = (inj as any).view.component;\n // this.viewParent = (this.viewContainerRef as any).parentInjector._lView[8];\n // this.viewParent = _viewParent || (this.viewContainerRef as any).parentInjector._lView[8];\n // https://github.com/angular/angular/blob/main/packages/core/src/render3/interfaces/view.ts\n\n let lView = (this.inj as any)._lView;\n this.viewParent = findParent(lView, this.viewParentApp);\n //console.log(\"---*************--context--*************---\", lView[8]);\n this.context = (this.inj as any)._lView[8];\n\n this.displayType = config.displayType || DISPLAY_TYPE.BLOCK;\n // this.context = (inj as any).view.context;\n // this.context = (this.viewContainerRef as any)._hostLView.debug.context;\n // let hasImplicitContext = (this.viewContainerRef as any)._hostLView.find(t => t && !!t.$implicit);\n // when $implicit is not available, this object contains some ngFor context or listitem context of the widget then\n // we use the direct parent for example: nav component is the parent for anchor => anchor gets viewParent as Nav\n // In other case, where we have implicitContext there we can make use of page/app level context hence viewParent.viewParent to get page level context\n /*if (hasImplicitContext && this.viewParent.viewParent) {\n if (this.viewParent.widgetType !== 'wm-card' && this.viewParent.widgetType !== 'wm-iframedialog'\n && this.viewParent.widgetType !== 'wm-partialdialog') {\n this.viewParent = this.viewParent.viewParent;\n }\n }\n if (!hasImplicitContext || (!this.viewParent.widgetType)) {\n this.context = (this.viewContainerRef as any)._hostLView.find(t => t && !!t.$implicit);\n } else {\n this.context = (this.viewContainerRef as any).parentInjector._lView[8];\n }*/\n\n /*if(_viewParent && !hasImplicitContext) {\n this.context = (this.viewContainerRef as any)._hostLView[8];\n } else {\n this.context = hasImplicitContext;\n }*/\n // if (['wm-list', 'wm-nav'].includes(this.viewParent.widgetType) || ['wm-carousel-template', 'wm-card'].includes(this.widgetType)) {\n // this.context = (this.viewContainerRef as any)._hostLView.debug.context;\n // } else {\n // this.context = (this.viewContainerRef as any).parentInjector._lView[8];\n // }\n this.widget = this.createProxy();\n this.eventManager = inj.get(EventManager);\n (this.nativeElement as any).widget = this.widget;\n\n this.appLocale = inj.get(App).appLocale || {};\n\n this.initContext();\n\n if (config.hostClass) {\n addClass(this.nativeElement, config.hostClass);\n }\n\n this.widgetId = this.generateWidgetId();\n this.trackId = this.generateWidgetId();\n setAttr(this.nativeElement, 'widget-id', this.widgetId, true);\n\n // register default property change handler and style change handler\n this.registerStyleChangeListener(this.onStyleChange, this);\n this.registerPropertyChangeListener(this.onPropertyChange, this);\n\n // if the initPromise is provided, wait till the promise is resolved to proceed with the widget initialization\n if (!initPromise) {\n this.initWidget();\n } else {\n this.delayedInit = true;\n initPromise.then((resolveFn) => {\n this.initWidget();\n this.setInitProps();\n resolveFn && resolveFn()\n });\n }\n if(explicitContext) {\n extend(this.context, explicitContext);\n }\n }\n\n public getNativeElement(): HTMLElement {\n return this.nativeElement;\n }\n\n public getWidgetType(): string {\n return this.widgetType;\n }\n\n public getWidgetSubType(): string {\n return this.widgetSubType;\n }\n\n public getWidget(): any {\n return this.widget;\n }\n\n public setProperty(propName, propValue) {\n this.widget[propName] = propValue;\n }\n\n public getViewParent(): any {\n return this.viewParent;\n }\n\n public notifyStyleChange(key: string, nv: any, ov: any) {\n this.styleChange.next({key, nv, ov});\n }\n\n public notifyPropertyChange(key: string, nv: any, ov: any) {\n this.propertyChange.next({key, nv, ov});\n }\n\n public registerStyleChangeListener(fn: ChangeListener, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n this.styleChange.subscribe(({key, nv, ov}) => fn(key, nv, ov));\n }\n\n public registerReadyStateListener(fn: Function, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n if (this.readyState.isStopped) {\n fn();\n return;\n }\n this.readyState.subscribe(() => fn());\n }\n\n public registerPropertyChangeListener(fn: ChangeListener, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n this.propertyChange.subscribe(({key, nv, ov}) => fn(key, nv, ov));\n }\n\n public registerDestroyListener(fn: Function, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n this.destroy.subscribe(() => {}, () => {}, () => fn());\n }\n\n public getDisplayType(): string {\n return this.displayType;\n }\n\n protected createProxy(): any {\n return WidgetProxyProvider.create(this, this.widgetSubType, getWidgetPropsByType(this.widgetSubType));\n }\n\n protected initContext() {\n // const context = (this.inj as any).view.context;\n const context = this.context || {};\n\n const parentContexts = this.inj.get(Context, {});\n\n // assign the context property accordingly\n if (this.viewParent !== context) {\n this.context = context;\n } else {\n this.context = {};\n }\n\n if (parentContexts) {\n let parentContextObj = {};\n if (isArray(parentContexts)) {\n forEach(parentContexts, (contextObj) => {\n Object.assign(parentContextObj, contextObj);\n });\n } else {\n parentContextObj = parentContexts;\n }\n this.context = Object.assign({}, parentContextObj, this.context);\n }\n }\n\n /**\n * set the value on the proxy object ie, widget\n * setting the property on the proxy will invoke the change listeners\n * @param {string} key\n * @param value\n */\n public setWidgetProperty(key: string, value: any) {\n this.widget[key] = value;\n }\n\n public getAttr(attrName: string): string {\n return this.$attrs.get(attrName);\n }\n\n /**\n * returns app instance\n * @returns {App}\n */\n public getAppInstance() {\n return this.inj.get(App);\n }\n\n /**\n * Generates a unique id\n * Default pattern is `widget-id-${id}`\n * Components can override this method to generate a different id eg, bar-chart-1\n */\n protected generateWidgetId(): string {\n return widgetIdGenerator.nextUid();\n }\n\n /**\n * Handles the common functionality across the components\n * eg,\n * 1. value of the class property will be applied on the host element\n * 2. based on the value of show property component is shown/hidden\n *\n * @param {string} key\n * @param nv\n * @param ov\n */\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'show') {\n this.nativeElement.hidden = !nv;\n } else if (key === 'hint') {\n if (!isMobileApp()) {\n setAttr(this.nativeElement, 'title', nv);\n }\n } else if (key === 'class') {\n switchClass(this.nativeElement, nv, ov);\n let result = nv.match(/(\\W|^)(h([0-6]))(?=\\s|$)/);\n if (result) {\n setAttr(this.nativeElement, 'role', 'heading');\n setAttr(this.nativeElement, 'aria-level', result[3]);\n }\n } else if (key === 'name' || key === 'tabindex') {\n setAttr(this.nativeElement, key, nv);\n if (key === 'name' && nv) {\n renameWidget(this.viewParent, this.widget, nv, ov);\n }\n } else if (key === 'conditionalclass') {\n // update classes if old and nv value are different\n updateClasses(nv.toAdd, nv.toRemove, this.nativeElement);\n } else if (key === 'autoplay') {\n const tagName = this.widgetType === 'wm-audio' ? 'audio' : 'video';\n // Trigger media(audio/video) element load method after changing autoplay property\n this.nativeElement.querySelector(tagName).load();\n } else if (key === 'conditionalstyle') {\n // update styles if old and nv value are different\n updateStyles(nv, ov, this.nativeElement);\n } else if (key === 'animation') {\n // update styles if old and nv value are different\n addClass(this.nativeElement, \"animated \" + nv);\n } else if (key === 'disabled') {\n // WMS-19321: In IE, widget is in disabled state when disabled=\"false\" attribute is present\n (nv === true) ? setAttr(this.nativeElement, 'disabled', 'true', true) : removeAttr(this.nativeElement, 'disabled', true);\n }\n }\n\n /**\n * Default style change handler\n */\n protected onStyleChange(k: string, nv: any, ov?: any) {}\n\n /**\n * Register the widget with the widgetRegistry\n */\n protected registerWidget(widgetName: string) {\n this.registerDestroyListener(register(this.widget, this.viewParent, this.widgetId, widgetName));\n }\n\n /**\n * override the\n */\n protected getMappedEventName(eventName) {\n return EVENTS_MAP.get(eventName) || eventName;\n }\n\n /**\n * invoke the event handler\n * Components can override this method to execute custom logic before invoking the user callback\n */\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any, meta?: string) {\n this.eventManager.addEventListener(\n node,\n eventName,\n e => {\n locals.$event = e;\n if (meta === 'delayed') {\n setTimeout(() => eventCallback(), 150);\n } else {\n return eventCallback();\n }\n }\n );\n }\n\n /**\n * parse the event expression and save reference to the function inside eventHandlers map\n * If the component provides a override for an event through @Event decorator invoke that\n * else invoke the resolved function\n *\n * @param {string} eventName\n * @param {string} expr\n */\n protected processEventAttr(eventName: string, expr: string, meta?: string, child?: Child) {\n const fn = $parseEvent(expr);\n const locals = this.context;\n locals.widget = child ? child.widget : this.widget;\n const boundFn = fn.bind(undefined, child ? this.viewParent.viewParent : this.viewParent, locals);\n\n let widget = child ? child.widget : this,\n nativeElement = child ? child.nativeElement : this.nativeElement;\n\n const eventCallback = () => {\n let boundFnVal;\n $invokeWatchers(true);\n try {\n locals.$event = locals.$event || new window.CustomEvent(eventName);\n // If the event is bound directly to the variable then we need to internally handle\n // the promise returned by the variable call.\n boundFnVal = boundFn();\n if (boundFnVal instanceof Promise) {\n boundFnVal.then( response => response, err => err);\n } else {\n return boundFnVal;\n }\n } catch (e) {\n console.error(e);\n }\n };\n if(child && !child.widget.eventHandlers)\n child.widget.eventHandlers = new Map<string, {callback: Function, locals: any}>()\n\n widget.eventHandlers.set(this.getMappedEventName(eventName), {callback: eventCallback, locals});\n // prepend eventName with on and convert it to camelcase.\n // eg, \"click\" ---> onClick\n const onEventName = camelCase(`on-${eventName}`);\n // save the eventCallback in widgetScope.\n\n widget[onEventName] = eventCallback;\n\n // events needs to be setup after viewInit\n this.toBeSetupEventsQueue.push(() => {\n this.handleEvent(nativeElement, this.getMappedEventName(eventName), eventCallback, locals, meta);\n });\n }\n\n /**\n * Process the bound property\n * Register a watch on the bound expression\n */\n protected processBindAttr(propName: string, expr: string, child ?: any) {\n if(!child)\n this.initState.delete(propName);\n let viewParent = child ? child.widget.viewParent.viewParent : this.viewParent,\n context = child ? child.widget.context : this.context,\n widget = child ? child.widget : this.widget,\n isMuted = child ? child.widget.isMuted : this.isMuted,\n widgetProps = child ? child.widget.widgetProps : this.widgetProps,\n widgetId = child ? child.widget.widgetId : this.widgetId;\n this.registerDestroyListener(\n $watch(\n expr,\n viewParent,\n context,\n nv => {\n if(propName.startsWith('base-'))\n widget.updateData(propName, nv);\n widget[propName] = nv\n },\n getWatchIdentifier(widgetId, propName),\n propName === 'datasource',\n widgetProps.get(propName),\n () => isMuted\n )\n );\n }\n\n /**\n * Remove watch on the bound property\n */\n protected removePropertyBinding(propName: string) {\n $unwatch(getWatchIdentifier(this.widgetId, propName));\n }\n\n /**\n * invoke the event callback method\n * @param {string} eventName\n * @param extraLocals\n */\n public invokeEventCallback(eventName: string, extraLocals?: any) {\n const callbackInfo = this.eventHandlers.get(eventName);\n if (callbackInfo) {\n const fn = callbackInfo.callback;\n const locals = callbackInfo.locals || {};\n\n if (fn) {\n return fn(Object.assign(locals, extraLocals));\n }\n }\n }\n /**\n * Process the attribute\n * If the attribute is an event expression, generate a functional representation of the expression\n * and keep in eventHandlers\n * If the attribute is a bound expression, register a watch on the expression\n */\n protected processAttr(attrName: string, attrValue: string, child?: Child) {\n // console.log(\"====attrName=====\", attrName, \"=====typeof attrname=====\", typeof attrName, \"-----attrValue----\", attrValue);\n const {0: propName, 1: type, 2: meta, length} = attrName.split('.');\n if (type === 'bind') {\n // if the show property is bound, set the initial value to false\n if (propName === 'show') {\n this.nativeElement.hidden = true;\n }\n this.processBindAttr(propName, attrValue, child);\n } else if (type === 'event' && !this.nativeElement.hasAttribute('customwidgetcontainer')) {\n this.processEventAttr(propName, attrValue, meta, child);\n } else if (length === 1) {\n // remove class and name attributes. Component will set them on the proper node\n if (attrName === 'class') {\n removeClass(this.nativeElement, attrValue);\n } else if (attrName === 'tabindex' || attrName === 'name') {\n removeAttr(this.nativeElement, attrName);\n }\n\n this.initState.set(propName, attrValue);\n } else {\n // custom attributes provided on elDef;\n }\n }\n\n /**\n * This is required as the native element attributes are case insensitive(camelcase) like customExpressions becomes customexpression\n * and our logic to check like these changes will fail. Before IVY changes, angular maintains a separate object with these attributes\n * as it is like in the camelcase. With IVY all those are gone. So need to maintain a separate list with the camelcasing of attributes\n * @private\n * _tNode.attrs attributes are stored in array(even index: key, odd index: value)\n */\n protected getAttributes() {\n let _tNodeAttrs = (this.inj as any)._tNode.attrs, actualAttrs = Array.from(this.nativeElement.attributes).map(attr => attr.name);\n if(_tNodeAttrs === null) {\n return actualAttrs.sort();\n }\n forEach(_tNodeAttrs, (attr, i: any) => {\n if (typeof attr === 'number') {\n return false;\n }\n if(typeof attr === 'string' && i % 2 == 0) {\n let lowerCaseAttr = attr.toLowerCase();\n if (actualAttrs.includes(lowerCaseAttr)) {\n let index = actualAttrs.indexOf(lowerCaseAttr)\n actualAttrs[index] = attr;\n }\n }\n });\n\n /*\n Sorting attributes as properties like placeholder is not working when it is bound.\n placeholder and placeholder.bind two properties are coming in Array.\n When array is not sorted, initially placeholder.bind value is set then placeholder default value is updated.\n If array is sorted, placeholder.bind value will be set finally.\n This is caused because of the way we are storing attribute names in watcher registry map\n */\n return actualAttrs.sort();\n }\n\n /**\n * Process the attributes\n */\n private processAttrs() {\n map(this.getAttributes(), (attrName: string) => {\n let attrValue = this.nativeElement.attributes[attrName].value\n this.$attrs.set(attrName, attrValue);\n this.processAttr(attrName, attrValue);\n });\n }\n\n /**\n * Update the initState with the default property values and the values provided in the markup\n * Process the attributes\n * Register the widget\n */\n protected initWidget() {\n this.initState = new Map<string, any>();\n\n // get the widget properties\n const widgetProps: Map<string, any> = getWidgetPropsByType(this.widgetSubType);\n widgetProps.forEach((v, k) => {\n if (isDefined(v.value)) {\n this.initState.set(k, v.value);\n }\n });\n\n this.widgetProps = widgetProps;\n\n this.processAttrs();\n\n this.registerWidget(this.initState.get('name'));\n }\n\n /**\n * Update the default properties and the properties provided in the markup in component\n * Invoking this method will result in invocation of propertyChange handlers on the component for the first time\n */\n protected setInitProps() {\n if (this.initState.get('name')) {\n this.widget.name = this.initState.get('name');\n }\n this.initState.forEach((v, k) => {\n // name is already set, ignore name\n // if the key is part of to be ignored attributes list do not set it on the component instance\n if ((this.widgetProps.get(k) || isStyle(k)) && k !== 'name') {\n this.widget[k] = v;\n }\n });\n this.initState.clear();\n this.initState = undefined;\n\n this.readyState.next(null);\n this.readyState.complete();\n }\n\n /**\n * Returns true, if a listener registered for the given event on this widget markup.\n * @param eventName\n * @returns {boolean}\n */\n protected hasEventCallback(eventName): boolean {\n return this.eventHandlers.has(eventName);\n }\n\n /**\n * Sets the focus on the widget\n */\n protected focus(): void {\n /**\n * Check for the nodes having focus-target attribute inside the element\n * If found, focus the first node (eg, date widget)\n * else, focus the element (eg, text widget)\n */\n let $target = this.$element[0].querySelector('[focus-target]');\n if (!$target) {\n $target = this.$element[0];\n }\n $target.focus();\n }\n\n // Defining the execute method on BaseComponent. If dataset is binded to widgets ouptut then datasource.execute will be defined\n protected execute(operation, options): any {\n\n }\n\n public mute() {\n this.isMuted = true;\n }\n\n public unmute() {\n this.isMuted = false;\n }\n\n private customInjectorMap: any = {};\n\n /**\n * After the Angular 17 upgrade, Angular is no longer sending ngTemplateContext to components in ng-template.\n * Wavemaker widgets inside ng-template require context to evaluate bind expressions.\n * So we're creating an injectionToken that returns the context as a value.\n * We are passing the injectionToken to the ngTemplateOutletInjector.\n * This injects the context into each widget in the ng-template.\n * In the widget component constructor we are getting the injectionToken using dependency injection.\n * If injectionToken is present, we extend the component context with the value of injectionToken.\n * @param contextKey\n * @param context\n * @returns injector\n */\n createCustomInjector(contextKey: string, context: any) {\n if(this.customInjectorMap[contextKey]) {\n return this.customInjectorMap[contextKey].injector;\n }\n const injector = Injector.create({\n providers: [{ provide: 'EXPLICIT_CONTEXT', useFactory: () => context }]\n });\n this.customInjectorMap[contextKey] = { context, injector };\n return injector;\n }\n\n /**\n * After the host page is attached from cache, this function is called.\n */\n public ngOnAttach() {\n this.isAttached = true;\n }\n\n /**\n * Before the host page is detached from dom and stored in cache, this function is called.\n */\n public ngOnDetach() {\n this.isAttached = false;\n }\n\n /**\n * nativeElement will be available by this time\n * if the delayInit is false, properties meta will be available by this time\n * Invoke the setInitProps if the delayInit is false\n */\n ngOnInit() {\n if (!this.delayedInit) {\n this.setInitProps();\n }\n }\n\n /**\n * Register the events\n */\n ngAfterViewInit() {\n if (this.toBeSetupEventsQueue.length) {\n for (const fn of this.toBeSetupEventsQueue) {\n fn();\n }\n }\n this.toBeSetupEventsQueue.length = 0;\n this.isAttached = true;\n }\n\n ngAfterContentInit() {}\n\n ngOnDestroy() {\n this.isDestroyed = true;\n this.widget = Object.create(null);\n this.styleChange.complete();\n this.propertyChange.complete();\n this.destroy.complete();\n this.isAttached = false;\n }\n}\n","import { BaseComponent } from './base.component';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class StylableComponent extends BaseComponent {\n backgroundattachment: string;\n backgroundcolor: string;\n backgroundgradient: string;\n backgroundimage: string;\n backgroundposition: string;\n backgroundrepeat: string;\n backgroundsize: string;\n bordercolor: string;\n borderradius: string;\n borderstyle: string;\n borderwidth: string;\n borderbottomwidth: string;\n borderleftwidth: string;\n borderrightwidth: string;\n bordertopwidth: string;\n color: string;\n cursor: string;\n display: string;\n fontsize: string;\n fontfamily: string;\n fontstyle: string;\n fontunit: string;\n fontvariant: string;\n fontweight: string;\n height: string;\n horizontalalign: string;\n lineheight: string;\n margin: string;\n marginbottom: string;\n marginleft: string;\n marginright: string;\n margintop: string;\n opacity: string;\n overflow: string;\n padding: string;\n paddingbottom: string;\n paddingleft: string;\n paddingright: string;\n paddingtop: string;\n picturesource: string;\n textalign: string;\n textdecoration: string;\n verticalalign: string;\n visibility: string;\n whitespace: string;\n width: string;\n wordbreak: string;\n zindex: string;\n}\n","import { Directive, Inject, Self } from '@angular/core';\n\nimport { IRedrawableComponent, WidgetRef } from '../../framework/types';\n\n@Directive({\n selector: '[redrawable]'\n})\nexport class RedrawableDirective implements IRedrawableComponent {\n redraw: Function;\n constructor(@Self() @Inject(WidgetRef) widget) {\n this.redraw = () => {\n const tabEl = widget.$element.closest(\"[wmtabpane]\");\n const accordionEl = widget.$element.closest('[wmaccordionpane]').find('.panel-heading');\n if ((tabEl.length && !tabEl.hasClass('active')) || (accordionEl.length && !accordionEl.hasClass('active'))) {\n return;\n }\n return widget.redraw && widget.redraw();\n }\n }\n}\n","import {ContentChildren, Directive, Inject, Injector, Optional} from '@angular/core';\nimport { StylableComponent } from \"./stylable.component\";\nimport { RedrawableDirective } from \"../redraw/redrawable.directive\";\nimport { IWidgetConfig } from '../../framework/types';\nimport {includes, pickBy} from \"lodash-es\";\n\n@Directive()\nexport abstract class BaseContainerComponent extends StylableComponent {\n // reference to the components which needs a redraw(eg, grid, chart) when the show of this component changes\n @ContentChildren(RedrawableDirective, { descendants: true }) reDrawableComponents;\n public content;\n public Widgets;\n\n constructor(inj: Injector, WIDGET_CONFIG: IWidgetConfig, explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n private updateRedrawableComponents(widgets) {\n pickBy(widgets, widget => {\n // check for redrawable widget and whether it is already exist in reDrawableComponents query list or not\n if (widget && widget.nativeElement && widget.nativeElement.hasAttribute('redrawable') && !includes(this.reDrawableComponents._results, widget)) {\n this.reDrawableComponents._results.push(widget);\n }\n if (widget && widget.Widgets) {\n this.updateRedrawableComponents(widget.Widgets);\n }\n });\n }\n\n private redrawChildren() {\n // If container is bound to partial content, manually updating reDrawableComponents query list.\n if (this.content && this.Widgets) {\n this.updateRedrawableComponents(this.Widgets);\n }\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n }, 100);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n super.onPropertyChange(key, nv, ov);\n if (key === 'show') {\n if (nv) {\n this.redrawChildren();\n }\n }\n }\n}\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {addClass} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, styler } from '../../framework/styler';\nimport { IWidgetConfig } from '../../framework/types';\nimport { registerProps } from './container.props';\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\nimport {BaseContainerComponent} from \"../base/base-container.component\";\n\nconst DEFAULT_CLS = 'app-container';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-container',\n hostClass: DEFAULT_CLS\n};\n\n@Directive({\n selector: '[wmContainer]',\n providers: [\n provideAsWidgetRef(ContainerDirective)\n ]\n})\nexport class ContainerDirective extends BaseContainerComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext?: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n addClass(this.nativeElement, DEFAULT_CLS);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n\nimport { transformFileURI } from '@wm/core';\n\nimport { getImageUrl } from '../utils/widget-utils';\n\n@Pipe({\n name: 'image'\n})\nexport class ImagePipe implements PipeTransform {\n transform(url: string, encode?: boolean, defaultImageUrl?: string) {\n return transformFileURI(getImageUrl(url, encode, defaultImageUrl));\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-item-template',\n new Map(\n [\n ['content', PROP_STRING]\n ]\n )\n );\n};\n","/**\n * This directive is used to set custom template partial for an item and maintains separate scope for each item.\n * This takes two inputs\n * 1) template partial name as wmItemTemplate\n * 2) item object as userComponentParams\n * Example: Providing a custom template for the search/autocomplete widget (customized UI in the dropdown for each item)\n * Add this directive to the li tag and provide item object and partial name like below. And also provide partialContainer and partial-container-target to render the partial.\n * <li #liElements *ngFor=\"let match of matches\" [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\" partialContainer>\n * <a partial-container-target></a>\n * </li>\n */\n\nimport {Directive, ElementRef, Inject, Injector, Input, Optional, ViewContainerRef} from '@angular/core';\nimport { NgForOfContext } from '@angular/common';\n\nimport {App} from '@wm/core';\n\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\nimport { registerProps } from './item-template.props';\nimport { StylableComponent } from '../base/stylable.component';\n\nconst WIDGET_CONFIG = {widgetType: 'wm-item-template'};\n\n@Directive({\n selector: '[wmItemTemplate]',\n exportAs: 'itemTemplateRef',\n providers: [\n provideAsWidgetRef(ItemTemplateDirective)\n ]\n})\nexport class ItemTemplateDirective extends StylableComponent {\n static initializeProps = registerProps();\n public context;\n public content;\n public partialParams;\n public nativeElement: HTMLElement;\n public viewContainerRef: ViewContainerRef;\n get $index() {\n return this.context.index;\n }\n\n @Input() userComponentParams;\n\n @Input() set wmItemTemplate(value) {\n this.widget.content = value;\n }\n\n constructor(inj: Injector, elRef: ElementRef, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.nativeElement = elRef.nativeElement;\n // this.context = (<NgForOfContext<ItemTemplateDirective>>(<any>inj).view.context);\n this.context = (this.inj as any)._lView[8];\n }\n ngOnInit() {\n super.ngOnInit();\n this.partialParams.item = this.userComponentParams.dataObject;\n }\n}\n","import { PROP_BOOLEAN, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-repeat-template',\n new Map(\n [\n ['show', PROP_BOOLEAN]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\nimport { StylableComponent } from '../base/stylable.component';\nimport { registerProps } from './repeat-template.props';\nimport { styler } from '../../framework/styler';\nimport { IWidgetConfig } from '../../framework/types';\n\nconst DEFAULT_CLS = 'app-repeat-item';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-repeat-template',\n hostClass: DEFAULT_CLS\n};\n\n@Directive({\n selector: '[wmRepeatTemplate]',\n exportAs: 'repeatItemRef'\n})\nexport class RepeatTemplateDirective extends StylableComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n }\n}\n","import {\n Directive,\n Inject,\n inject,\n Injector,\n Input,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport {$watch, App, findParent} from '@wm/core';\nimport {extend} from \"lodash-es\";\n\n@Directive({\n selector: '[lazyLoad]'\n})\nexport class LazyLoadDirective implements OnDestroy {\n private readonly viewParent: any;\n private readonly context = {};\n private embeddedView;\n private unSubscribeFn: Function;\n\n constructor(\n inj: Injector,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any = {}\n ) {\n let viewParentApp = inj ? inj.get(App) : inject(App);\n let lView = (inj as any)._lView;\n this.viewParent = findParent(lView, viewParentApp)\n //this.context = (inj as any).view.context;\n extend(this.context, (inj as any)._lView[8], explicitContext);\n }\n\n @Input()\n set lazyLoad(expr) {\n this.unSubscribeFn = $watch(\n expr,\n this.viewParent,\n this.context,\n (val) => {\n if (!this.embeddedView && val) {\n this.embeddedView = this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n this.unSubscribeFn();\n }\n }\n );\n }\n\n ngOnDestroy() {\n this.unSubscribeFn();\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-message',\n new Map(\n [\n ['animation', PROP_STRING],\n ['caption', {value: 'Message', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['hideclose', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['type', {value: 'success', ...PROP_STRING}],\n ]\n )\n );\n};\n","import {Component, Inject, Injector, Optional} from '@angular/core';\n\nimport {switchClass} from '@wm/core';\n\nimport { styler } from '../../framework/styler';\nimport { IWidgetConfig } from '../../framework/types';\nimport { StylableComponent } from '../base/stylable.component';\nimport { registerProps } from './message.props';\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\n\nconst DEFAULT_CLS = 'alert app-message';\nconst WIDGET_CONFIG: IWidgetConfig = {widgetType: 'wm-message', hostClass: DEFAULT_CLS};\n\n@Component({\n selector: '[wmMessage]',\n templateUrl: './message.component.html',\n providers: [\n provideAsWidgetRef(MessageComponent)\n ],\n exportAs: 'wmMessage'\n})\nexport class MessageComponent extends StylableComponent {\n static initializeProps = registerProps();\n messageClass = '';\n messageIconClass = '';\n type = '';\n caption: string;\n public hideclose: any;\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n }\n\n public showMessage(caption?: string, type?: string) {\n if (caption) {\n this.caption = caption;\n }\n if (type) {\n this.setWidgetProperty('type', type);\n }\n this.setWidgetProperty('show', true);\n }\n\n public hideMessage() {\n this.setWidgetProperty('show', false);\n }\n\n public dismiss($event) {\n this.hideMessage();\n this.invokeEventCallback('close', {$event});\n }\n\n private onMessageTypeChange(nv: string) {\n let msgCls, msgIconCls;\n switch (nv) {\n case 'success':\n msgCls = 'alert-success';\n msgIconCls = 'wm-sl-l sl-check';\n break;\n case 'error':\n msgCls = 'alert-danger';\n msgIconCls = 'wi wi-cancel';\n break;\n case 'warn': /*To support old projects with type as \"warn\"*/\n case 'warning':\n msgCls = 'alert-warning';\n msgIconCls = 'wm-sl-l sl-alarm-bell';\n break;\n case 'info':\n msgCls = 'alert-info';\n msgIconCls = 'wi wi-info';\n break;\n case 'loading':\n msgCls = 'alert-info alert-loading';\n msgIconCls = 'fa fa-spinner fa-spin';\n break;\n }\n switchClass(this.nativeElement, msgCls, this.messageClass);\n this.messageClass = msgCls;\n this.messageIconClass = msgIconCls;\n }\n\n onPropertyChange(key, nv, ov?) {\n if (key === 'type') {\n this.onMessageTypeChange(nv);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","<i aria-hidden=\"true\" [title]=\"type + 'Alert'\" class=\"icon {{type}} {{messageIconClass}}\"></i>\n<span [innerHtml]=\"caption\"></span>\n<button title=\"Close\" type=\"button\" class=\"btn-transparent close\" [hidden]=\"hideclose\" (click)=\"dismiss($event)\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n</button>\n","import { PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-partial',\n new Map(\n [\n ['name', PROP_STRING]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {Viewport, ViewportEvent} from '@wm/core';\nimport { StylableComponent } from '../base/stylable.component';\nimport { registerProps } from './partial.props';\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\nimport {assign} from \"lodash-es\";\n\nconst DEFAULT_CLS = 'app-partial clearfix';\nconst WIDGET_CONFIG = {widgetType: 'wm-partial', hostClass: DEFAULT_CLS};\n\n@Directive({\n selector: '[wmPartial]',\n providers: [\n provideAsWidgetRef(PartialDirective)\n ]\n})\nexport class PartialDirective extends StylableComponent implements OnDestroy {\n static initializeProps = registerProps();\n constructor(inj: Injector, private viewport: Viewport, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, data => this.callback('resize', data)));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, data => this.callback('orientationchange', data)));\n }\n\n private callback(eventName, locals?: object) {\n locals = assign({widget: this}, locals);\n this.invokeEventCallback(eventName, locals);\n }\n\n public ngOnAttach() {\n this.callback('attach');\n }\n\n public ngOnDetach() {\n this.callback('detach');\n }\n\n public ngOnDestroy() {\n this.callback('destroy');\n super.ngOnDestroy();\n }\n\n}\n","import { Attribute, Directive, Inject, Self, Input, OnInit } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { $watch } from '@wm/core';\n\nimport { WidgetRef } from '../../framework/types';\nimport {get} from \"lodash-es\";\n\n@Directive({\n selector: '[partialContainer]',\n})\nexport class PartialParamHandlerDirective {\n constructor (@Self() @Inject(WidgetRef) private widgetRef) {\n this.widgetRef.partialParams = {};\n this.widgetRef.pageParams = this.widgetRef.partialParams;\n this.widgetRef.params$ = new Subject();\n }\n\n registerParams(name: string, value: string, bindExpr: string, type: string) {\n this.widgetRef.partialParams[name] = value;\n if (!value && bindExpr) {\n this.widgetRef.registerDestroyListener(\n //[Todo-CSP]: expr fn should be generated be default\n $watch(bindExpr, this.widgetRef.getViewParent(), get(this.widgetRef, 'context'), nv => {\n this.widgetRef.partialParams[name] = nv;\n\n // notify the partial container of the param changes\n this.widgetRef.params$.next();\n })\n );\n } else {\n this.widgetRef.params$.next();\n }\n\n }\n}\n\n@Directive({\n selector: '[wmParam]',\n})\nexport class PartialParamDirective implements OnInit {\n\n @Input() name: string;\n @Input() value: any;\n\n constructor(\n @Attribute('value.bind') public bindValue,\n @Attribute('type') public type,\n private partialParamsProvider: PartialParamHandlerDirective\n ) {\n }\n\n ngOnInit() {\n this.partialParamsProvider.registerParams(this.name, this.value, this.bindValue, this.type);\n }\n}\n","import { Attribute, ComponentFactoryResolver, Directive, ElementRef, Inject, Injector, Self, ViewContainerRef } from '@angular/core';\n\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { App, $invokeWatchers, noop, ComponentType, PartialRefProvider } from '@wm/core';\n\nimport { WidgetRef } from \"../../framework/types\";\nimport {debounce} from \"lodash-es\";\n\n@Directive({\n selector: '[partialContainer]'\n})\nexport class PartialContainerDirective {\n\n private contentInitialized = false;\n private $target;\n\n get name() {\n return this.componentInstance.name;\n }\n\n async _renderPartial(nv) {\n // destroy the existing partial\n this.vcRef.clear();\n // when the container-target is inside the component template, it can be queried after viewInit of the component.\n $invokeWatchers(true);\n // for partials with popovers and page dialogs which are inside a prefab, prefab name needs to be computed and appended\n const prefab = $(this.elRef.nativeElement).closest('.app-prefab');\n let prefabName;\n if (prefab.length) {\n prefabName = prefab.attr('prefabname');\n } else if (this.componentInstance.viewParent) {\n prefabName = this.componentInstance.viewParent.prefabName;\n }\n\n const componentFactory = await this.partialRefProvider.getComponentFactoryRef(nv, ComponentType.PARTIAL, {prefab: prefabName});\n if (componentFactory) {\n const instanceRef = this.vcRef.createComponent(componentFactory, 0, this.inj);\n if (instanceRef && instanceRef['instance'] && prefabName) {\n // @ts-ignore\n instanceRef['instance'].prefabName = prefabName;\n }\n if (!this.$target) {\n this.$target = this.elRef.nativeElement.querySelector('[partial-container-target]') || this.elRef.nativeElement;\n }\n\n this.$target.innerHTML = '';\n this.$target.appendChild(instanceRef.location.nativeElement);\n this.contentInitialized = true;\n setTimeout(() => this.onLoadSuccess(), 200);\n }\n }\n\n renderPartial = debounce(this._renderPartial, 200);\n\n onLoadSuccess() {\n this.componentInstance.invokeEventCallback('load');\n\n this.app.notify('partialLoaded');\n }\n\n constructor(\n @Self() @Inject(WidgetRef) public componentInstance,\n public vcRef: ViewContainerRef,\n public elRef: ElementRef,\n public inj: Injector,\n private app: App,\n @Attribute('content') _content: string,\n private resolver: ComponentFactoryResolver,\n private partialRefProvider: PartialRefProvider\n ) {\n\n componentInstance.registerPropertyChangeListener((key: string, nv: any, ov?: any) => {\n if (key === 'content') {\n if (componentInstance.$lazyLoad) {\n componentInstance.$lazyLoad = () => {\n this.renderPartial(nv);\n componentInstance.$lazyLoad = noop;\n };\n } else {\n this.renderPartial(nv);\n }\n }\n });\n\n const subscription = componentInstance.params$\n .pipe(\n filter(() => this.contentInitialized),\n debounceTime(200)\n )\n .subscribe(() => this.renderPartial(componentInstance.content));\n // reload the partial content on partial param change\n componentInstance.registerDestroyListener(() => subscription.unsubscribe());\n }\n}\n","import { Attribute, ComponentFactoryResolver, Directive, ElementRef, Inject, Injector, Self, ViewContainerRef } from '@angular/core';\nimport { App, $invokeWatchers, noop, ComponentType, CustomWidgetRefProvider } from '@wm/core';\nimport { WidgetRef } from \"../../framework/types\";\n\n\ndeclare const _;\n\n@Directive({\n selector: '[customWidgetContainer][widgetname]'\n})\nexport class CustomWidgetContainerDirective {\n\n constructor(\n @Self() @Inject(WidgetRef) public componentInstance,\n public vcRef: ViewContainerRef,\n public elRef: ElementRef,\n public inj: Injector,\n private app: App,\n @Attribute('widgetname') widgetname: string,\n private customWidgetRefProvider: CustomWidgetRefProvider\n ) {\n const widgetnames = this.componentInstance.widgetname;\n this.customWidgetRefProvider.getComponentFactoryRef(widgetname, ComponentType.WIDGET).then((componentFactory) => {\n if (componentFactory) {\n const instanceRef = this.vcRef.createComponent(componentFactory, 0, this.inj);\n this.elRef.nativeElement.appendChild(instanceRef.location.nativeElement);\n }\n });\n }\n}","import {Directive, Inject, Injector, Input, OnDestroy, Optional, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {isLargeTabletLandscape, isLargeTabletPortrait} from '@wm/core';\nimport {extend} from \"lodash-es\";\n\n@Directive({\n selector: '[wmShowInDevice]'\n})\nexport class ShowInDeviceDirective implements OnDestroy {\n private readonly context = {};\n private devices;\n private embeddedView;\n constructor(\n private viewContainerRef: ViewContainerRef,\n inj: Injector,\n private templateRef: TemplateRef<any>,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n extend(this.context, (inj as any)._lView[8], explicitContext);\n\n window.addEventListener('resize', this.onResize.bind(this));\n }\n @Input() set wmShowInDevice(devices) {\n this.devices = devices.split(',');\n this.onResize();\n }\n /*\n This function handles the rendering of widgets based on the configured showindevice property\n for the widget.\n 1. For Large Screen, create the view only when min-width is 1200px(except when the viewport is an Ipad Pro 13 inch(Landscape))\n 2. For Laptop/Tablet Landscape, create the view only when either min-width is 992px and max-width is 1199px(except when the viewport is an Ipad Pro 13 inch(Portrait)), or its an Ipad Pro 13 inch(Landscape))\n 3. For Tablet Portrait, create the view only when either min-width is 768px and max-width is 991px, or its an Ipad Pro 13 inch(Portrait))\n 4. For Mobile, create the view only when max-width is 767px.\n 5. For all, always render the view.\n */\n private onResize($event?) {\n\n const lgWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-lg') || '1200px';\n const mdWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-md') || '992px';\n const smWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-sm') || '768px';\n const lgTabLandScapeWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-lg-tab-landscape') || '1366px';\n const lgTabPortraitWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-lg-tab-portrait') || '1024px';\n const lgWidthMin = parseFloat(lgWidth)-1;\n const lgUnit = lgWidthMin + \"px\";\n const mdWidthMin = parseFloat(mdWidth)-1;\n const mdUnit = mdWidthMin + \"px\";\n const smWidthMin = parseFloat(smWidth)-1;\n const smUnit = smWidthMin + \"px\";\n if (\n (this.devices.indexOf('lg') > -1 && window.matchMedia(\"(min-width: \"+lgWidth+\")\").matches && !isLargeTabletLandscape(lgTabLandScapeWidth, lgTabPortraitWidth))\n || (this.devices.indexOf('md') > -1 && (isLargeTabletLandscape(lgTabLandScapeWidth, lgTabPortraitWidth) || (window.matchMedia(\"(min-width: \"+mdWidth+\") and (max-width: \"+lgUnit +\")\").matches && !isLargeTabletPortrait(lgTabLandScapeWidth, lgTabPortraitWidth))))\n || (this.devices.indexOf('sm') > -1 && (window.matchMedia(\"(min-width: \"+smWidth+\") and (max-width: \"+mdUnit+\")\").matches || isLargeTabletPortrait(lgTabLandScapeWidth, lgTabPortraitWidth)))\n || (this.devices.indexOf('xs') > -1 && window.matchMedia(\"(max-width: \"+smUnit+\")\").matches)\n || (this.devices.indexOf('all') > -1)) {\n if (!this.embeddedView) {\n this.embeddedView = this.viewContainerRef.createEmbeddedView(this.templateRef, this.context);\n }\n } else {\n this.viewContainerRef.clear();\n this.embeddedView = '';\n }\n\n }\n\n ngOnDestroy() {\n window.removeEventListener('resize', this.onResize);\n }\n}\n","import {Directive, DoCheck, ElementRef, Injector, Input, OnDestroy, OnInit} from '@angular/core';\n\nimport { App, debounce, isKitkatDevice, isMobileApp } from '@wm/core';\nimport {forEach, includes} from \"lodash-es\";\n\ndeclare const $;\ndeclare const IScroll;\n\n@Directive({\n selector: '[wmSmoothscroll]'\n})\nexport class SmoothScrollDirective implements OnInit, DoCheck, OnDestroy {\n\n private readonly _$el;\n private _isEnabled = false;\n private _smoothScrollInstance;\n private _lastScrollY = -1;\n private _waitRefreshTill = -1;\n private app: App;\n private pendingIscrolls: any = [];\n private cancelSubscription: any;\n\n constructor(inj: Injector, elRef: ElementRef, app: App) {\n this._$el = $(elRef.nativeElement);\n this.app = app;\n }\n\n public ngOnInit() {\n this.cancelSubscription = this.app.subscribe('no-iscroll', el => {\n this.pendingIscrolls.push(el);\n });\n }\n\n public ngDoCheck() {\n if (this._isEnabled) {\n if (!this._smoothScrollInstance) {\n this._smoothScrollInstance = this.applySmoothScroll();\n } else {\n this.refreshIScroll();\n }\n } else if (this._smoothScrollInstance && this._smoothScrollInstance.destroy) {\n this._smoothScrollInstance.destroy();\n }\n }\n\n public ngOnDestroy() {\n if (this._smoothScrollInstance && this._smoothScrollInstance.destroy) {\n this._smoothScrollInstance.destroy();\n }\n if (this.cancelSubscription) {\n this.cancelSubscription();\n }\n }\n\n @Input()\n set wmSmoothscroll(val: any) {\n this._isEnabled = (val === true || val === 'true');\n if (this._isEnabled) {\n if (!this._smoothScrollInstance) {\n this._smoothScrollInstance = this.applySmoothScroll();\n }\n } else {\n this.ngOnDestroy();\n }\n }\n\n private applySmoothScroll($events?: any[], activeEl?: any) {\n if (!isMobileApp() || isKitkatDevice()) {\n return null;\n }\n // Set the fadeScrollbars to true only when content is scrollable inside the smoothscroll-container\n const scrollOptions = {\n scrollbars: true,\n preventDefault: false,\n momentum: true,\n bounce: false,\n mouseWheel: true, // for preview in browser support\n disablePointer: true, // disable the pointer events as it causes lag in scrolling (jerky).\n disableTouch: false, // false to be usable with touch devices\n disableMouse: false // false to be usable with a mouse (desktop)\n },\n el = this._$el[0];\n\n if (!el.children.length) {\n return null;\n }\n\n this._$el.addClass('smoothscroll-wrapper');\n /* WMS-17904\n document.scrollIntoView overrides default iScroll scroll,\n so the fix is done to ensure, the scroll action from 'scrollIntoView'\n is captured & executed through iScroll APIs\n */\n el.onscroll = function(e) {\n if (e.target.iscroll && e.target.scrollTop) {\n e.target.iscroll.scrollTo(\n e.target.iscroll.x,\n e.target.iscroll.y - e.target.scrollTop\n );\n e.target.scrollTop = 0;\n }\n };\n if (activeEl && activeEl.tagName === 'INPUT') {\n activeEl.focus();\n }\n\n // Add fadeScrollbars options only when smoothscroll container is included, which means content is scrollable.\n if ($events) {\n scrollOptions['fadeScrollbars'] = true;\n }\n\n let iScroll = new IScroll(el, scrollOptions);\n\n if ($events) {\n // map all events on previous iscroll to the newly created iscroll.\n forEach($events, (listeners, key) => {\n forEach(listeners, l => {\n iScroll.on(key, l);\n });\n });\n const scope = this;\n iScroll.on('scrollStart', function () {\n this._scrolling = true;\n //will notify the components which want to subscribe upon scrolling.\n if (isMobileApp()) {\n scope.app.notify('iscroll-start',{});\n }\n });\n iScroll.on('scrollEnd', function () {\n this._scrolling = false;\n });\n iScroll.refresh();\n }\n\n this.app.notify('iscroll-start',{});\n\n // refresh the indicators.\n iScroll.indicatorRefresh = () => {\n const indicators = this._$el[0].iscroll.indicators;\n let i;\n if (indicators.length) {\n for (i = 0; i < indicators.length; i++) {\n indicators[i].refresh();\n }\n }\n };\n\n this._$el[0].iscroll = iScroll;\n forEach(this.pendingIscrolls, (_el, index) => {\n if (_el.isSameNode(this._$el[0])) {\n this.app.notify('iscroll-update', {el: _el});\n this.pendingIscrolls.splice(index, 1);\n return;\n }\n });\n this.app.notify('iscroll-update', {});\n\n return {\n iScroll: iScroll,\n destroy: function () {\n iScroll.destroy();\n $(iScroll.scroller).css({\n 'transition-timing-function': '',\n 'transition-duration': '',\n 'transform': ''\n });\n\n iScroll = null;\n delete el.iscroll;\n }\n };\n }\n\n /*\n * When element has scroll (i.e. scrollHeight > clientHeight), a div with smoothscroll-container class will be added.\n * new iScroll will be initialised on the element after the div addition, by removing the existing iscroll on the element.\n * This div will have no height, so the elements inside this div will inherit this height, i.e. no height,\n * Scenario: tabs with 100% height, as it covers the pageContent with no scroll, this div will not be added.\n * TODO: Scenario: tabs with 100% height and add others widgets after/before, as it has scroll, this div will be added.\n * But tabs having 100% height will not be honoured as div is having no height.\n */\n private refreshIScroll() {\n const iScroll = this._smoothScrollInstance.iScroll;\n const waitTime = 500;\n if (iScroll._scrolling || this._waitRefreshTill > Date.now()) {\n return;\n }\n // Check for scrollable content and if smoothscroll-container div is already added.\n if (iScroll.wrapper\n && !includes(iScroll.wrapper.children[0].classList, 'smoothscroll-container')\n && iScroll.wrapper.scrollHeight > iScroll.wrapper.clientHeight) {\n\n const cloneEvents = iScroll._events;\n const prevActiveEl = document.activeElement;\n\n // Adds the smoothscroll container div wrapper only when element has scrollable content.\n $(iScroll.wrapper.children).wrapAll('<div class=\"smoothscroll-container\"></div>');\n this._smoothScrollInstance.destroy();\n\n // create new iscroll instance on the element\n this._smoothScrollInstance = this.applySmoothScroll(cloneEvents, prevActiveEl);\n }\n if (this._lastScrollY !== this._$el[0].iscroll.maxScrollY) {\n refreshIscrolls(this._smoothScrollInstance.iScroll);\n this._lastScrollY = this._$el[0].iscroll.maxScrollY;\n } else {\n this._smoothScrollInstance.iScroll.refresh();\n }\n this._waitRefreshTill = Date.now() + waitTime;\n }\n}\n\n/**\n * Refreshes the given iScorll or all iScrolls in the page.\n * @param iScroll\n */\nconst refreshIscrolls = function(iScroll?: any) {\n const scrollContainer = !iScroll && $('.smoothscroll-container');\n\n // Fix for issue: keyboard hides the input on focus.\n // On input focus or window resize, keypad in device has to adjust.\n let bScrollIntoView = iScroll && iScroll.wrapper && iScroll.wrapper.contains(document.activeElement);\n if (bScrollIntoView && document.activeElement.tagName === 'INPUT' && ($(document.activeElement).offset().top + document.activeElement.clientHeight) > window.innerHeight * 0.9) {\n document.activeElement.scrollIntoView({behavior: 'auto', block: 'end', inline: 'end'});\n }\n\n if (iScroll) {\n // refresh specify iscroll on change.\n if (iScroll.indicatorRefresh) {\n iScroll.indicatorRefresh();\n }\n if (iScroll.refresh) {\n iScroll.refresh();\n }\n } else if (scrollContainer.length) {\n // refresh all the iscrolls in pagecontent.\n scrollContainer.parent().each( (i, el: any) => {\n el.iscroll.indicatorRefresh();\n el.iscroll.refresh();\n });\n }\n};\n\n// on window resize, recalculate the iscroll position and refresh scrollers.\nwindow.addEventListener('resize', debounce(refreshIscrolls, 200));\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[textContent]'\n})\nexport class TextContentDirective {\n @Input()\n set textContent(nv) {\n let v = nv;\n\n if (nv === undefined || nv === null) {\n v = '';\n }\n this.elRef.nativeElement.textContent = v;\n }\n\n constructor(private elRef: ElementRef) {}\n}","\nimport { CustomPipeManager } from '@wm/core';\nimport {isFunction} from \"lodash-es\";\n\nexport class WmPipe {\n protected pipeRef;\n protected isCustomPipe;\n constructor(private pipeName, protected customPipeManager: CustomPipeManager) {\n this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;\n this.isCustomPipe = this.pipeRef && isFunction(this.pipeRef.formatter);\n }\n\n customFormatter(data, args) {\n try {\n return this.pipeRef.formatter(...args);\n } catch (error) {\n return data;\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport { CURRENCY_INFO, isDefined, App, CustomPipeManager, AbstractI18nService, hasOffsetStr } from '@wm/core';\nimport { WmPipe } from \"./wm-pipe\";\nimport {filter, includes, isDate, isFunction, isObject, isUndefined, startsWith} from \"lodash-es\";\n\ndeclare const moment;\n\nconst getEpochValue = data => {\n let epoch;\n // For data in form of string number ('123'), convert to number (123). And don't parse date objects.\n if (!isDate(data) && !isNaN(data)) {\n data = parseInt(data, 10);\n }\n // get the timestamp value. If data is time string, append date string to the time value\n epoch = moment(data).valueOf() || moment(new Date().toDateString() + ' ' + data).valueOf();\n return epoch;\n};\n\n@Pipe({\n name: 'trailingZeroDecimalPipe'\n})\nexport class TrailingZeroDecimalPipe implements PipeTransform {\n transform(value: any, selectedLocale: string, numberfilter: string, localefilter: any, trailingzero: boolean, decimalValue: string, skipTrailingZeroCheck?: boolean, formattedLocale?): any {\n numberfilter = trailingzero && !skipTrailingZeroCheck ? `1.${decimalValue.length}-16`: numberfilter;\n const locale = formattedLocale ? formattedLocale['number'] : undefined;\n return this.decimalPipe.transform(value, numberfilter, localefilter || locale || selectedLocale);\n }\n\n constructor(private decimalPipe: DecimalPipe) { }\n\n}\n\n@Pipe({\n name: 'toDate'\n})\nexport class ToDatePipe extends WmPipe implements PipeTransform {\n // This method calls the custom formatter fn after applying the exisitng date pattern\n returnFn(data, args) {\n if (this.isCustomPipe) {\n if (args) {\n args[0] = data;\n }\n return this.customFormatter(data, args);\n }\n return data;\n }\n transform(data: any, format: any, timezone?, compInstance?) {\n let timestamp;\n // 'null' is to be treated as a special case, If user wants to enter null value, empty string will be passed to the backend\n if (data === 'null' || data === '') {\n return this.returnFn('', arguments);\n }\n if (!isDefined(data)) {\n return this.returnFn('',arguments);\n }\n timestamp = getEpochValue(data);\n if (timestamp) {\n if (format === 'timestamp') {\n return this.returnFn(timestamp, arguments);\n }\n if (format === 'UTC') {\n return this.returnFn(new Date(timestamp).toISOString(), arguments);\n }\n let formattedVal;\n const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;\n if (timeZone && (data === timestamp || hasOffsetStr(data))) {\n formattedVal = moment(timestamp).tz(timeZone).format(format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A'));\n } else {\n formattedVal = this.datePipe.transform(timestamp, format);\n }\n return this.returnFn(formattedVal, arguments);\n }\n return this.returnFn('', arguments);\n }\n\n constructor(private datePipe: DatePipe, private i18nService: AbstractI18nService, protected customPipeManager: CustomPipeManager) {\n super('toDate', customPipeManager);\n }\n}\n\n@Pipe({\n name: 'toNumber'\n})\nexport class ToNumberPipe implements PipeTransform {\n transform(data, fracSize) {\n if (fracSize && !String(fracSize).match(/^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/)) {\n fracSize = '1.' + fracSize + '-' + fracSize;\n }\n if (!isNaN(+data)) {\n const locale = this.i18nService && this.i18nService.getwidgetLocale() ? this.i18nService.getwidgetLocale() : undefined;\n const formattedLocale = locale ? locale['number'] : null;\n return this.decimalPipe.transform(data, fracSize, formattedLocale);\n }\n }\n constructor(private decimalPipe: DecimalPipe, @Inject(AbstractI18nService) private i18nService: AbstractI18nService) {\n }\n}\n\n@Pipe({\n name: 'toCurrency'\n})\nexport class ToCurrencyPipe implements PipeTransform {\n transform(data, currencySymbol, fracSize) {\n const _currencySymbol = (CURRENCY_INFO[currencySymbol] || {}).symbol || currencySymbol || '';\n let _val = new ToNumberPipe(this.decimalPipe, this.i18nService).transform(data, fracSize);\n const isNegativeNumber = startsWith(_val, '-');\n if (isNegativeNumber) {\n _val = _val.replace('-','');\n }\n return _val ? isNegativeNumber ? '-'+ _currencySymbol +_val :_currencySymbol + _val : '';\n }\n\n constructor(private decimalPipe: DecimalPipe, @Inject(AbstractI18nService) private i18nService: AbstractI18nService) {\n }\n}\n\n@Pipe({\n name: 'prefix'\n})\nexport class PrefixPipe implements PipeTransform {\n transform(data, padding) {\n return (isUndefined(data) || data === null || data === '') ? data : ((padding || '') + data);\n }\n}\n\n@Pipe({\n name: 'suffix'\n})\nexport class SuffixPipe implements PipeTransform {\n transform(data, padding) {\n return (isUndefined(data) || data === null || data === '') ? data : (data + (padding || ''));\n }\n}\n\n\n/**\n * Custom pipe: It is work as interceptor between the user custom pipe function and angular pipe\n */\n@Pipe({\n name: 'custom'\n})\nexport class CustomPipe implements PipeTransform {\n constructor(private custmeUserPipe: CustomPipeManager) {\n\n }\n transform(data, pipename) {\n let argumentArr = [];\n for(let i =2 ; i<arguments.length; i++ ){\n argumentArr.push(arguments[i]);\n }\n\n let pipeRef = this.custmeUserPipe.getCustomPipe(pipename);\n if (!pipeRef || !isFunction(pipeRef.formatter)) {\n console.warn('formatter is not defined, please check the custom pipes documentation');\n return data;\n }\n\n try{\n return pipeRef.formatter(data, ...argumentArr);\n } catch(error){\n console.error('Pipe name: '+pipename, error);\n return data;\n }\n }\n}\n\n@Pipe({\n name: 'timeFromNow'\n})\nexport class TimeFromNowPipe implements PipeTransform {\n transform(data) {\n let timestamp;\n if (!isDefined(data)) {\n return undefined;\n }\n timestamp = getEpochValue(data);\n return timestamp ? moment(timestamp).fromNow() : undefined;\n }\n}\n\n@Pipe({\n name: 'numberToString'\n})\nexport class NumberToStringPipe extends ToNumberPipe implements PipeTransform { }\n\n@Pipe({\n name: 'stringToNumber'\n})\nexport class StringToNumberPipe implements PipeTransform {\n transform(data) {\n return Number(data) || undefined;\n }\n}\n\n@Pipe({\n name: 'filter'\n})\nexport class FilterPipe implements PipeTransform {\n transform(data: any[], field: any, value: any) {\n if (!data) {\n return [];\n }\n // If object is passed as first paramter\n if (isObject(field)) {\n return filter(data, field);\n }\n // If key value pair is provided\n return filter(data, item => {\n return includes(item[field], value);\n });\n }\n}\n\n@Pipe({\n name: 'filesize'\n})\nexport class FileSizePipe implements PipeTransform {\n transform(bytes: number, precision: number) {\n const units = [\n 'bytes',\n 'KB',\n 'MB',\n 'GB',\n 'TB',\n 'PB'\n ];\n\n /*Todo[shubham]\n if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) {\n return isMobile() ? '' : '?';\n }*/\n let unit = 0;\n while (bytes >= 1024) {\n bytes /= 1024;\n unit++;\n }\n return bytes.toFixed(+precision) + ' ' + units[unit];\n }\n}\n\n@Pipe({\n name: 'fileIconClass'\n})\nexport class FileIconClassPipe implements PipeTransform {\n transform(fileExtension: any) {\n const fileClassMapping = {\n 'zip' : 'fa-file-zip-o',\n 'pdf' : 'fa-file-pdf-o',\n 'rar' : 'fa-file-archive-o',\n 'txt' : 'fa-file-text-o',\n 'ppt' : 'fa-file-powerpoint-o',\n 'pot' : 'fa-file-powerpoint-o',\n 'pps' : 'fa-file-powerpoint-o',\n 'pptx' : 'fa-file-powerpoint-o',\n 'potx' : 'fa-file-powerpoint-o',\n 'ppsx' : 'fa-file-powerpoint-o',\n 'mpg' : 'fa-file-movie-o',\n 'mp4' : 'fa-file-movie-o',\n 'mov' : 'fa-file-movie-o',\n 'avi' : 'fa-file-movie-o',\n 'mp3' : 'fa-file-audio-o',\n 'docx' : 'fa-file-word-o',\n 'js' : 'fa-file-code-o',\n 'md' : 'fa-file-code-o',\n 'html' : 'fa-file-code-o',\n 'css' : 'fa-file-code-o',\n 'xlsx' : 'fa-file-excel-o',\n 'png' : 'fa-file-image-o',\n 'jpg' : 'fa-file-image-o',\n 'jpeg' : 'fa-file-image-o',\n 'file' : 'fa-file-o',\n 'default' : 'fa-file-o'\n };\n\n return 'fa ' + (fileClassMapping[fileExtension] || 'fa-file-o');\n }\n}\n\n@Pipe({\n name: 'stateClass'\n})\nexport class StateClassPipe implements PipeTransform {\n transform(state) {\n const stateClassMap = {\n 'success' : 'wi wi-done text-success',\n 'error' : 'wi wi-error text-danger'\n };\n return stateClassMap[state.toLowerCase()];\n }\n}\n\n@Pipe({\n name: 'fileExtensionFromMime'\n})\nexport class FileExtensionFromMimePipe implements PipeTransform {\n transform(mimeType: any) {\n const typeMapping = {\n 'audio/aac': '.aac',\n 'application/x-abiword': '.abw',\n 'application/vnd.android.package-archive': '.apk',\n 'video/x-msvideo': '.avi',\n 'application/vnd.amazon.ebook': '.azw',\n 'application/octet-stream': '.bin',\n 'image/bmp': '.bmp',\n 'application/x-bzip': '.bz',\n 'application/x-bzip2': '.bz2',\n 'application/x-csh': '.csh',\n 'text/css': '.css',\n 'text/csv': '.csv',\n 'application/msword': '.doc',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': '.docx',\n 'application/vnd.ms-fontobject': '.eot',\n 'application/epub+zip': '.epub',\n 'application/ecmascript': '.es',\n 'image/gif': '.gif',\n 'text/html': '.html',\n 'image/x-icon': '.ico',\n 'text/calendar': '.ics',\n 'application/java-archive': '.jar',\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'application/javascript': '.js',\n 'application/json': '.json',\n 'audio/midi': '.mid',\n 'audio/x-midi': '.midi',\n 'video/mpeg': '.mpeg',\n 'application/vnd.apple.installer+xml': 'mpkg',\n 'application/vnd.oasis.opendocument.presentation': '.odp',\n 'application/vnd.oasis.opendocument.spreadsheet': '.ods',\n 'application/vnd.oasis.opendocument.text': '.odt',\n 'audio/ogg': '.oga',\n 'video/ogg': '.ogv',\n 'application/ogg': '.ogx',\n 'font/otf': '.otf',\n 'image/png': '.png',\n 'application/pdf': '.pdf',\n 'application/vnd.ms-powerpoint': '.ppt',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': '.pptx',\n 'application/x-rar-compressed': '.rar',\n 'application/rtf': '.rtf',\n 'application/x-sh': '.sh',\n 'image/svg+xml': '.svg',\n 'application/x-shockwave-flash': '.swf',\n 'application/x-tar': '.tar',\n 'image/tiff': '.tiff',\n 'application/typescript': '.ts',\n 'font/ttf': '.ttf',\n 'text/plain': '.txt',\n 'application/vnd.visio': '.vsd',\n 'audio/wav': '.wav',\n 'audio/webm': '.weba',\n 'video/webm': '.webm',\n 'image/webp': '.webp',\n 'font/woff': '.woff',\n 'font/woff2': '.woff2',\n 'application/xhtml+xml': '.xhtml',\n 'application/vnd.ms-excel': '.xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': '.xlsx',\n 'application/xml': '.xml',\n 'application/vnd.mozilla.xul+xml': '.xul',\n 'application/zip': '.zip',\n 'video/3gpp': '.3gp',\n 'audio/3gpp': '.3gp',\n 'video/3gpp2': '.3g2',\n 'audio/3gpp2': '.3g2',\n 'application/x-7z-compressed': '.7z'\n };\n\n return typeMapping[mimeType];\n }\n}\n\n\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl} from '@angular/platform-browser';\n\n@Pipe({\n name: 'trustAs'\n})\nexport class TrustAsPipe implements PipeTransform {\n\n constructor(private domSanitizer: DomSanitizer) {}\n\n transform(content: string, context: string | SecurityContext) {\n if (content === null || content === undefined) {\n return '';\n }\n switch (context) {\n case 'html':\n case SecurityContext.HTML:\n return this.domSanitizer.bypassSecurityTrustHtml(content);\n case 'style':\n case SecurityContext.STYLE:\n return this.domSanitizer.bypassSecurityTrustStyle(content);\n case 'script':\n case SecurityContext.SCRIPT:\n return this.domSanitizer.bypassSecurityTrustScript(content);\n case 'url':\n case SecurityContext.URL:\n return this.domSanitizer.bypassSecurityTrustUrl(content);\n case 'resource':\n case SecurityContext.RESOURCE_URL:\n return this.domSanitizer.bypassSecurityTrustResourceUrl(content);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {isMobile, isMobileApp} from '@wm/core';\nimport {forEach} from \"lodash-es\";\n\nconst openedDialogs = [];\n/*We need closedDialogs array because onHidden event is asynchronous,\nand if the user uses script and calls dialog1.close() and then dialog2.close() then\nwe cannot be sure if both the dialogs onClose callback will be called or not.*/\nconst closeDialogsArray = [];\n\n\n@Injectable()\nexport class DialogServiceImpl {\n\n /**\n * map which contains the references to all dialogs by name\n * @type {Map<any, any>}\n * Ex Map[[dialogName, [[dialogScope, dialogRef]]]]\n */\n private dialogRefsCollection = new Map<any, any>();\n private appConfirmDialog = '_app-confirm-dialog';\n\n constructor() {}\n\n /**\n * Register dialog by name and scope\n * @param {string} name\n * @param {BaseDialog} dialogRef\n * @param {scope}\n */\n public register(name: string, dialogRef: any, scope: any) {\n if (!name) {\n return;\n }\n if (this.dialogRefsCollection.get(name)) {\n this.dialogRefsCollection.get(name).set(scope, dialogRef);\n } else {\n this.dialogRefsCollection.set(name, new Map([[scope, dialogRef]]));\n }\n }\n\n public getDialogRefsCollection() {\n return this.dialogRefsCollection;\n }\n\n /**\n * De Register dialog by name and scope\n * @param name\n * @param dialogRef\n * @param scope\n */\n public deRegister(name: string, scope: any) {\n if (!name) {\n return;\n }\n if (this.dialogRefsCollection.get(name)) {\n this.dialogRefsCollection.get(name).delete(scope);\n }\n }\n\n private getDialogRef(name: string, scope?: any) {\n const dialogRefMap = this.dialogRefsCollection.get(name);\n let dialogRef;\n\n if (scope) {\n dialogRef = dialogRefMap.get(scope);\n if (!dialogRef) {\n // Check if the scope is App level scope\n // else throw a console error\n if (!scope.pageName && !scope.partialName && !scope.prefabName) {\n dialogRefMap.forEach((dRef, dialogScope) => {\n // Check if the collection of dialogs have a \"common\" partial scope\n // If yes use that else through a console error\n if (dialogScope && dialogScope.partialName === 'Common') {\n dialogRef = dRef;\n } else {\n console.error('No dialog with the name \"' + name + '\" found in the App scope.');\n }\n });\n } else {\n console.error('No dialog with the name \"' + name + '\" found in the given scope.');\n }\n }\n } else {\n if (dialogRefMap.size === 1) {\n dialogRef = dialogRefMap.entries().next().value[1];\n } else {\n console.error('There are multiple instances of this dialog name. Please provide the Page/Partial/App instance in which the dialog exists.');\n }\n }\n return dialogRef;\n }\n\n /**\n * Opens the dialog with the given name\n * @param {string} name\n */\n public open(name: string, scope?: any, initState?: any) {\n const dialogRef = this.getDialogRef(name, scope);\n if (!dialogRef) {\n return;\n }\n\n dialogRef.open(initState);\n }\n\n /**\n * closes the dialog with the given name\n * @param {string} name\n */\n public close(name: string, scope?: any, callBackFn?:any) {\n const dialogRef = this.getDialogRef(name, scope);\n if (!dialogRef) {\n return;\n }\n // For notification action variable dialogs onok callback event should be called after closing the dialog.\n // So passing it as callback function\n dialogRef.closeCallBackFn = callBackFn;\n dialogRef.close();\n }\n\n /**\n * closes all the opened dialogs\n */\n closeAllDialogs() {\n forEach(openedDialogs.reverse(), (dialog) => {\n dialog.close();\n });\n }\n\n public showAppConfirmDialog(initState?: any) {\n this.open(this.getAppConfirmDialog(), undefined, initState);\n }\n\n public closeAppConfirmDialog() {\n this.close(this.getAppConfirmDialog());\n }\n\n public getAppConfirmDialog() {\n return this.appConfirmDialog;\n }\n\n public setAppConfirmDialog(dialogName: string) {\n this.appConfirmDialog = dialogName;\n }\n\n public addToOpenedDialogs(ref) {\n openedDialogs.push(ref);\n }\n\n public getLastOpenedDialog() {\n return openedDialogs[openedDialogs.length - 1];\n }\n\n public removeFromOpenedDialogs(ref) {\n if (openedDialogs.indexOf(ref) !== -1) {\n openedDialogs.splice(openedDialogs.indexOf(ref), 1);\n }\n if (openedDialogs.length === 0 && (isMobile() || isMobileApp())) {\n //Fix for [WMS-23948]: remove aria-hidden attribute only after all dialogs are closed\n const parentSelector = $('body > app-root')[0];\n parentSelector.removeAttribute('aria-hidden');\n }\n }\n\n public getOpenedDialogs() {\n return openedDialogs;\n }\n\n public addToClosedDialogs(ref) {\n closeDialogsArray.push(ref);\n }\n\n public removeFromClosedDialogs(ref) {\n if (closeDialogsArray.indexOf(ref) !== -1) {\n closeDialogsArray.splice(closeDialogsArray.indexOf(ref), 1);\n }\n }\n\n public getDialogRefFromClosedDialogs() {\n return closeDialogsArray[closeDialogsArray.length - 1];\n }\n}\n","import {Pipe, PipeTransform, SecurityContext} from \"@angular/core\";\nimport {DomSanitizer, SafeValue} from \"@angular/platform-browser\";\n\n@Pipe({\n name: 'sanitize'\n})\nexport class SanitizePipe implements PipeTransform {\n constructor(private domSanitizer: DomSanitizer) {\n }\n\n transform(content: string | SafeValue, context: string | SecurityContext): string {\n if (content === null || content === undefined) {\n return '';\n }\n switch (context) {\n case 'html':\n case SecurityContext.HTML:\n return this.domSanitizer.sanitize(SecurityContext.HTML, content);\n case 'style':\n case SecurityContext.STYLE:\n return this.domSanitizer.sanitize(SecurityContext.STYLE, content);\n case 'script':\n case SecurityContext.SCRIPT:\n return this.domSanitizer.sanitize(SecurityContext.SCRIPT, content);\n case 'url':\n case SecurityContext.URL:\n return this.domSanitizer.sanitize(SecurityContext.URL, content);\n case 'resource':\n case SecurityContext.RESOURCE_URL:\n return this.domSanitizer.sanitize(SecurityContext.RESOURCE_URL, content);\n case 'none':\n case SecurityContext.NONE:\n return this.domSanitizer.sanitize(SecurityContext.NONE, content);\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\n\nimport { AbstractDialogService } from '@wm/core';\nimport { SecurityModule } from '@wm/security';\n\nimport { ContainerDirective } from './widgets/common/container/container.directive';\nimport { ImagePipe } from './pipes/image.pipe';\nimport { ItemTemplateDirective } from \"./widgets/common/item-template/item-template.directive\";\nimport { RepeatTemplateDirective } from \"./widgets/common/repeat-template/repeat-template.directive\";\nimport { LazyLoadDirective } from './widgets/common/lazy-load/lazy-load.directive';\nimport { MessageComponent } from './widgets/common/message/message.component';\nimport { PartialDirective } from './widgets/common/partial/partial.directive';\nimport {\n PartialParamDirective,\n PartialParamHandlerDirective\n} from './widgets/common/partial-param/partial-param.directive';\nimport { PartialContainerDirective} from \"./widgets/common/base/partial-container.directive\";\nimport { CustomWidgetContainerDirective} from \"./widgets/common/base/custom-widget-container.directive\";\nimport { RedrawableDirective } from './widgets/common/redraw/redrawable.directive';\nimport { ShowInDeviceDirective } from './directives/show-in-device.directive';\nimport { SmoothScrollDirective } from './widgets/common/smooth-scroll/smooth-scroll.directive';\nimport { TextContentDirective } from './widgets/common/base/text-content.directive';\nimport {\n FileExtensionFromMimePipe,\n FileIconClassPipe,\n FileSizePipe,\n FilterPipe,\n NumberToStringPipe,\n PrefixPipe,\n StateClassPipe,\n StringToNumberPipe,\n SuffixPipe,\n TimeFromNowPipe,\n ToCurrencyPipe,\n ToDatePipe,\n ToNumberPipe,\n CustomPipe,\n TrailingZeroDecimalPipe\n} from './pipes/custom-pipes';\nimport { TrustAsPipe } from './pipes/trust-as.pipe';\nimport { DialogServiceImpl } from './widgets/common/dialog/dialog.service';\nimport { SanitizePipe } from \"./pipes/sanitize.pipe\";\n\nconst wmComponents = [\n ContainerDirective,\n ItemTemplateDirective,\n RepeatTemplateDirective,\n LazyLoadDirective,\n MessageComponent,\n PartialDirective,\n PartialParamHandlerDirective,\n PartialParamDirective,\n PartialContainerDirective,\n CustomWidgetContainerDirective,\n RedrawableDirective,\n ShowInDeviceDirective,\n SmoothScrollDirective,\n TextContentDirective\n];\n\nconst PIPES = [\n ToDatePipe,\n FileIconClassPipe,\n FileExtensionFromMimePipe,\n FilterPipe,\n FileSizePipe,\n ToNumberPipe,\n ToCurrencyPipe,\n PrefixPipe,\n SuffixPipe,\n TimeFromNowPipe,\n NumberToStringPipe,\n StateClassPipe,\n StringToNumberPipe,\n TrailingZeroDecimalPipe,\n TrustAsPipe,\n ImagePipe,\n CustomPipe,\n SanitizePipe\n];\n\n@NgModule({\n imports: [\n CommonModule,\n SecurityModule\n ],\n declarations: [...wmComponents, ...PIPES],\n exports: [...wmComponents, ...PIPES]\n})\nexport class WmComponentsModule {\n\n static forRoot(): ModuleWithProviders<WmComponentsModule> {\n return {\n ngModule: WmComponentsModule,\n providers: [\n ToDatePipe,\n FilterPipe,\n TrailingZeroDecimalPipe,\n TrustAsPipe,\n ImagePipe,\n CustomPipe,\n SanitizePipe,\n Location,\n {provide: AbstractDialogService, useClass: DialogServiceImpl}\n ]\n };\n }\n}\n","import { DataSource, debounce, processFilterExpBindNode } from '@wm/core';\nimport { FormWidgetType, isDefined, MatchMode } from '@wm/core';\n\nimport { isDataSetWidget } from './widget-utils';\nimport {\n each,\n filter,\n forEach, get, head,\n includes,\n intersection,\n isArray, isEmpty, isFunction,\n isNull,\n isObject,\n isString,\n isUndefined, keys, replace,\n split\n} from \"lodash-es\";\n\nconst noop = () => { };\n\nexport enum Live_Operations {\n INSERT = 'insert',\n UPDATE = 'update',\n DELETE = 'delete',\n READ = 'read'\n}\n\nexport const ALLFIELDS = 'All Fields';\n\nexport const LIVE_CONSTANTS = {\n 'EMPTY_KEY': 'EMPTY_NULL_FILTER',\n 'EMPTY_VALUE': 'No Value',\n 'LABEL_KEY': 'key',\n 'LABEL_VALUE': 'value',\n 'NULL_EMPTY': ['null', 'empty'],\n 'NULL': 'null',\n 'EMPTY': 'empty'\n};\n\n// Returns true if widget is autocomplete or chips\nexport function isSearchWidgetType(widget) {\n return includes([FormWidgetType.AUTOCOMPLETE, FormWidgetType.TYPEAHEAD, FormWidgetType.CHIPS], widget);\n}\n\nfunction onSuccess(response, res, rej) {\n if (response.error) {\n rej(response);\n } else {\n res(response);\n }\n}\n\nexport function performDataOperation(dataSource, requestData, options): Promise<any> {\n return new Promise((res, rej) => {\n if (dataSource.execute(DataSource.Operation.SUPPORTS_CRUD)) {\n let fn;\n const operationType = options.operationType;\n switch (operationType) {\n case Live_Operations.UPDATE:\n fn = DataSource.Operation.UPDATE_RECORD;\n break;\n case Live_Operations.INSERT:\n fn = DataSource.Operation.INSERT_RECORD;\n break;\n case Live_Operations.DELETE:\n fn = DataSource.Operation.DELETE_RECORD;\n break;\n }\n dataSource.execute(fn, requestData).then(response => onSuccess(response, res, rej), rej);\n } else if (dataSource.execute(DataSource.Operation.IS_API_AWARE)) {\n if(dataSource.category === \"wm.CrudVariable\") {\n const operation = options.operationType === 'insert' ? 'create' : (options.operationType === 'delete' ? 'delete' : 'update');\n dataSource.execute(DataSource.Operation.INVOKE, {\n 'skipNotification': true,\n 'operation': operation,\n 'inputFields': requestData\n }).then(res, rej);\n } else {\n dataSource.execute(DataSource.Operation.SET_INPUT, requestData);\n dataSource.execute(DataSource.Operation.INVOKE, {\n 'skipNotification': true\n }).then(res, rej);\n }\n } else {\n res(requestData);\n }\n });\n}\n\nexport function refreshDataSource(dataSource, options): Promise<any> {\n return new Promise((res, rej) => {\n if (!dataSource) {\n rej();\n return;\n }\n dataSource.execute(DataSource.Operation.LIST_RECORDS, {\n 'filterFields': options.filterFields || {},\n 'orderBy': options.orderBy,\n 'page': options.page || 1,\n 'logicalOp' : options.condition || ''\n }).then(res, rej);\n });\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.fetchRelatedFieldData\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * This function fetches the data for the related field in live form/ grid\n *\n * @param {object} columnDef field definition\n * @param {string} relatedField related field name\n * @param {string} datafield Datafield to be set on widget\n * @param {string} widget Type of the widget\n * @param {object} elScope element scope\n * @param {object} parentScope live form// grid scope\n */\nexport function fetchRelatedFieldData(dataSource, formField, options) {\n let primaryKeys;\n let displayField;\n const relatedField = options.relatedField;\n const datafield = options.datafield;\n\n if (!dataSource) {\n return;\n }\n primaryKeys = dataSource.execute(DataSource.Operation.GET_RELATED_PRIMARY_KEYS, relatedField);\n formField.datafield = datafield;\n formField._primaryKey = isEmpty(primaryKeys) ? undefined : primaryKeys[0];\n formField.compareby = primaryKeys && primaryKeys.join(',');\n\n displayField = datafield === ALLFIELDS ? undefined : datafield;\n formField.displayfield = displayField = (formField.displayfield || displayField || formField._primaryKey);\n\n if (isSearchWidgetType(formField[options.widget])) {\n formField.dataoptions = { 'relatedField': relatedField, 'filterExpr': formField.filterexpressions ? formField.filterexpressions : {} };\n formField.datasource = dataSource;\n formField.searchkey = formField.searchkey || displayField;\n formField.displaylabel = formField.displayfield = (formField.displaylabel || displayField);\n if (formField.showPendingSpinner) {\n formField.showPendingSpinner = false;\n }\n } else {\n interpolateBindExpressions(formField.viewParent, formField.filterexpressions, (filterexpressions) => {\n formField.filterexpressions = filterexpressions;\n dataSource.execute(DataSource.Operation.GET_RELATED_TABLE_DATA, {\n relatedField,\n pagesize: formField.limit,\n orderBy: formField.orderby ? replace(formField.orderby, /:/g, ' ') : '',\n filterFields: {},\n filterExpr: formField.filterexpressions ? formField.filterexpressions : {}\n }).then(response => {\n formField.dataset = response.data;\n formField.displayfield = formField.displayfield || head(keys(get(response, '[0]')));\n if (formField.showPendingSpinner) {\n formField.showPendingSpinner = false;\n }\n }, noop);\n });\n }\n}\n\n/**\n * used to interpolate the bind expression for keys in the query builder\n * @param context where we find the variable obj\n * @param filterexpressions - obj containing all the rule objs\n * @param callbackFn - function to be called with the new replaced values if any in the filterexpressions object\n */\nexport const interpolateBindExpressions = (context, filterexpressions, callbackFn) => {\n const debouncedFn = debounce(() => {\n if (isFunction(callbackFn)) {\n callbackFn(filterexpressions);\n }\n }, 300);\n\n /**\n * calling the debounced function first for the case where if there is any filterexpression without the bindedvariables.\n * without this it will never be called. processFilterExpBindNode will be called only for the binded variable expressions.\n */\n debouncedFn();\n const filterExpressions = filterexpressions ? (isObject(filterexpressions) ? filterexpressions : JSON.parse(filterexpressions)) : {};\n const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : noop;\n const filterSubscription = processFilterExpBindNode(context, filterExpressions).subscribe((response: any) => {\n filterexpressions = JSON.stringify(response.filterExpressions);\n debouncedFn();\n });\n destroyFn(() => filterSubscription.unsubscribe());\n};\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDistinctFieldProperties\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Returns the properties required for dataset widgets\n *\n * @param {object} dataSource variable source for the widget\n * @param {object} formField definition of the column/ field\n *\n */\nexport const getDistinctFieldProperties = (dataSource, formField) => {\n const props: any = {};\n let fieldColumn;\n if (formField['is-related']) {\n props.tableName = formField['lookup-type'];\n fieldColumn = formField['lookup-field'];\n props.distinctField = fieldColumn;\n props.aliasColumn = fieldColumn.replace('.', '$'); // For related fields, In response . is replaced by $\n props.filterExpr = formField.filterexpressions ? (isObject(formField.filterexpressions) ? formField.filterexpressions : JSON.parse(formField.filterexpressions)) : {};\n } else {\n props.tableName = dataSource.execute(DataSource.Operation.GET_ENTITY_NAME);\n fieldColumn = formField.field || formField.key;\n props.distinctField = fieldColumn;\n props.aliasColumn = fieldColumn;\n }\n return props;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDistinctValues\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Returns the distinct values for a field\n *\n * @param {object} formField definition of the column/ field\n * @param {string} widget widget property on the field\n * @param {object} variable variable for the widget\n * @param {function} callBack Function to be executed after fetching results\n *\n */\nexport function getDistinctValues(dataSource, formField, widget) {\n let props;\n\n return new Promise((res, rej) => {\n if (isDataSetWidget(formField[widget]) && (!formField.isDataSetBound || widget === 'filterwidget')) {\n props = getDistinctFieldProperties(dataSource, formField);\n dataSource.execute(DataSource.Operation.GET_DISTINCT_DATA_BY_FIELDS, {\n fields: props.distinctField,\n entityName: props.tableName,\n pagesize: formField.limit,\n filterExpr: formField.filterexpressions ? JSON.parse(formField.filterexpressions) : {}\n }).then(response => {\n res({ 'field': formField, 'data': response.data, 'aliasColumn': props.aliasColumn });\n }, rej);\n }\n });\n}\n\n// Set the data field properties on dataset widgets\nfunction setDataFields(formField, options?) {\n // For search widget, set search key and display label\n if (isSearchWidgetType(formField[options.widget])) {\n formField.datafield = options.aliasColumn || LIVE_CONSTANTS.LABEL_KEY;\n formField.searchkey = options.distinctField || LIVE_CONSTANTS.LABEL_KEY;\n formField.displaylabel = formField.displayfield = (options.aliasColumn || LIVE_CONSTANTS.LABEL_VALUE);\n return;\n }\n formField.datafield = LIVE_CONSTANTS.LABEL_KEY;\n formField.displayfield = LIVE_CONSTANTS.LABEL_VALUE;\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#setFieldDataSet\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to set the dataSet on the fields\n *\n * @param {object} formField definition of the column/ field\n * @param {object} data data returned from the server\n * @param {string} aliasColumn column field name\n * @param {string} widget widget property on the field\n * @param {boolean} isEnableEmptyFilter is null or empty values allowed on filter\n *\n */\nfunction setFieldDataSet(formField, data, options?) {\n const emptySupportWidgets = [FormWidgetType.SELECT, FormWidgetType.RADIOSET];\n const emptyOption = {};\n const dataSet = [];\n if (options.isEnableEmptyFilter && includes(emptySupportWidgets, formField[options.widget]) &&\n !formField['is-range'] && !formField.multiple) {\n // If empty option is selected, push an empty object in to dataSet\n emptyOption[LIVE_CONSTANTS.LABEL_KEY] = LIVE_CONSTANTS.EMPTY_KEY;\n emptyOption[LIVE_CONSTANTS.LABEL_VALUE] = options.EMPTY_VALUE || LIVE_CONSTANTS.EMPTY_VALUE;\n dataSet.push(emptyOption);\n }\n each(data, key => {\n const value = key[options.aliasColumn];\n const option = {};\n if (value !== null && value !== '') {\n option[LIVE_CONSTANTS.LABEL_KEY] = value;\n option[LIVE_CONSTANTS.LABEL_VALUE] = value;\n dataSet.push(option);\n }\n });\n setDataFields(formField, options);\n formField.dataset = dataSet;\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#fetchDistinctValues\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to fetch the distinct values for a field\n *\n * @param {object} scope scope of the widget\n * @param {object} formFields definitions of the column/ field\n * @param {string} widget widget property on the field\n * @param {boolean} isEnableEmptyFilter is null or empty values allowed on filter\n *\n */\nexport function fetchDistinctValues(dataSource, formFields, options) {\n if (isEmpty(formFields)) {\n return;\n }\n formFields.forEach(formField => {\n getDistinctValuesForField(dataSource, formField, options);\n });\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDistinctValuesForField\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to fetch the distinct values for a field\n *\n * @param {object} scope scope of the widget\n * @param {object} formFields definitions of the column/ field\n * @param {string} widget widget property on the field\n * @param {boolean} isEnableEmptyFilter is null or empty values allowed on filter\n *\n */\nexport function getDistinctValuesForField(dataSource, formField, options?) {\n if (!dataSource || !formField || formField.isDataSetBound) {\n return;\n }\n if (isSearchWidgetType(formField[options.widget])) {\n const dataoptions = getDistinctFieldProperties(dataSource, formField);\n formField.dataoptions = dataoptions;\n setDataFields(formField, Object.assign(options || {}, dataoptions));\n formField.datasource = dataSource;\n } else {\n interpolateBindExpressions(formField.viewParent, formField.filterexpressions, (filterexpressions) => {\n formField.filterexpressions = filterexpressions;\n getDistinctValues(dataSource, formField, options.widget).then((res: any) => {\n setFieldDataSet(res.field, res.data, {\n aliasColumn: res.aliasColumn,\n widget: options.widget,\n isEnableEmptyFilter: getEnableEmptyFilter(options.enableemptyfilter),\n EMPTY_VALUE: options.EMPTY_VALUE\n });\n });\n });\n }\n}\n\nfunction isDefinedAndNotEmpty(val) {\n return isDefined(val) && val !== '' && val !== null;\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.getRangeFieldValue\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the field value for range\n *\n * @param {string} minValue min value selected\n * @param {string} maxValue max value selected\n */\nexport function getRangeFieldValue(minValue, maxValue) {\n let fieldValue;\n if (isDefinedAndNotEmpty(minValue) && isDefinedAndNotEmpty(maxValue)) {\n fieldValue = [minValue, maxValue];\n } else if (isDefinedAndNotEmpty(minValue)) {\n fieldValue = minValue;\n } else if (isDefinedAndNotEmpty(maxValue)) {\n fieldValue = maxValue;\n }\n return fieldValue;\n}\n/**\n * @ngdoc function\n * @name wm.widgets.live.getRangeMatchMode\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the match mode for range\n *\n * @param {string} minValue min value selected\n * @param {string} maxValue max value selected\n */\nexport function getRangeMatchMode(minValue, maxValue) {\n let matchMode;\n // If two values exists, then it is between. Otherwise, greater or lesser\n if (isDefinedAndNotEmpty(minValue) && isDefinedAndNotEmpty(maxValue)) {\n matchMode = MatchMode.BETWEEN;\n } else if (isDefinedAndNotEmpty(minValue)) {\n matchMode = MatchMode.GREATER;\n } else if (isDefinedAndNotEmpty(maxValue)) {\n matchMode = MatchMode.LESSER;\n }\n return matchMode;\n}\n/**\n * @ngdoc function\n * @name wm.widgets.live.getEnableEmptyFilter\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * This function checks if enable filter options is set on live filter\n *\n * @param {object} enableemptyfilter empty filter options\n */\nexport function getEnableEmptyFilter(enableemptyfilter) {\n return enableemptyfilter && intersection(enableemptyfilter.split(','), LIVE_CONSTANTS.NULL_EMPTY).length > 0;\n}\n/**\n * @ngdoc function\n * @name wm.widgets.live.getEmptyMatchMode\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the match mode based on the filter selected\n *\n * @param {object} enableemptyfilter empty filter options\n */\nexport function getEmptyMatchMode(enableemptyfilter) {\n let matchMode;\n const emptyFilterOptions = split(enableemptyfilter, ',');\n if (intersection(emptyFilterOptions, LIVE_CONSTANTS.NULL_EMPTY).length === 2) {\n matchMode = MatchMode.NULLOREMPTY;\n } else if (includes(emptyFilterOptions, LIVE_CONSTANTS.NULL)) {\n matchMode = MatchMode.NULL;\n } else if (includes(emptyFilterOptions, LIVE_CONSTANTS.EMPTY)) {\n matchMode = MatchMode.EMPTY;\n }\n return matchMode;\n}\n\n/**\n * converts the data passed to array.\n * -> Array: [1,2,3] - [1,2,3]\n * -> String: a,b,c - ['a','b','c']\n * -> object: {a:1} - [{a:1}]\n * -> null - []\n * -> undefined - []\n * @param data\n * @returns {Array<any>}\n */\nexport const createArrayFrom = (data): Array<any> => {\n\n if (isUndefined(data) || isNull(data)) {\n return [];\n }\n\n if (isString(data)) {\n data = data.split(',').map(Function.prototype.call, String.prototype.trim);\n }\n\n if (!isArray(data)) {\n data = [data];\n }\n\n return data;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.applyFilterOnField\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the updated values when filter on field is changed\n *\n * @param {object} $scope scope of the filter field/form field\n * @param {object} filterDef filter/form definition of the field\n * @param {boolean} isFirst boolean value to check if this method is called on load\n */\nexport function applyFilterOnField(dataSource, filterDef, formFields, newVal, options: any = {}) {\n const fieldName = filterDef.field || filterDef.key;\n const filterOnFields = filter(formFields, {'filter-on': fieldName});\n\n newVal = filterDef['is-range'] ? getRangeFieldValue(filterDef.minValue, filterDef.maxValue) : (isDefined(newVal) ? newVal : filterDef.value);\n if (!dataSource || (options.isFirst && (isUndefined(newVal) || newVal === ''))) {\n return;\n }\n // Loop over the fields for which the current field is filter on field\n forEach(filterOnFields, filterField => {\n const filterKey = filterField.field || filterField.key;\n const lookUpField = filterDef['lookup-field'] || filterDef._primaryKey;\n const filterWidget = filterField['edit-widget-type'] || filterField.widgettype;\n let filterFields = {};\n let filterOn = filterField['filter-on'];\n let filterVal;\n let fieldColumn;\n let matchMode;\n if (!isDataSetWidget(filterWidget) || filterField.isDataSetBound || filterOn === filterKey) {\n return;\n }\n // For related fields, add lookupfield for query generation\n if (filterDef && filterDef['is-related']) {\n filterOn += '.' + lookUpField;\n }\n if (isDefined(newVal)) {\n if (filterDef['is-range']) {\n matchMode = getRangeMatchMode(filterDef.minValue, filterDef.maxValue);\n } else if (getEnableEmptyFilter(options.enableemptyfilter) && newVal === LIVE_CONSTANTS.EMPTY_KEY) {\n matchMode = getEmptyMatchMode(options.enableemptyfilter);\n } else {\n matchMode = MatchMode.EQUALS;\n }\n filterVal = (isObject(newVal) && !isArray(newVal)) ? newVal[lookUpField] : newVal;\n filterFields[filterOn] = {\n 'value': filterVal,\n 'matchMode': matchMode\n };\n } else {\n filterFields = {};\n }\n fieldColumn = filterKey;\n\n if (isSearchWidgetType(filterWidget) && filterField.dataoptions) {\n filterField.dataoptions.filterFields = filterFields;\n } else {\n dataSource.execute(DataSource.Operation.GET_DISTINCT_DATA_BY_FIELDS, {\n 'fields': fieldColumn,\n 'filterFields': filterFields,\n 'pagesize': filterField.limit\n }).then(response => {\n setFieldDataSet(filterField, response.data, {\n aliasColumn: fieldColumn,\n widget: options.widget || 'widgettype',\n isEnableEmptyFilter: getEnableEmptyFilter(options.enableemptyfilter),\n EMPTY_VALUE: options.EMPTY_VALUE\n });\n }, noop);\n }\n });\n}\n\n// Transform data as required by data table\nexport function transformData(dataObject, variableName) {\n let newObj,\n tempArr,\n keys,\n oldKeys,\n numKeys,\n newObject,\n tempObj;\n\n // data sanity testing\n dataObject = dataObject || [];\n // if the dataObject is not an array make it an array\n if (!isArray(dataObject)) {\n // if the data returned is of type string, make it an object inside an array\n if (isString(dataObject)) {\n keys = variableName.substring(variableName.indexOf('.') + 1, variableName.length).split('.');\n oldKeys = [];\n numKeys = keys.length;\n newObject = {};\n tempObj = newObject;\n\n // loop over the keys to form appropriate data object required for grid\n keys.forEach((key, index) => {\n // loop over old keys to create new object at the iterative level\n oldKeys.forEach(oldKey => {\n tempObj = newObject[oldKey];\n });\n tempObj[key] = index === numKeys - 1 ? dataObject : {};\n oldKeys.push(key);\n });\n\n // change the string data to the new dataObject formed\n dataObject = newObject;\n }\n dataObject = [dataObject];\n } else {\n /*if the dataObject is an array and each value is a string, then lite-transform the string to an object\n * lite-transform: just checking if the first value is string and then transforming the object, instead of traversing through the whole array\n * */\n if (isString(dataObject[0])) {\n tempArr = [];\n forEach(dataObject, str => {\n newObj = {};\n newObj[variableName.split('.').join('-')] = str;\n tempArr.push(newObj);\n });\n dataObject = tempArr;\n }\n }\n return dataObject;\n}\n","import { $parseEvent, getClonedObject, getFormattedDate, isDefined, isEqualWithFields } from '@wm/core';\n\nimport { getEvaluatedData, getObjValueByKey } from './widget-utils';\n\nimport { ALLFIELDS } from './data-utils';\nimport { ToDatePipe } from '../pipes/custom-pipes';\nimport {\n cloneDeep,\n filter,\n forEach, get, groupBy, includes,\n isArray, isEqual,\n isNull,\n isObject,\n isString,\n isUndefined, keys,\n orderBy as _orderBy, sortBy,\n split, toLower,\n trim, uniqBy, uniqWith, values\n} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst momentLocale = moment.localeData();\nconst momentCalendarOptions = getClonedObject(momentLocale._calendar);\nconst momentCalendarDayOptions = momentLocale._calendarDay || {\n lastDay: '[Yesterday]',\n lastWeek: '[Last] dddd',\n nextDay: '[Tomorrow]',\n nextWeek: 'dddd',\n sameDay: '[Today]',\n sameElse: 'L'\n };\nconst GROUP_BY_OPTIONS = {\n ALPHABET: 'alphabet',\n WORD: 'word',\n OTHERS: 'Others'\n };\nconst TIME_ROLLUP_OPTIONS = {\n HOUR: 'hour',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n YEAR: 'year'\n };\nconst ROLLUP_PATTERNS = {\n DAY: 'yyyy-MM-dd',\n WEEK: 'w \\'Week\\', yyyy',\n MONTH: 'MMM, yyyy',\n YEAR: 'YYYY',\n HOUR: 'hh:mm a'\n };\n\n/**\n * function to get the ordered dataset based on the given orderby\n */\nexport const getOrderedDataset = (dataSet: any, orderBy: string, innerItem?) => {\n if (!orderBy) {\n return cloneDeep(dataSet);\n }\n\n // The order by only works when the dataset contains list of objects.\n const items = orderBy.split(','),\n fields = [],\n directions = [];\n items.forEach(obj => {\n const item = obj.split(':');\n fields.push(innerItem ? innerItem + '.' + item[0] : item[0]);\n directions.push(item[1]);\n });\n return _orderBy(dataSet, fields, directions);\n};\n\n/**\n * Returns an array of object, each object contain the DataSetItem whose key, value, label are extracted from object keys.\n */\nexport const transformDataWithKeys = (dataSet: any) => {\n const data: DataSetItem[] = [];\n // if the dataset is instance of object (not an array) or the first item in the dataset array is an object,\n // then we extract the keys from the object and prepare the dataset items.\n if (isObject(dataSet[0]) || (isObject(dataSet) && !(dataSet instanceof Array))) {\n // getting keys of the object\n const objectKeys = Object.keys(dataSet[0] || dataSet);\n forEach(objectKeys, (objKey, index) => {\n data.push({\n key: objKey,\n label: objKey,\n value: objKey,\n index: index + 1\n });\n });\n }\n\n return data;\n};\n\n// Converts any type of data to array.\nexport const extractDataAsArray = data => {\n\n if (isUndefined(data) || isNull(data) || trim(data) === '') {\n return [];\n }\n\n if (isString(data)) {\n data = split(data, ',').map(str => str.trim());\n }\n\n if (!isArray(data)) {\n data = [data];\n }\n\n return data;\n};\n\n// This function return always an object containing dataset details.\nexport const convertDataToObject = dataResult => {\n if (isString(dataResult)) {\n dataResult = split(dataResult, ',').map(str => str.trim());\n }\n\n return dataResult;\n};\n\n// This function used to check the search type widget\nconst isSeachWidget = (widgetType) => {\n return widgetType === 'wm-search';\n};\n\n// This function is used to set the groupby field for search/autocomplete\nconst setGroupbyKey = (scope, context, dataSetItem, innerItem) => {\n if (scope && isSeachWidget(scope.widgetType)) {\n if (scope.groupby) {\n if (includes(scope.groupby, '(')) {\n //[Todo-CSP]: can generate expr fn in page based on groupby property on widget\n const groupDataByUserDefinedFn = $parseEvent(scope.groupby);\n (dataSetItem as any).groupby = groupDataByUserDefinedFn(context, {'row': dataSetItem.dataObject || dataSetItem});\n } else {\n (dataSetItem as any).groupby = groupDataByField(scope.groupby, scope.match, innerItem, scope.dateformat, scope.datePipe, scope.appDefaults, dataSetItem);\n }\n } else {\n (dataSetItem as any).groupby = '';\n }\n }\n};\n\n/**\n * The first step in datasetItems creation is data transformation:\n *\n * The dataset can contain one of the following formats and each of them to be converted to the given format;\n *\n * 1) The comma separated string..eg: A,B,C => [{ key: 'A', value: 'A'}, { key: 'B', value: 'B'}, { key: 'C', value: 'C'}]\n * 2) The array of values eg: [1,2,3] => [{ key: 1, value: 1}, { key: 2, value: 2}, { key: 3, value: 3}]\n * 3) an object eg: {name: 'A', age: 20} => [ {key: 'name', value: 'A'}, {key: 'age', value: 20}]\n * 4) an array of objects...eg: [ {name: 'A', age: 20}, {name: 'B', age: 20}] ==> returns [{key: _DATAFIELD_, value: _DISPLAYFIELD, label: _DISPLAYVALUE}]\n */\nexport const transformFormData = (context: any, dataSet: any, myDataField?: string, displayOptions?, startIndex?: number, scope?: any): Array<DataSetItem> => {\n const data = [];\n if (!dataSet) {\n return;\n }\n dataSet = convertDataToObject(dataSet);\n\n // startIndex is the index of the next new item.\n if (isUndefined(startIndex)) {\n startIndex = 1;\n }\n\n if (isString(dataSet)) {\n dataSet = dataSet.split(',').map(str => str.trim());\n dataSet.forEach((option, index) => {\n const dataSetItem = {key: option, value: option, label: (isDefined(option) && option !== null) ? option.toString() : '', index: startIndex + index};\n setGroupbyKey(scope, context, dataSetItem, 'value');\n data.push(dataSetItem);\n });\n } else if (isArray(dataSet) && !isObject(dataSet[0])) { // array of primitive values only\n dataSet.forEach((option, index) => {\n const dataSetItem = {key: option, value: option, label: (isDefined(option) && option !== null) ? option.toString() : '', index: startIndex + index};\n setGroupbyKey(scope, context, dataSetItem, 'value');\n data.push(dataSetItem);\n });\n } else if (!(dataSet instanceof Array) && isObject(dataSet)) {\n const i = 0;\n forEach(dataSet, (value, key) => {\n // @ts-ignore\n const dataSetItem = {key: trim(key), value: key, label: (isDefined(value) && value !== null) ? value.toString() : '',\n index: startIndex,\n dataObject: dataSet\n };\n setGroupbyKey(scope, context, dataSetItem, 'value');\n data.push(dataSetItem);\n });\n } else {\n if (!myDataField) { // consider the datafield as 'ALLFIELDS' when datafield is not given.\n myDataField = ALLFIELDS;\n }\n dataSet.forEach((option, index) => {\n const key = myDataField === ALLFIELDS ? startIndex + index : getObjValueByKey(option, myDataField);\n // Omit all the items whose datafield (key) is null or undefined.\n if (!isUndefined(key) && !isNull(key)) {\n const label = getEvaluatedData(option, {\n field: displayOptions.displayField,\n expression: displayOptions.displayExpr,\n bindExpression: displayOptions.bindDisplayExpr\n }, context);\n const dataSetItem = {\n key: key,\n label: (isDefined(label) && label !== null) ? label.toString() : '',\n value: myDataField === ALLFIELDS ? option : key,\n dataObject: option, // represents the object when datafield is ALLFIELDS. This is used as innerItem while grouping the datasetItems.\n index: startIndex + index\n };\n if (displayOptions.displayImgSrc || displayOptions.bindDisplayImgSrc) {\n (dataSetItem as any).imgSrc = getEvaluatedData(option, {\n expression: displayOptions.displayImgSrc,\n bindExpression: displayOptions.bindDisplayImgSrc\n }, context);\n }\n setGroupbyKey(scope, context, dataSetItem, 'dataObject');\n\n data.push(dataSetItem);\n }\n });\n }\n return data;\n};\n\n/**\n * Private method to get the unique objects by the data field\n */\nexport const getUniqObjsByDataField = (data: Array<DataSetItem>, dataField: string, displayField: string, allowEmptyFields?: boolean) => {\n let uniqData;\n const isAllFields = dataField === ALLFIELDS;\n\n uniqData = isAllFields ? uniqWith(data, isEqual) : uniqBy(data, 'key');\n\n if (!displayField || allowEmptyFields) {\n return uniqData;\n }\n\n // return objects having non empty datafield and display field values.\n return filter(uniqData, (obj) => {\n if (isAllFields) {\n return trim(obj.label);\n }\n return trim(obj.key) && trim(obj.label);\n });\n};\n\n/**\n * This function sets the selectedItem by comparing the field values, where fields are passed by \"compareby\" property.\n * works only for datafield with ALL_FIELDS\n * @param datasetItems list of dataset items.\n * @param compareWithDataObj represents the datavalue (object) whose properties are to be checked against each property of datasetItem.\n * @param compareByField specifies the property names on which datasetItem has to be compared against datavalue object.\n */\nexport const setItemByCompare = (datasetItems: Array<DataSetItem>, compareWithDataObj: Object, compareByField: string) => {\n // compare the fields based on fields given to compareby property.\n forEach(datasetItems, opt => {\n if (isEqualWithFields(opt.value, compareWithDataObj, compareByField)) {\n opt.selected = true;\n return false;\n }\n });\n};\n\n/**\n * This method returns sorted data based to groupkey.\n * Returns a array of objects, each object containing key which is groupKey and data is the sorted data which is sorted by groupby field in the data.\n *\n * @param groupedLiData, grouped data object with key as the groupKey and its value as the array of objects grouped under the groupKey.\n * @param groupBy, string groupby property\n * @returns {any[]}\n */\nconst getSortedGroupedData = (groupedLiData: Object, groupBy: string, orderby: string) => {\n const _groupedData = [];\n forEach(keys(groupedLiData), (groupkey, index) => {\n const liData = getOrderedDataset(groupedLiData[groupkey], orderby, 'dataObject');\n _groupedData.push({\n key: groupkey,\n data: sortBy(liData, data => {\n data._groupIndex = index + 1;\n return get(data, groupBy) || get(data.dataObject, groupBy);\n })\n });\n });\n return _groupedData;\n};\n\n/**\n * This method gets the groupedData using groupby property and match and returns the sorted array of objects.\n *\n * @param compRef represents the component's reference i.e. \"this\" value.\n * @param data represents the dataset i.e array of objects.\n * @param groupby, string groupby property\n * @param match, string match property\n * @param orderby, string orderby property\n * @param dateformat, string dateFormat property\n * @param innerItem, represents the innerItem on which groupby has to be applied. Incase of datasetItems, 'dataObject' contains the full object. Here innerItem is dataObject.\n * @returns {any[]} groupedData, array of objects, each object having key and data.\n */\nexport const groupData = (compRef: any, data: Array<Object | DataSetItem>, groupby: string, match: string, orderby: string, dateformat: string, datePipe: ToDatePipe, innerItem?: string, AppDefaults?: any) => {\n let groupedLiData = {};\n if (includes(groupby, '(')) {\n //[Todo-CSP]: can generate expr fn in page based on groupby property on widget\n const groupDataByUserDefinedFn = $parseEvent(groupby);\n groupedLiData = groupBy(data, val => {\n // @ts-ignore\n return groupDataByUserDefinedFn(compRef.viewParent, {'row': val.dataObject || val});\n });\n } else {\n groupedLiData = getGroupedData(data, groupby, match, orderby, dateformat, datePipe, innerItem, AppDefaults);\n }\n\n return getSortedGroupedData(groupedLiData, groupby, orderby);\n};\n\n/**\n * This method prepares the grouped data.\n *\n * @param fieldDefs array of objects i.e. dataset\n * @param groupby string groupby\n * @param match string match\n * @param orderby string orderby\n * @param dateFormat string date format\n * @param innerItem, item to look for in the passed data\n */\nconst getGroupedData = (fieldDefs: Array<Object | DataSetItem>, groupby: string, match: string, orderby: string, dateFormat: string, datePipe: ToDatePipe, innerItem?: string, AppDefaults?: any) => {\n // For day, set the relevant moment calendar options\n if (match === TIME_ROLLUP_OPTIONS.DAY) {\n momentLocale._calendar = momentCalendarDayOptions;\n }\n\n // handling case-in-sensitive scenario\n // ordering the data based on groupby field. If there is innerItem then apply orderby using the innerItem's containing the groupby field.\n fieldDefs = _orderBy(fieldDefs, fieldDef => {\n const groupKey = get(innerItem ? fieldDef[innerItem] : fieldDef, groupby);\n if (groupKey) {\n return toLower(groupKey);\n }\n });\n\n // extract the grouped data based on the field obtained from 'groupDataByField'.\n const groupedLiData = groupBy(fieldDefs, groupDataByField.bind(undefined, groupby, match, innerItem, dateFormat, datePipe, AppDefaults));\n\n momentLocale._calendar = momentCalendarOptions; // Reset to default moment calendar options\n\n return groupedLiData;\n};\n\n// Format the date with given date format\nexport const filterDate = (value: string | number, format: string, defaultFormat: string, datePipe: ToDatePipe) => {\n if (format === 'timestamp') { // For timestamp format, return the epoch value\n return value;\n }\n\n return getFormattedDate(datePipe, value, format || defaultFormat);\n};\n\n\n/**\n * This method returns the groupkey based on the rollup (match) passed\n *\n * @param concatStr, string containing groupby field value\n * @param rollUp string containing the match property.\n * @param dateformat string containing the date format to display the date.\n */\nconst getTimeRolledUpString = (concatStr: string, rollUp: string, dateformat: string, datePipe?: ToDatePipe, AppDefaults?: any) => {\n let groupByKey,\n strMoment = moment(concatStr),\n dateFormat = dateformat;\n\n const currMoment = moment(),\n getSameElseFormat = function () { // Set the sameElse option of moment calendar to user defined pattern\n return '[' + filterDate(this.valueOf(), dateFormat, ROLLUP_PATTERNS.DAY, datePipe) + ']';\n };\n\n switch (rollUp) {\n case TIME_ROLLUP_OPTIONS.HOUR:\n dateFormat = dateFormat || AppDefaults.timeFormat;\n\n // If date is invalid, check if data is in form of hh:mm a\n if (!strMoment.isValid()) {\n strMoment = moment(new Date().toDateString() + ' ' + concatStr);\n\n if (strMoment.isValid()) {\n // As only time is present, roll up at the hour level with given time format\n momentLocale._calendar.sameDay = function () {\n return '[' + filterDate(this.valueOf(), dateFormat, ROLLUP_PATTERNS.HOUR, datePipe) + ']';\n };\n }\n }\n // round off to nearest last hour\n strMoment = strMoment.startOf('hour');\n momentLocale._calendar.sameElse = getSameElseFormat;\n groupByKey = strMoment.calendar(currMoment);\n break;\n case TIME_ROLLUP_OPTIONS.WEEK:\n groupByKey = filterDate(strMoment.valueOf(), dateFormat, ROLLUP_PATTERNS.WEEK, datePipe);\n break;\n case TIME_ROLLUP_OPTIONS.MONTH:\n groupByKey = filterDate(strMoment.valueOf(), dateFormat, ROLLUP_PATTERNS.MONTH, datePipe);\n break;\n case TIME_ROLLUP_OPTIONS.YEAR:\n groupByKey = strMoment.format(ROLLUP_PATTERNS.YEAR);\n break;\n case TIME_ROLLUP_OPTIONS.DAY:\n dateFormat = dateFormat || AppDefaults.dateFormat;\n strMoment = strMoment.startOf('day'); // round off to current day\n momentLocale._calendar.sameElse = getSameElseFormat;\n groupByKey = strMoment.calendar(currMoment);\n break;\n }\n // If invalid date is returned, Categorize it as Others.\n if (groupByKey === 'Invalid date') {\n return GROUP_BY_OPTIONS.OTHERS;\n }\n return groupByKey;\n};\n\n\n// groups the fields based on the groupby value.\nconst groupDataByField = (groupby: string, match: string, innerItem: string, dateFormat: string, datePipe: ToDatePipe, AppDefaults: any, liData: Object) => {\n // get the groupby field value from the liData or innerItem in the liData.\n let concatStr = get(innerItem ? liData[innerItem] : liData, groupby);\n\n // by default set the undefined groupKey as 'others'\n if (isUndefined(concatStr) || isNull(concatStr) || concatStr.toString().trim() === '') {\n return GROUP_BY_OPTIONS.OTHERS;\n }\n\n // if match prop is alphabetic ,get the starting alphabet of the word as key.\n if (match === GROUP_BY_OPTIONS.ALPHABET) {\n concatStr = concatStr.substr(0, 1);\n }\n\n // if match contains the time options then get the concatStr using 'getTimeRolledUpString'\n if (includes(values(TIME_ROLLUP_OPTIONS), match)) {\n concatStr = getTimeRolledUpString(concatStr, match, dateFormat, datePipe, AppDefaults);\n }\n\n return concatStr;\n};\n\n/**\n * This method toggles all the list items inside the each list group.\n * @param el, component reference on which groupby is applied.\n */\nexport const toggleAllHeaders = (el: any) => {\n const groups = $(el.nativeElement).find('.item-group');\n\n groups.find('.group-list-item').toggle();\n\n // toggle the collapse icon on list header.\n const groupIcons = groups.find('li.list-group-header .app-icon');\n\n if (groupIcons) {\n forEach(groupIcons, (icon) => {\n const $icon = $(icon);\n if ($icon.hasClass('wi-chevron-down')) {\n $icon.removeClass('wi-chevron-down').addClass('wi-chevron-up');\n } else {\n $icon.removeClass('wi-chevron-up').addClass('wi-chevron-down');\n }\n });\n }\n};\n\n/**\n * On list header click, toggle the list items in this group.\n * and also toggle the header icon.\n * @param $event\n */\nexport const handleHeaderClick = ($event: Event) => {\n const selectedGroup = $($event.target as any).closest('.item-group'),\n selectedAppIcon = selectedGroup.find('li.list-group-header .app-icon');\n\n if (selectedAppIcon.hasClass('wi-chevron-down')) {\n selectedAppIcon.removeClass('wi-chevron-down').addClass('wi-chevron-up');\n } else {\n selectedAppIcon.removeClass('wi-chevron-up').addClass('wi-chevron-down');\n }\n\n selectedGroup.find('.group-list-item').toggle();\n};\n\n/**\n * configures reordering the items.\n * @param $el element to be sortable\n * @param options object containing the sortable options.\n * @param startCb callback on drag start on the element.\n * @param updateCb callback triggerred when sorting is stopped and the DOM position has changed.\n * @param sortCb callback triggerred during the sorting of an element.\n */\nexport const configureDnD = ($el: any, options: object, startCb: Function, updateCb: Function, sortCb?: Function) => {\n const sortOptions = Object.assign({\n containment: $el,\n delay: 100,\n opacity: 0.8,\n helper: 'clone',\n zIndex: 1050,\n tolerance: 'pointer',\n start: startCb,\n update: updateCb,\n sort: sortCb\n }, options);\n\n $el.sortable(sortOptions);\n};\n\n// Todo: convert to Class\ninterface DataSetProps {\n datafield: string;\n displayfield?: string;\n displayexpression?: string;\n usekeys?: boolean;\n orderby?: string;\n}\n\n/**\n * key represents the datafield value\n * label represents display value or expression value\n * value displayValue for primitives and data object for allFields\n * dataObject represent the object from the dataset when datafield is ALLFIELDS. This is used as innerItem while grouping the datasetItems.\n * imgSrc picture source\n * selected represents boolean to notify selected item.\n */\nexport class DataSetItem {\n key: any;\n label: any;\n value: any;\n dataObject?: Object;\n index?: number;\n imgSrc?: string;\n selected?: boolean;\n}\n","import { isNumberType, FormWidgetType, DataType, isMobileApp, isAndroid } from '@wm/core';\nimport {forEach, get, includes, split} from \"lodash-es\";\n\nconst VIEW_MODE_OPTIONS = {\n DEFAULT : 'default',\n LABEL : 'label'\n};\n\nexport const EDIT_MODE = {\n QUICK_EDIT : 'quickedit',\n INLINE : 'inline',\n FORM : 'form',\n DIALOG : 'dialog'\n};\n\n// Method to set the header config of the data table\nexport const setHeaderConfig = (headerConfig, config, field, index?: number): void => {\n forEach(headerConfig, cols => {\n if (get(cols, 'isGroup')) {\n if (cols.field === field) {\n cols.columns[index] = config;\n } else {\n setHeaderConfig(cols.columns, config, field, index);\n }\n }\n });\n};\n\nexport const setHeaderConfigForTable = (headerConfig: any, config: any, fieldName: string, index?: number): void => {\n if (fieldName) {\n setHeaderConfig(headerConfig, config, fieldName, index);\n } else {\n headerConfig[index] = config;\n }\n};\n\nexport const getRowOperationsColumn = (): any => {\n return {\n 'field' : 'rowOperations',\n 'type' : 'custom',\n 'displayName' : 'Actions',\n 'width' : '120px',\n 'readonly' : true,\n 'sortable' : false,\n 'searchable' : false,\n 'resizable' : false,\n 'selectable' : false,\n 'show' : true,\n 'operations' : [],\n 'opConfig' : {},\n 'pcDisplay' : true,\n 'mobileDisplay' : true,\n 'tabletDisplay' : true,\n 'include' : true,\n 'isRowOperation': true\n };\n};\n\n/**\n * Returns caption and widget bootstrap classes for the field\n */\nexport const getFieldLayoutConfig = (captionWidth, captionPosition, os): any => {\n let captionCls = '',\n widgetCls = '';\n\n captionPosition = captionPosition || 'top';\n\n if (captionPosition === 'top' || captionPosition === 'floating') {\n if ((os && os === 'android') || !isMobileApp() || isAndroid()) { // Is android or not a mobile application\n captionCls = widgetCls = 'col-xs-12';\n } else if (isMobileApp()) { // Is a mobile application and not android\n captionCls = 'col-xs-4';\n widgetCls = 'col-xs-8';\n }\n } else if (captionWidth) {\n // handling itemsperrow containing string of classes\n forEach(split(captionWidth, ' '), function (cls) {\n const keys = split(cls, '-'),\n tier = keys[0];\n let _captionWidth,\n widgetWidth;\n _captionWidth = parseInt(keys[1], 10);\n widgetWidth = 12 - _captionWidth;\n widgetWidth = widgetWidth <= 0 ? 12 : widgetWidth;\n captionCls += ' ' + 'col-' + tier + '-' + _captionWidth;\n widgetCls += ' ' + 'col-' + tier + '-' + widgetWidth;\n });\n }\n return {\n 'captionCls' : captionCls,\n 'widgetCls' : widgetCls\n };\n};\n\nexport const getDefaultViewModeWidget = widget => {\n if (includes(['checkbox', 'toggle', 'rating'], widget)) {\n return VIEW_MODE_OPTIONS.DEFAULT;\n }\n return VIEW_MODE_OPTIONS.LABEL;\n};\n\nconst parseBooleanValue = value => {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (/^\\d+$/.test(value)) { // Check if the value is a string of number type like '123'\n return +value;\n }\n return value;\n};\n\nexport const parseValueByType = (value, type, widget, trailingzero?) => {\n if (widget) {\n if (widget === FormWidgetType.NUMBER || widget === FormWidgetType.SLIDER || widget === FormWidgetType.CURRENCY) {\n return isNaN(Number(value)) ? null : trailingzero ? value : Number(value);\n }\n if (widget === FormWidgetType.CHECKBOX || widget === FormWidgetType.TOGGLE) {\n return parseBooleanValue(value);\n }\n return value;\n }\n if (isNumberType(type)) {\n return isNaN(Number(value)) ? null : Number(value);\n }\n if (type === DataType.BOOLEAN) {\n return parseBooleanValue(value);\n }\n return value;\n};\n\nconst fieldTypeWidgetTypeMap = {\n 'integer' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'rating', 'slider', 'currency', 'autocomplete', 'chips'],\n 'big_integer': ['number', 'text', 'select', 'checkboxset', 'radioset', 'rating', 'slider', 'currency', 'autocomplete', 'chips'],\n 'short' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'float' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'big_decimal': ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'number' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'double' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'long' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'rating', 'slider', 'currency', 'autocomplete', 'chips'],\n 'byte' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'string' : ['text', 'number', 'textarea', 'password', 'richtext', 'select', 'checkboxset', 'radioset', 'date', 'time', 'timestamp', 'switch', 'currency', 'autocomplete', 'chips', 'colorpicker'],\n 'character' : ['text', 'number', 'textarea', 'password', 'richtext', 'select', 'checkboxset', 'radioset', 'switch', 'currency', 'autocomplete', 'chips'],\n 'text' : ['text', 'number', 'textarea', 'password', 'richtext', 'select', 'checkboxset', 'radioset', 'date', 'time', 'timestamp', 'switch', 'currency', 'autocomplete', 'chips', 'colorpicker'],\n 'date' : ['date', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'time' : ['time', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'timestamp' : ['timestamp', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'datetime' : ['datetime', 'text', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'boolean' : ['checkbox', 'radioset', 'toggle', 'select'],\n 'list' : ['select', 'radioset', 'checkboxset', 'switch', 'autocomplete', 'chips'],\n 'clob' : ['text', 'textarea', 'richtext'],\n 'blob' : ['upload'],\n 'file' : ['upload'],\n 'custom' : ['text', 'number', 'textarea', 'password', 'checkbox', 'toggle', 'slider', 'richtext', 'currency', 'switch',\n 'select', 'checkboxset', 'radioset', 'date', 'time', 'timestamp', 'rating', 'datetime', 'autocomplete', 'chips', 'colorpicker']\n};\n\n// Get widgets applicable to the given type\nexport const getFieldTypeWidgetTypesMap = () => {\n return fieldTypeWidgetTypeMap;\n};\n\n// Get filter widget applicable to the given type\nexport const getDataTableFilterWidget = type => {\n let widget = fieldTypeWidgetTypeMap[type] && fieldTypeWidgetTypeMap[type][0];\n if (type === DataType.BOOLEAN) {\n widget = FormWidgetType.SELECT;\n }\n if (includes([FormWidgetType.TEXT, FormWidgetType.NUMBER, FormWidgetType.SELECT, FormWidgetType.AUTOCOMPLETE,\n FormWidgetType.DATE, FormWidgetType.TIME, FormWidgetType.DATETIME], widget)) {\n return widget;\n }\n return FormWidgetType.TEXT;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.getEditModeWidget\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * This function returns the default widget for grid\n *\n * @param {object} colDef field definition\n */\nexport const getEditModeWidget = colDef => {\n if (colDef['related-entity-name'] && colDef['primary-key']) {\n return FormWidgetType.SELECT;\n }\n return (fieldTypeWidgetTypeMap[colDef.type] && fieldTypeWidgetTypeMap[colDef.type][0]) || FormWidgetType.TEXT;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDefaultValue\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * return the formatted default value\n *\n * @param {string} value value to be formatted\n * @param {string} type column type of the value\n */\nexport const getDefaultValue = (value, type, widget) => {\n if (widget) {\n if (widget === FormWidgetType.NUMBER || widget === FormWidgetType.SLIDER || widget === FormWidgetType.CURRENCY) {\n return isNaN(Number(value)) ? null : Number(value);\n }\n if (widget === FormWidgetType.CHECKBOX || widget === FormWidgetType.TOGGLE) {\n return parseBooleanValue(value);\n }\n return value;\n }\n if (isNumberType(type)) {\n return isNaN(Number(value)) ? null : Number(value);\n }\n if (type === DataType.BOOLEAN) {\n return parseBooleanValue(value);\n }\n return value;\n};\n","import {Inject, Injector, Optional} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport {$appDigest, findValueOf, isObject, isDefined, validateAccessRoles} from '@wm/core';\nimport { SecurityService } from '@wm/security';\n\nimport { createArrayFrom } from '../../../utils/data-utils';\nimport { getEvaluatedData } from '../../../utils/widget-utils';\nimport { getOrderedDataset } from '../../../utils/form-utils';\nimport { StylableComponent } from './stylable.component';\nimport {debounce, first, get, isUndefined, omitBy, startsWith} from \"lodash-es\";\n\nconst getValidLink = (link) => {\n const routRegex = /^(\\/|#\\/|#)(?!\\W).*/;\n if (link) {\n if (routRegex.test(link)) {\n link = first(link.match(/[\\w]+.*/g)) || '';\n return `#/${link}`;\n }\n if (startsWith(link, 'www.')) {\n return `//${link}`;\n }\n return link;\n }\n};\n\nexport class DatasetAwareNavComponent extends StylableComponent {\n\n public nodes: Array<NavNode> = [];\n public dataset: any;\n public itemicon: string;\n public itemlabel: string;\n public itemlink: string;\n public itemtarget: string;\n public itembadge: string;\n public itemchildren: string;\n public itemaction: string;\n public itemclass: string;\n public itemid: string;\n public isactive: string;\n public userrole: string;\n public orderby: string;\n public datafield: string;\n public displayfield: string;\n\n private _itemFieldMap;\n private binditemlabel: string | null;\n private binditemicon: string | null;\n private binditemaction: string | null;\n private binditembadge: string | null;\n private binditemchildren: string | null;\n private binditemlink: string | null;\n private binditemtarget: string | null;\n private binduserrole: string | null;\n private bindisactive: string | null;\n private securityService: any;\n\n protected binditemid: string | null;\n protected nodes$ = new Subject();\n\n constructor(inj: Injector, WIDGET_CONFIG, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.securityService = this.inj.get(SecurityService);\n this.binditemlabel = this.nativeElement.getAttribute('itemlabel.bind');\n this.binditemicon = this.nativeElement.getAttribute('itemicon.bind');\n this.binditemaction = this.nativeElement.getAttribute('itemaction.bind');\n this.binditembadge = this.nativeElement.getAttribute('itembadge.bind');\n this.binditemchildren = this.nativeElement.getAttribute('itemchildren.bind');\n this.binditemid = this.nativeElement.getAttribute('itemid.bind');\n this.binditemlink = this.nativeElement.getAttribute('itemlink.bind');\n this.binditemtarget = this.nativeElement.getAttribute('itemtarget.bind');\n this.binduserrole = this.nativeElement.getAttribute('userrole.bind');\n this.bindisactive = this.nativeElement.getAttribute('isactive.bind');\n }\n\n /**\n * constructs individual node for the widget model.\n * @param fields\n * @param node\n */\n private getNode(fields, node): NavNode {\n const context = this.viewParent.pageScope || this.viewParent;\n const children = getEvaluatedData(node, {\n field: this.itemchildren,\n bindExpression: this.binditemchildren\n }, context) || get(node, fields.childrenField);\n const navNode = {\n action: getEvaluatedData(node, {\n field: this.itemaction,\n bindExpression: this.binditemaction\n }, context) || get(node, fields.actionField),\n badge: getEvaluatedData(node, {\n field: this.itembadge,\n bindExpression: this.binditembadge\n }, context) || get(node, fields.badgeField),\n children: Array.isArray(children) ? this.getNodes(children) : [],\n class: get(node, fields.classField),\n disabled: node.disabled,\n icon: getEvaluatedData(node, {\n field: this.itemicon,\n bindExpression: this.binditemicon\n }, context) || get(node, fields.iconField),\n id: getEvaluatedData(node, {\n field: this.itemid,\n bindExpression: this.binditemid\n }, context) || get(node, fields.idField),\n label: getEvaluatedData(node, {\n field: this.itemlabel,\n bindExpression: this.binditemlabel\n }, context) || get(node, fields.labelField),\n link: getValidLink(getEvaluatedData(node, {\n field: this.itemlink,\n bindExpression: this.binditemlink\n }, context) || get(node, fields.linkField)),\n target: getValidLink(getEvaluatedData(node, {\n field: this.itemtarget,\n bindExpression: this.binditemtarget\n }, context) || get(node, fields.targetField)),\n role: getEvaluatedData(node, {field: this.userrole, bindExpression: this.binduserrole}, context),\n isactive: getEvaluatedData(node, {field: this.isactive, bindExpression: this.bindisactive}, context),\n // older projects have display field & data field property for menu.\n value: this.datafield ? (this.datafield === 'All Fields' ? node : findValueOf(node, this.datafield)) : node\n };\n // @ts-ignore\n return omitBy(navNode, isUndefined);\n }\n\n resetItemFieldMap() {\n this._itemFieldMap = null;\n }\n\n getItemFieldsMap() {\n if (!this._itemFieldMap) {\n this._itemFieldMap = {\n idField: this.itemid || 'itemid',\n iconField: this.itemicon || 'icon',\n labelField: this.itemlabel || 'label',\n linkField: this.itemlink || 'link',\n targetField: this.itemtarget || 'target',\n badgeField: this.itembadge || 'badge',\n childrenField: this.itemchildren || 'children',\n classField: this.itemclass || 'class',\n actionField: this.itemaction || 'action',\n isactiveField: this.isactive || 'isactive'\n };\n }\n return this._itemFieldMap;\n }\n\n /**\n * returns array for the value passed as nv.\n * nv: 'a,b' => [{label:a, value:a}, {label:b, value:b}]\n * nv: [1,2] => [{label:1, value:1}, {label:2, value:2}]\n * nv: [{obj}, {obj}] => [{obj}, {obj}]\n * @param nv\n */\n private prepareNodeDataSet(nv) {\n nv = createArrayFrom(nv);\n return nv.map((val) => {\n if (!isObject(val)) {\n return {\n label: val,\n value: val\n };\n }\n return val;\n });\n }\n\n /**\n * constructs dataset form the nav elements.\n */\n private getNodes(nv = this.dataset || {}): Array<NavNode> {\n let nodes: Array<any> = getOrderedDataset(this.prepareNodeDataSet(nv), this.orderby) || [];\n\n if (nodes.length) {\n const userRole = this.userrole;\n const nodeFields = this.getItemFieldsMap();\n\n nodes = nodes.reduce((result, node) => {\n if (validateAccessRoles(node[userRole], this.securityService.loggedInUser)) {\n result.push(this.getNode(nodeFields, node));\n }\n return result;\n }, []);\n }\n return nodes;\n }\n\n // enable the inherited class to extend this method.\n protected resetNodes() {\n this.resetItemFieldMap();\n this.nodes = this.getNodes();\n $appDigest();\n // notify the node listeners\n this.nodes$.next(null);\n }\n\n // debounce function for reset nodes functions.\n private _resetNodes = debounce(this.resetNodes, 50);\n\n onPropertyChange(key, nv, ov) {\n switch (key) {\n case 'dataset':\n case 'itemicon':\n case 'itemlabel':\n case 'itemlink':\n case 'itemtarget':\n case 'itemclass':\n case 'itemchildren':\n case 'isactive':\n case 'orderby':\n // calls resetnodes method after 50ms. any calls within 50ms will be ignored.\n this._resetNodes();\n break;\n }\n super.onPropertyChange(key, nv, ov);\n }\n}\n\nexport interface NavNode {\n label: string;\n action?: any;\n badge?: string;\n children?: Array<NavNode>;\n class?: string;\n disabled?: boolean;\n icon?: string;\n id?: string;\n link?: string;\n role?: string;\n value?: any;\n}\n","import {Validators} from '@angular/forms';\n\nimport {$unwatch, $watch, FormWidgetType, VALIDATOR} from '@wm/core';\nimport {\n cloneDeep,\n concat,\n extend,\n filter,\n find,\n forEach,\n get,\n isEmpty,\n isFunction,\n keys as _keys,\n toUpper\n} from \"lodash-es\";\n\nconst DEFAULT_VALIDATOR = {\n pattern: 'regexp',\n max: 'maxvalue',\n min: 'minvalue',\n required: 'required',\n maxlength: 'maxchars',\n mindate: 'mindate',\n maxdate: 'maxdate',\n excludedates: 'excludedates',\n excludedays: 'excludedays',\n invalidNumber:'invalidNumber'\n};\n\nexport class BaseFieldValidations {\n private hasValidators;\n\n // Instance of the directive table-column, form-field..\n private instance;\n // Inline form widget\n public formwidget;\n // Widget type\n private widgettype;\n // From control\n private widgetControl;\n // Parent widget context Table, Form..\n private widgetContext;\n // Optional table column type quickedit newrow/ inline edit\n private tableFieldType;\n\n private defaultValidatorMessages: any;\n private _syncValidators: any;\n private _asyncValidatorFn: any;\n\n constructor(instance, formwidget, widgettype, widgetControl, widgetContext, tableFieldType?){\n this.instance = instance;\n this.formwidget = formwidget;\n this.widgettype = widgettype;\n this.widgetControl = widgetControl;\n this.widgetContext = widgetContext;\n\n this.defaultValidatorMessages = [];\n if (tableFieldType) {\n this.tableFieldType = tableFieldType;\n }\n }\n\n // this method returns the collection of supported default validators\n private getDefaultValidators() {\n const _validator = [];\n if (this.instance.required && this.instance.show !== false) {\n // For checkbox/toggle widget, required validation should consider true value only\n if (this.widgettype === FormWidgetType.CHECKBOX || this.widgettype === FormWidgetType.TOGGLE) {\n _validator.push(Validators.requiredTrue);\n } else {\n _validator.push(Validators.required);\n }\n }\n if (this.instance.maxchars) {\n _validator.push(Validators.maxLength(this.instance.maxchars));\n }\n if (this.instance.minvalue) {\n _validator.push(Validators.min(this.instance.minvalue));\n }\n if (this.instance.maxvalue && this.widgettype !== FormWidgetType.RATING) {\n _validator.push(Validators.max(this.instance.maxvalue));\n }\n if (this.instance.regexp) {\n _validator.push(Validators.pattern(this.instance.regexp));\n }\n if (this.formwidget && isFunction(this.formwidget.validate)) {\n _validator.push(this.formwidget.validate.bind(this.formwidget));\n }\n return _validator;\n }\n\n // On change of any validation property, set the angular form validators\n setUpValidators(customValidator?) {\n if (this.hasValidators) {\n return;\n }\n this.instance._validators = this.getDefaultValidators();\n\n if (customValidator) {\n this.instance._validators.push(customValidator);\n }\n\n if (this.widgetContext.ngform) {\n this.widgetControl.setValidators(this.instance._validators);\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.updateValueAndValidity(opt);\n }\n }\n\n getPromiseList(validators) {\n const arr = [];\n forEach(validators, (fn, index) => {\n let promise = fn;\n if (fn instanceof Function && fn.bind) {\n promise = fn(this.widgetControl, this.widgetContext);\n }\n if (promise instanceof Promise) {\n arr.push(promise);\n }\n });\n return arr;\n }\n\n // this method sets the asyncValidation on the form field. Assigns validationmessages from the returned response\n setAsyncValidators(validators) {\n this._asyncValidatorFn = () => {\n return () => {\n return Promise.all(this.getPromiseList(validators)).then(() => {\n this.instance.validationmessage = '';\n return null;\n }, err => {\n // if err obj has validationMessage key, then set validationMessage using this value\n // else return the value of the first key in the err object as validation message.\n if (err.hasOwnProperty('errorMessage')) {\n this.instance.validationmessage = get(err, 'errorMessage');\n } else {\n const keys = _keys(err);\n this.instance.validationmessage = (err[keys[0]]).toString();\n }\n return err;\n }).then(response => {\n // form control status is not changed from pending. This is an angular issue refer https://github.com/angular/angular/issues/13200\n const checkForStatusChange = () => {\n setTimeout(() => {\n if (this.widgetControl.status === 'PENDING') {\n checkForStatusChange();\n } else {\n this.instance.onStatusChange(this.widgetControl.status, this.tableFieldType);\n }\n }, 100);\n };\n checkForStatusChange();\n return response;\n });\n };\n };\n\n this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);\n if(this.widgetContext.ngform.touched){\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.updateValueAndValidity(opt);\n }\n }\n\n isDefaultValidator(type) {\n return get(VALIDATOR, toUpper(type));\n }\n\n // default validator is bound to a function then watch for value changes\n // otherwise set the value of default validator directly\n setDefaultValidator(key, value) {\n if (value && value instanceof Function) {\n // passing formfield and form as arguments to the default validator function\n this.watchDefaultValidatorExpr(value.bind(undefined, this.widgetControl, this.widgetContext), key);\n } else {\n this.instance.widget[key] = value;\n this.instance[key] = value;\n }\n }\n\n // sets the default validation on the form field\n setValidators(validators) {\n let _cloneValidators = cloneDeep(validators);\n this.hasValidators = true;\n this._syncValidators = [];\n forEach(_cloneValidators, (obj, index) => {\n // custom validation is bound to function.\n if (obj && obj instanceof Function) {\n // passing formfield and form as arguments to the obj (i.e. validator function)\n _cloneValidators[index] = obj.bind(undefined, this.widgetControl, this.widgetContext);\n this._syncValidators.push(_cloneValidators[index]);\n } else {\n // checks for default validator like required, maxchars etc.\n const key = get(obj, 'type');\n this.defaultValidatorMessages[key] = get(obj, 'errorMessage');\n if (this.isDefaultValidator(key)) {\n const value = get(obj, 'validator');\n this.setDefaultValidator(key, value);\n _cloneValidators[index] = '';\n }\n }\n });\n\n // _syncValidators contains all the custom validations on the form field. will not include default validators.\n this._syncValidators = filter(_cloneValidators, val => {\n if (val) {\n return val;\n }\n });\n this.applyDefaultValidators();\n }\n\n observeOn(fields, context) {\n forEach(fields, field => {\n const formfield = find(this.widgetContext[context], {'key': field});\n if (formfield) {\n if (!formfield.notifyForFields) {\n formfield.notifyForFields = [];\n }\n formfield.notifyForFields.push(this.instance);\n }\n });\n }\n\n validate() {\n this.applyDefaultValidators();\n if (this._asyncValidatorFn) {\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);\n this.widgetControl.updateValueAndValidity(opt);\n }\n // show the validation erros show when form is touched and not on load. This just highlights the field that is subscribed for changes.\n if (this.widgetContext.ngform.touched) {\n this.widgetControl.markAsTouched();\n }\n }\n\n // watches for changes in the bound function for default validators.\n watchDefaultValidatorExpr(fn, key) {\n const watchName = `${this.instance.widgetId}_` + key + '_formField';\n $unwatch(watchName);\n //[Todo-CSP]: Need clarity generate this expr fn if form is present in the page\n this.instance.registerDestroyListener($watch('boundFn(fn)', extend(this.instance, this.instance.viewParent), {fn}, (nv, ov) => {\n this.instance.widget[key] = nv;\n this.applyDefaultValidators();\n }, watchName));\n }\n isNullOrEmptyOrFalsy(value) {\n return isEmpty(value);\n }\n\n // invokes both custom sync validations and default validations.\n applyDefaultValidators() {\n const validators = this.getDefaultValidators();\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.setValidators(concat(this._syncValidators || [], validators));\n this.widgetControl.updateValueAndValidity(opt);\n this.setCustomValidationMessage();\n }\n\n setCustomValidationMessage() {\n const fieldErrors = this.widgetControl && this.widgetControl.errors;\n\n if (!fieldErrors) {\n return;\n }\n if (fieldErrors.hasOwnProperty('errorMessage')) {\n this.instance.validationmessage = get(fieldErrors, 'errorMessage');\n } else {\n const keys = _keys(fieldErrors);\n const key = keys[0];\n const validationMsgKey = get(DEFAULT_VALIDATOR, key) || this.formwidget.validateType;\n if (validationMsgKey) {\n const msg = get(this.defaultValidatorMessages, validationMsgKey) || this.instance.validationmessage;\n if (msg && msg instanceof Function) {\n // passing formfield and form as arguments to the errorMessage function.\n this.instance.validationmessage = msg(this.widgetControl, this.widgetContext);\n } else {\n this.instance.validationmessage = msg;\n }\n } else {\n // fallback when there is no validationmessage for fields other than default validators.\n this.instance.validationmessage = '';\n }\n }\n }\n}\n","import { SwipeAnimation } from '@swipey';\n\nimport { App, isIos, setCSS } from '@wm/core';\n\ndeclare const $;\n\nexport class PullToRefresh extends SwipeAnimation {\n private infoContainer: JQuery<HTMLElement>;\n private runAnimation: boolean;\n private count = 0;\n private spinner: Spinner;\n public cancelSubscription: Function;\n private animationInProgress: boolean;\n\n constructor(private $el: JQuery<HTMLElement>, private app: App, private onPullToRefresh: () => void) {\n super();\n const template = '<div class=\"refresh-container\"></div>';\n this.$el.prepend(template);\n this.infoContainer = this.$el.find('.refresh-container');\n\n if (isIos()) {\n this.infoContainer.addClass('ios-refresh-container');\n }\n\n this.init(this.$el);\n }\n\n public threshold() {\n return 10;\n }\n\n public direction() {\n return $.fn.swipey.DIRECTIONS.VERTICAL;\n }\n\n private subscribe() {\n // Subscribing for variable updates, wait till the response and stop the animation.\n this.cancelSubscription = this.app.subscribe('toggle-variable-state', (data) => {\n // data.active is true means the variable update has just started whereas false means update has ended.\n if (data.active && this.animationInProgress) {\n this.count++;\n this.wait();\n } else if (this.count > 0) {\n this.count--;\n }\n // call stop animation only when animation has started.\n if (!this.count && this.animationInProgress) {\n this.stopAnimation();\n }\n });\n }\n\n public bounds($event, $d) {\n const pageIscroll = (this.$el[0] as any).iscroll;\n // If scroll position is not at the top of the page then do not trigger the animation.\n if ($d < 0 || (pageIscroll && !isNaN(pageIscroll.y) && pageIscroll.y !== 0)) {\n return {\n lower: undefined,\n upper: undefined\n };\n }\n if (!this.spinner) {\n this.spinner = isIos() ? new IOSSpinner(this.infoContainer) : new AndroidSpinner(this.infoContainer);\n this.subscribe();\n }\n\n return {\n lower: 0,\n center: 0,\n upper: isIos() ? 0 : 150,\n strict: !isIos()\n };\n }\n\n public context(): Object {\n this.infoContainer.show();\n if (isIos()) {\n this.infoContainer.addClass('entry');\n }\n return {\n spin: $d => {\n this.spinner.setRotation($d * 2);\n }\n };\n }\n\n public animation() {\n if (isIos()) {\n return {\n css: {\n transform: 'translate3d(0, ${{$D + $d}}px, 0)',\n spin: '${{spin($d)}}'\n }\n };\n }\n return {\n target: this.infoContainer,\n css: {\n transform: 'translate3d(0, ${{$D + $d}}px, 0)',\n spin: '${{spin($d)}}',\n opacity: '${{min(($D + $d) / 100, 1)}}'\n }\n };\n }\n\n // Start the spinner animation and invokes the pulltorefresh event. Stops the animation after the wait time.\n public onAnimation() {\n this.animationInProgress = true;\n this.spinner.start();\n if (this.onPullToRefresh) {\n this.onPullToRefresh();\n }\n\n setTimeout(() => {\n // if listenToAnimation is set, then wait for stopAnimation to be invoked. Otherwise call stopAnimation manually.\n if (this.runAnimation) {\n return;\n }\n this.stopAnimation();\n });\n }\n\n public stopAnimation() {\n setTimeout(() => {\n this.runAnimation = false;\n this.animationInProgress = false;\n this.spinner.stop();\n this.infoContainer.hide();\n setCSS(this.infoContainer[0], 'transform', 'none');\n if (!isIos()) {\n setCSS(this.infoContainer[0], 'opacity', 0);\n }\n this.infoContainer.removeClass('entry');\n }, 800);\n }\n\n public wait() {\n this.runAnimation = true;\n }\n}\n\n// Interface for Spinner\ninterface Spinner {\n start();\n stop();\n setRotation(d: number);\n}\n\n// Android Spinner implementation\nclass AndroidSpinner implements Spinner {\n private options: Object;\n private initialized: any;\n private cx: number;\n private cy: number;\n private r: number;\n private path: any;\n private intervalId;\n private container: any;\n\n constructor(private $el: JQuery<HTMLElement>, options?: any) {\n this.options = options || {};\n }\n\n\n private polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number): any {\n const angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(angleInRadians)),\n y: centerY + (radius * Math.sin(angleInRadians))\n };\n }\n\n private describeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number): string {\n\n const start = this.polarToCartesian(x, y, radius, endAngle);\n const end = this.polarToCartesian(x, y, radius, startAngle);\n\n const arcSweep = endAngle - startAngle <= 180 ? '0' : '1';\n\n return [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, arcSweep, 0, end.x, end.y,\n 'L', end.x, end.y\n ].join(' ');\n }\n\n public init(): void {\n if (this.initialized) {\n return;\n }\n // append the svg to the element on which spinner has to be shown.\n const androidTemplate = $('<svg><path id=\"arc1\"/></svg>');\n const container = $('<div class=\"android-spinner\"></div>');\n container.append(androidTemplate);\n this.$el.append(container);\n this.cx = container.outerWidth() / 2;\n this.cy = container.outerHeight() / 2;\n this.r = this.cx * 0.6;\n this.path = container.find('path');\n this.initialized = true;\n this.container = container;\n }\n\n // sets rotation to the path\n public setRotation(deg) {\n this.init();\n this.path.attr('d', this.describeArc(this.cx, this.cy, this.r, 0, deg));\n }\n\n // animate the path to rotate continuously with some interval\n public start() {\n this.init();\n const self = this,\n totalTime = (this.options as any).time || 1800,\n degreesToTraverse = 10;\n let i = 0;\n this.container.addClass('spin');\n this.intervalId = setInterval(() => {\n let deg;\n i = i + degreesToTraverse;\n if (i > 720) {\n deg = i = 0;\n } else if (i > 360) {\n deg = 720 - i;\n } else {\n deg = i;\n }\n self.path.attr('d', this.describeArc(self.cx, self.cy, self.r, 0, deg));\n }, (totalTime * degreesToTraverse / 360));\n }\n\n // Removes the animation by clearing the intervals\n public stop() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = 0;\n }\n this.container.removeClass('spin');\n }\n}\n\n// iOS spinner implementation\nclass IOSSpinner implements Spinner {\n private svg: any;\n private intervalId: any;\n\n constructor(private $el) {}\n\n // create the iOS spinner using svg\n private init() {\n if (this.svg) {\n return;\n }\n const container = $('<div class=\"ios-spinner\"><svg></svg></div>');\n const svg = container.find('svg');\n this.$el.append(container);\n const d = container.width();\n for (let i = 0; i < 12; i++) {\n svg[0].innerHTML += `<line y1=\"${0.15 * d}\" y2=\"${0.3 * d}\"\n transform=\"translate(${0.5 * d}, ${0.5 * d}) rotate(${i * 30})\">\n </line>`;\n }\n container.append(svg);\n this.svg = svg;\n }\n\n // Sets the svg to rotate depending on \"d\" value\n public setRotation(d: number): void {\n this.init();\n this.svg.css('transform', `rotateZ( ${Math.round(d / 30) * 30}deg)`);\n }\n\n // Triggers the rotation with some interval\n public start() {\n this.init();\n let i = 0;\n this.intervalId = setInterval(() => {\n i += 10;\n this.setRotation(i);\n }, 20);\n }\n\n // Removes the animation by clearing the intervals\n public stop() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = 0;\n }\n }\n}\n","import { isMobile, setCSS } from '@wm/core';\n\ndeclare const $;\n\nenum CLASS_NAME {\n LEFT_PANEL = 'page-left-panel',\n RIGHT_PANEL = 'page-right-panel',\n SWIPE_ELEM = 'page-left-panel-icon',\n CONTENT = 'app-content-column',\n HEADER = 'page-header',\n SEARCH = 'app-search'\n}\n\n/**\n * method returns jquery class selector for given roleName\n * @param roleName\n * @returns {string}\n */\nconst roleSelector = (roleName: string) => `[data-role='${roleName}']`;\nconst pageSelector = roleSelector(\"pageContainer\");\n/*setup touch event handler*/\nconst bindTapEvtHandler = (selector, handler) => {\n /*\n * In Iphone safari browser, tap event of HammerJs is breaking\n * functionalities of other controls like input[type=\"range\"].\n * So, replaced the hammer Js handler with click event handler.\n */\n if (typeof (selector) === 'string') {\n selector = document.querySelector(selector);\n }\n if (!selector) {\n return;\n }\n // Add js event listeners as the event handlers has to be invoked in angular zone.\n selector.removeEventListener('click', handler);\n selector.addEventListener('click', handler);\n};\n\n/**\n * hide the mobile toolbar actions\n */\nconst hidePageContainers = (leftNavEle: HTMLElement, searchEle?: HTMLElement) => {\n if (isMobile()) {\n if (leftNavEle) {\n try {\n (leftNavEle as any).widget.collapse();\n } catch (e) {\n //\n }\n }\n if (searchEle) {\n setCSS(searchEle, 'display', 'none');\n }\n }\n};\n\n/**\n * binds the touch event for content\n */\nconst bindContentEvents = (leftNavEle: HTMLElement, pageContainer: HTMLElement, searchContainer: any, isTablet = false) => {\n if (!isTablet) {\n // touch content to hide nav pane and left panel\n bindTapEvtHandler(pageContainer, hidePageContainers.bind(this, leftNavEle, searchContainer));\n }\n};\n\nconst bindLeftPanelEvents = (leftNavEle: HTMLElement, searchEle: HTMLElement) => {\n // tap left to show/hide left panel\n bindTapEvtHandler(roleSelector(CLASS_NAME.SWIPE_ELEM), () => {\n if (leftNavEle) {\n (leftNavEle as any).widget.toggle();\n\n // Hide search container when left panel is open\n if (leftNavEle.classList.contains('visible')) {\n if (searchEle) {\n setCSS(searchEle, 'display', 'none');\n }\n }\n }\n });\n};\n\n/**\n * binds the touch event for content\n */\nconst bindRightPanelEvents = (rightNavEle: HTMLElement) => {\n bindTapEvtHandler(rightNavEle, hidePageContainers);\n};\n\n\n/**\n * toggles the search container\n */\nconst toggleSearchContainer = (searchEle: HTMLElement, leftNavEle: HTMLElement) => {\n if ($(searchEle).css('display') === 'none') {\n hidePageContainers(leftNavEle);\n setCSS(searchEle, 'display', 'inline-table');\n } else {\n hidePageContainers(leftNavEle, searchEle);\n }\n};\n\n/**\n * Bind event with Search icon in header\n */\nconst bindSearchIconEvent = (searchElements, leftNavEle: HTMLElement) => {\n\n $(searchElements).each((index, ele: HTMLElement) => {\n const searchEle = $('<a class=\"app-header-action\"><i class=\"wi wi-search\"></i></a>') as JQuery<HTMLElement>;\n $(ele).before(searchEle);\n // Tap icon to show/hide search box\n bindTapEvtHandler(searchEle, () => toggleSearchContainer(ele, leftNavEle));\n });\n\n};\n\nexport const updateDeviceView = (element: HTMLElement, isTablet = false) => {\n\n const leftNavEle = element.querySelector(roleSelector(CLASS_NAME.LEFT_PANEL)) as HTMLElement;\n const rightNavEle = element.querySelector(roleSelector(CLASS_NAME.RIGHT_PANEL)) as HTMLElement;\n const headerEle = element.querySelector(roleSelector(CLASS_NAME.HEADER)) as HTMLElement;\n const searchEle = headerEle && headerEle.querySelector(`.${CLASS_NAME.SEARCH}`) as HTMLElement;\n const pageEle = element.querySelector(`.${CLASS_NAME.CONTENT}`) as HTMLElement;\n\n bindContentEvents(leftNavEle, pageEle, searchEle, isTablet);\n\n if (leftNavEle) {\n bindLeftPanelEvents(leftNavEle, searchEle);\n } else {\n // remove the icon\n $(headerEle).find(roleSelector(CLASS_NAME.SWIPE_ELEM)).remove();\n }\n\n if (rightNavEle) {\n bindRightPanelEvents(rightNavEle);\n }\n\n if (searchEle) {\n bindSearchIconEvent(searchEle, leftNavEle);\n }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["register","registerProps","isObject","DEFAULT_CLS","WIDGET_CONFIG","noop","debounce","i1","i2","filter","orderBy","_orderBy","keys","_keys","this"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../projects/components/base/src/widgets/framework/types.ts","../../../../projects/components/base/src/utils/widget-utils.ts","../../../../projects/components/base/src/widgets/framework/styler.ts","../../../../projects/components/base/src/widgets/framework/widget-props.ts","../../../../projects/components/base/src/widgets/common/container/container.props.ts","../../../../projects/components/base/src/widgets/framework/widget-registry.ts","../../../../projects/components/base/src/widgets/framework/widget-id-generator.ts","../../../../projects/components/base/src/widgets/framework/constants.ts","../../../../projects/components/base/src/widgets/framework/property-change-handler.ts","../../../../projects/components/base/src/widgets/framework/widget-proxy-provider.ts","../../../../projects/components/base/src/widgets/common/base/base.component.ts","../../../../projects/components/base/src/widgets/common/base/stylable.component.ts","../../../../projects/components/base/src/widgets/common/redraw/redrawable.directive.ts","../../../../projects/components/base/src/widgets/common/base/base-container.component.ts","../../../../projects/components/base/src/widgets/common/container/container.directive.ts","../../../../projects/components/base/src/pipes/image.pipe.ts","../../../../projects/components/base/src/widgets/common/item-template/item-template.props.ts","../../../../projects/components/base/src/widgets/common/item-template/item-template.directive.ts","../../../../projects/components/base/src/widgets/common/repeat-template/repeat-template.props.ts","../../../../projects/components/base/src/widgets/common/repeat-template/repeat-template.directive.ts","../../../../projects/components/base/src/widgets/common/lazy-load/lazy-load.directive.ts","../../../../projects/components/base/src/widgets/common/message/message.props.ts","../../../../projects/components/base/src/widgets/common/message/message.component.ts","../../../../projects/components/base/src/widgets/common/message/message.component.html","../../../../projects/components/base/src/widgets/common/partial/partial.props.ts","../../../../projects/components/base/src/widgets/common/partial/partial.directive.ts","../../../../projects/components/base/src/widgets/common/partial-param/partial-param.directive.ts","../../../../projects/components/base/src/widgets/common/base/partial-container.directive.ts","../../../../projects/components/base/src/widgets/common/base/custom-widget-container.directive.ts","../../../../projects/components/base/src/directives/show-in-device.directive.ts","../../../../projects/components/base/src/widgets/common/smooth-scroll/smooth-scroll.directive.ts","../../../../projects/components/base/src/widgets/common/base/text-content.directive.ts","../../../../projects/components/base/src/pipes/wm-pipe.ts","../../../../projects/components/base/src/pipes/custom-pipes.ts","../../../../projects/components/base/src/pipes/trust-as.pipe.ts","../../../../projects/components/base/src/widgets/common/dialog/dialog.service.ts","../../../../projects/components/base/src/pipes/sanitize.pipe.ts","../../../../projects/components/base/src/components.module.ts","../../../../projects/components/base/src/utils/data-utils.ts","../../../../projects/components/base/src/utils/form-utils.ts","../../../../projects/components/base/src/utils/live-utils.ts","../../../../projects/components/base/src/widgets/common/base/dataset-aware-nav.component.ts","../../../../projects/components/base/src/widgets/common/base/base-field-validations.ts","../../../../projects/components/base/src/widgets/common/pull-to-refresh/pull-to-refresh.ts","../../../../projects/components/base/src/widgets/framework/deviceview.ts","../../../../projects/components/base/src/index.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { BaseComponent } from '../common/base/base.component';\n\nexport const WidgetConfig = new InjectionToken<IWidgetConfig>('WidgetConfig');\n\nexport interface IWidgetConfig {\n widgetType: string;\n widgetSubType?: string;\n hostClass?: string;\n displayType?: string;\n}\n\nexport interface IRedrawableComponent {\n redraw: Function;\n}\n\nexport type ChangeListener = (key: string, nv: any, ov?: any) => void;\n\nexport abstract class WidgetRef {}\n\nexport abstract class DialogRef<T extends BaseComponent> {\n bsModal: any;\n}\n\nexport const Context = new InjectionToken('Context Provider Reference');\n\nexport interface IDialog {\n open: (initState?: any) => void;\n close: () => void;\n}\n","import {forwardRef} from '@angular/core';\n\nimport {\n $parseExpr,\n checkIsCustomPipeExpression,\n deHyphenate,\n encodeUrl,\n FormWidgetType,\n getClonedObject,\n initCaps,\n isValidWebURL,\n prettifyLabel,\n stringStartsWith\n} from '@wm/core';\nimport {DialogRef, WidgetRef} from '../widgets/framework/types';\nimport {createFocusTrap} from '@wavemaker/focus-trap';\nimport {NavNode} from \"../widgets/common/base/dataset-aware-nav.component\";\nimport {assignWith, forEach, get, includes, isArray, isNull, isObject, isString, join, split, union} from \"lodash-es\";\n\nconst DATASET_WIDGETS = new Set([FormWidgetType.SELECT, FormWidgetType.CHECKBOXSET, FormWidgetType.RADIOSET,\n FormWidgetType.SWITCH, FormWidgetType.AUTOCOMPLETE, FormWidgetType.CHIPS, FormWidgetType.TYPEAHEAD, FormWidgetType.RATING]);\n/**\n * Returns the parsed, updated bound expression\n * if the expression is $[data[$i][firstName]] + '--' + $[lastName] + '--' + $['@ID@']\n * returns __1.firstName + '--' + lastName + '--' + __1['@ID@']\n */\nconst getUpdatedExpr = (expr: string) => {\n let updated = '', ch, next, i, j, matchCh, matchCount, isQuotedStr, subStr, isQuotedStrEvaluated;\n\n expr = expr.replace(/\\$\\[data\\[\\$i\\]/g, '$[__1');\n\n for (i = 0; i < expr.length; i++) {\n ch = expr[i];\n next = expr[i + 1];\n\n /**\n * if the expression starts with $[, check the next(ch) character,\n * if ch is a quote(', \") change the expr to __[\n * if ch is a whiteSpace, remove it\n * else remove $[\n */\n if (ch === '$' && next === '[') {\n matchCount = 1;\n isQuotedStrEvaluated = false;\n isQuotedStr = false;\n\n for (j = i + 2; j < expr.length; j++) {\n\n matchCh = expr[j];\n\n if (matchCh === ' ') {\n continue;\n }\n\n if (!isQuotedStrEvaluated) {\n isQuotedStr = expr[j] === '\"' || expr[j] === '\\'';\n isQuotedStrEvaluated = true;\n }\n\n if (matchCh === '[') {\n matchCount++;\n } else if (matchCh === ']') {\n matchCount--;\n }\n\n if (!matchCount) {\n subStr = expr.substring(i + 2, j);\n if (isQuotedStr) {\n updated += '__1[' + subStr + ']';\n } else {\n updated += subStr;\n }\n\n break;\n }\n }\n i = j;\n } else {\n updated += ch;\n }\n }\n\n return updated;\n};\n\n/**\n * Returns the value for the provided key in the object\n */\nexport const getObjValueByKey = (obj: any, strKey: string) => {\n /* check for the key-string */\n if (strKey) {\n let val;\n /* convert indexes to properties, so as to work for even 'key1[0].child1'*/\n strKey.replace(/\\[(\\w+)\\]/g, '.$1').split('.').forEach(key => {\n // If obj is null, then assign val to null.\n val = (val && val[key]) || (isNull(obj) ? obj : obj[key]);\n });\n return val;\n }\n return obj;\n};\n\n/**\n * returns the display field data for any dataset widgets\n * Based on the bind display expression or display expression or display name,\n * data is extracted and formatted from the passed option object\n * If there is field is specified, field value is obtained from the dataObj.\n * If expression is given, evaluates the expression value.\n * else check for bindExpression, extract the value from the dataObj\n */\nexport const getEvaluatedData = (dataObj: any, options: any, context?: any) => {\n let expressionValue;\n const field = options.field,\n expr = options.expression,\n bindExpr = options.bindExpression;\n\n // if key is bound expression\n if (bindExpr) {\n // remove 'bind:' prefix from the boundExpressionName\n expressionValue = bindExpr.replace('bind:', '');\n\n // For bind expression passing the last argument that the object of dataset item.\n // Note: For parse expression we are sending dataObj with the propery name \"__1\", we used the same propery to send the last argument as dataset item\n if(checkIsCustomPipeExpression(expressionValue)){\n expressionValue = expressionValue+': __1';\n }\n // parse the expressionValue for replacing all the expressions with values in the object\n expressionValue = getUpdatedExpr(expressionValue);\n } else {\n expressionValue = expr ? expr : field;\n }\n\n // Handling field name with special charecters\n // Ex: field = \"f name\"\n if (!bindExpr && !expr) {\n return get(dataObj, field);\n }\n\n return $parseExpr(expressionValue)(context, Object.assign({}, dataObj, {__1: dataObj}));\n};\n\nexport const isActiveNavItem = (link, routeName) => {\n if (!link || !routeName) {\n return false;\n }\n routeName = routeName.indexOf('?') === -1 ? routeName : routeName.substring(0, routeName.indexOf('?'));\n link = link.indexOf('?') === -1 ? link : link.substring(0, link.indexOf('?'));\n const routeRegex = new RegExp('^(#\\/|#)' + routeName + '$');\n return routeRegex.test(link);\n};\n\n/**\n* returns true if the menu has link to the current page.\n* @param nodes\n* @param routeUrl\n*/\nexport const hasLinkToCurrentPage = (nodes: Array<NavNode>, routeUrl) => {\n return nodes.some(node => {\n if (isActiveNavItem(node.link, routeUrl)) {\n return true;\n }\n if (node.children) {\n return hasLinkToCurrentPage(node.children, routeUrl);\n }\n });\n}\n\n/**\n * Returns the orderBy Expression based on the 'sort 'option in pageable object\n * returned by backend\n * @param pageableObj\n * @returns {string}\n */\nexport const getOrderByExpr = pageableObj => {\n pageableObj = pageableObj || [];\n const expressions = [],\n KEY_VAL_SEPARATOR = ' ',\n FIELD_SEPARATOR = ',';\n forEach(pageableObj, obj => {\n if (obj.direction) {\n expressions.push(obj.property + KEY_VAL_SEPARATOR + obj.direction.toLowerCase());\n }\n });\n\n return join(expressions, FIELD_SEPARATOR);\n};\n\nexport const isDataSetWidget = widget => {\n return DATASET_WIDGETS.has(widget);\n};\n\n/*This function returns the url to the image after checking the validity of url*/\nexport const getImageUrl = (urlString, shouldEncode?, defaultUrl?) => {\n /*In studio mode before setting picturesource, check if the studioController is loaded and new picturesource is in 'styles/images/' path or not.\n * When page is refreshed, loader.gif will be loaded first and it will be in 'style/images/'.\n * Prepend 'services/projects/' + $rootScope.project.id + '/web/resources/images/imagelists/' if the image url is just image name in the project root,\n * and if the url pointing to resources/images/ then 'services/projects/' + $rootScope.project.id + '/web/'*/\n if (isValidWebURL(urlString)) {\n return urlString;\n }\n\n // If no value is provided for picturesource assign pictureplaceholder or default-image\n if (!urlString) {\n urlString = defaultUrl || 'resources/images/imagelists/default-image.png';\n }\n\n urlString = shouldEncode ? encodeUrl(urlString) : urlString;\n\n // if the resource to be loaded is inside a prefab\n if (stringStartsWith(urlString, 'services/prefabs')) {\n return urlString;\n }\n\n return urlString;\n};\n\n/*This method returns the url to the backgroundImage*/\nexport const getBackGroundImageUrl = (urlString) => {\n if (urlString === '' || urlString === 'none') {\n return urlString;\n }\n return 'url(' + getImageUrl(urlString) + ')';\n};\n\nexport function provideAs(reference: any, key: any, multi?: boolean) {\n return {\n provide: key,\n useExisting: forwardRef(() => reference),\n multi: multi\n };\n}\n\nexport function provideAsWidgetRef(reference: any) {\n return provideAs(reference, WidgetRef);\n}\n\nexport function provideAsDialogRef(reference: any) {\n return provideAs(reference, DialogRef);\n}\n\nexport const NAVIGATION_TYPE = {\n ADVANCED: 'Advanced',\n BASIC: 'Basic',\n CLASSIC: 'Classic',\n INLINE: 'Inline',\n NONE: 'None',\n ONDEMAND: 'On-Demand',\n PAGER: 'Pager',\n SCROLL: 'Scroll'\n};\n\nexport const INPUTMODE = {\n FINANCIAL: 'financial',\n NATURAL: 'natural'\n};\n\nexport const AUTOCLOSE_TYPE = {\n OUTSIDECLICK: 'outsideClick',\n ALWAYS: 'always',\n DISABLED: 'disabled'\n}\n\nexport const unsupportedStatePersistenceTypes = ['On-Demand', 'Scroll'];\n\nexport const getWatchIdentifier = (...args) => args.join('_');\n\nconst typesMap = {\n number: ['number', 'integer', 'big_integer', 'short', 'float', 'big_decimal', 'double', 'long', 'byte'],\n string: ['string', 'text'],\n character: ['character'],\n date: ['date', 'time', 'timestamp', 'datetime']\n};\nconst modes = {\n number: ['exact', 'notequals', 'lessthan', 'lessthanequal', 'greaterthan', 'greaterthanequal', 'null', 'isnotnull'],\n string: ['anywhereignorecase', 'anywhere', 'startignorecase', 'start', 'endignorecase', 'end', 'exactignorecase', 'exact', 'notequalsignorecase', 'notequals', 'null', 'isnotnull', 'empty', 'isnotempty', 'nullorempty'],\n character: ['exactignorecase', 'exact', 'notequalsignorecase', 'notequals', 'null', 'isnotnull', 'empty', 'isnotempty', 'nullorempty'],\n date: ['exact', 'lessthan', 'lessthanequal', 'greaterthan', 'greaterthanequal', 'null', 'notequals', 'isnotnull']\n};\nconst matchModeTypesMap = {\n boolean: ['exact', 'null', 'isnotnull'],\n clob: [],\n blob: []\n};\nexport const getMatchModeTypesMap = (multiMode?) => {\n if (multiMode) {\n modes.number.push('in', 'notin', 'between');\n modes.date.push('between');\n modes.string.push('in', 'notin');\n modes.character.push('in', 'notin');\n }\n\n forEach(typesMap, (types, primType) => {\n forEach(types, type => {\n matchModeTypesMap[type] = modes[primType];\n });\n });\n // this is used in filter criteria when the user types the column name manually and where we dont know the type of the column\n matchModeTypesMap['default'] = union(modes['number'], modes['string'], modes['character'], modes['date'], modes['date']);\n return matchModeTypesMap;\n};\n\nexport const getMatchModeMsgs = (appLocale) => {\n return {\n start : appLocale.LABEL_STARTS_WITH,\n startignorecase : appLocale.LABEL_STARTS_WITH_IGNORECASE,\n end : appLocale.LABEL_ENDS_WITH,\n endignorecase : appLocale.LABEL_ENDS_WITH_IGNORECASE,\n anywhere : appLocale.LABEL_CONTAINS,\n anywhereignorecase: appLocale.LABEL_CONTAINS_IGNORECASE,\n exact : appLocale.LABEL_IS_EQUAL_TO,\n exactignorecase : appLocale.LABEL_IS_EQUAL_TO_IGNORECASE,\n notequals : appLocale.LABEL_IS_NOT_EQUAL_TO,\n notequalsignorecase: appLocale.LABEL_IS_NOT_EQUAL_TO_IGNORECASE,\n lessthan : appLocale.LABEL_LESS_THAN,\n lessthanequal : appLocale.LABEL_LESS_THAN_OR_EQUALS_TO,\n greaterthan : appLocale.LABEL_GREATER_THAN,\n greaterthanequal : appLocale.LABEL_GREATER_THAN_OR_EQUALS_TO,\n null : appLocale.LABEL_IS_NULL,\n isnotnull : appLocale.LABEL_IS_NOT_NULL,\n empty : appLocale.LABEL_IS_EMPTY,\n isnotempty : appLocale.LABEL_IS_NOT_EMPTY,\n nullorempty : appLocale.LABEL_IS_NULL_OR_EMPTY,\n in : appLocale.LABEL_IN,\n notin : appLocale.LABEL_NOT_IN,\n between : appLocale.LABEL_BETWEEN\n };\n};\n\n// Returns array of classes that are evaluated true for given object or array\nconst getClassesArray = classVal => {\n let classes = [];\n\n if (isArray(classVal)) {\n classVal.forEach(v => {\n classes = classes.concat(getClassesArray(v));\n });\n return classes;\n }\n if (isObject(classVal)) {\n forEach(classVal, (val, key) => {\n if (val) {\n classes = classes.concat(key.split(' '));\n }\n });\n return classes;\n }\n};\n\nexport const getConditionalClasses = (nv, ov?) => {\n let toAdd;\n let toRemove;\n // if the conditional class property has already toAdd and toRemove arrays then take that otherwise build those arrays\n const classToAdd = nv.toAdd || nv;\n const classToRemove = nv.toRemove || ov;\n if (isObject(nv)) {\n toAdd = isArray(classToAdd) ? classToAdd : getClassesArray(classToAdd || []);\n toRemove = classToRemove ? (isArray(classToRemove) ? classToRemove : getClassesArray(classToRemove)) : [];\n } else {\n toAdd = classToAdd ? [classToAdd] : [];\n toRemove = classToRemove ? [classToRemove] : [];\n }\n return {toAdd, toRemove};\n};\n\n/*helper function for prepareFieldDefs*/\nconst pushFieldDef = (dataObject, columnDefObj, namePrefix, options) => {\n /*loop over the fields in the dataObject to process them*/\n let modifiedTitle,\n relatedTable,\n relatedField,\n relatedInfo,\n fieldName,\n isRelated;\n if (!options) {\n options = {};\n }\n forEach(dataObject, (value, title) => {\n if (includes(title, '.')) {\n relatedInfo = split(title, '.');\n relatedTable = relatedInfo[0];\n relatedField = relatedInfo[1];\n isRelated = true;\n }\n if (options.noModifyTitle) {\n modifiedTitle = title;\n } else {\n if (isString(title)) {\n modifiedTitle = prettifyLabel(title);\n modifiedTitle = deHyphenate(modifiedTitle);\n modifiedTitle = namePrefix ? initCaps(namePrefix) + ' ' + modifiedTitle : modifiedTitle;\n } else {\n modifiedTitle = title;\n }\n }\n title = namePrefix ? namePrefix + '.' + title : title;\n if (isRelated) {\n // For related columns, shorten the title to last two words\n fieldName = split(modifiedTitle, ' ');\n fieldName = fieldName.length > 1 ? fieldName[fieldName.length - 2] + ' ' + fieldName[fieldName.length - 1] : fieldName[0];\n } else {\n fieldName = modifiedTitle;\n }\n const defObj = options.setBindingField ? {'displayName': fieldName, 'field': title, 'relatedTable': relatedTable, 'relatedField': relatedField || modifiedTitle}\n : {'displayName': fieldName, 'relatedTable': relatedTable, 'relatedField': relatedField || modifiedTitle};\n /*if field is a leaf node, push it in the columnDefs*/\n if (!isObject(value) || (isArray(value) && !value[0])) {\n /*if the column counter has reached upperBound return*/\n if (options.upperBound && options.columnCount === options.upperBound) {\n return;\n }\n columnDefObj.terminals.push(defObj);\n /*increment the column counter*/\n options.columnCount += 1;\n } else {\n /*else field is an object, process it recursively*/\n /* if parent node to be included, include it */\n if (options.columnCount !== options.upperBound) {\n columnDefObj.objects.push(defObj);\n }\n\n /* if field is an array node, process its first child */\n if (isArray(value) && value[0]) {\n pushFieldDef(value[0], columnDefObj, title + '[0]', options);\n } else {\n pushFieldDef(value, columnDefObj, title, options);\n }\n }\n });\n};\n\nconst getMetaDataFromData = (data) => {\n let dataObject;\n if (isArray(data)) {\n if (isObject(data[0])) {\n dataObject = getClonedObject(data[0]);\n /*Loop over the object to find out any null values. If any null values are present in the first row, check and assign the values from other row.\n * As column generation is dependent on data, for related fields if first row value is null, columns are not generated.\n * To prevent this, check the data in other rows and generate the columns. New keys from others rows are also added*/\n forEach(data, (row, index) => {\n if ((index + 1) >= 10) { // Limit the data search to first 10 records\n return false;\n }\n assignWith(dataObject, row, (objValue, srcValue) => {\n return (objValue === null || objValue === undefined) ? srcValue : objValue;\n });\n });\n } else {\n dataObject = data[0];\n }\n } else {\n dataObject = data;\n }\n return dataObject;\n};\n\nexport const prepareFieldDefs = (data, options?) => {\n let dataObject;\n const columnDef = {\n 'objects' : [],\n 'terminals' : []\n };\n /*if no data provided, initialize default column definitions*/\n if (!data) {\n data = [];\n }\n if (!options) {\n options = {};\n }\n options.setBindingField = true;\n options.columnCount = 0;\n dataObject = getMetaDataFromData(data);\n /*first of the many data objects from grid data*/\n pushFieldDef(dataObject, columnDef, '', options);\n if (!options || (options && !options.filter)) {\n return columnDef.terminals;\n }\n switch (options.filter) {\n case 'all':\n return columnDef;\n case 'objects':\n return columnDef.objects;\n case 'terminals':\n return columnDef.terminals;\n }\n return columnDef;\n};\n\n\n/**\n * To get container target element to append the list for search and datepicker panel when field present in dialog\n */\nexport const getContainerTargetClass = (element) => {\n return '.wm-app';\n\n // Below code is not working when we have nested dialogs.\n // Nested dialogs case we will have multiple '.modal-content' classes on DOM due to that container positions is not working as expected.\n // Below code to fix the issue ==> WMS-18751\n // As regression we got ==> WMS-19835\n\n // if (element.closest('.modal-dialog')) {\n // return '.modal-content';\n // } else {\n // return 'body';\n // }\n\n}\n\n/**\n * To extract the Variable Name from a Widget's binddatasource attribute\n */\nexport const extractDataSourceName = (bindDataSource) => {\n if (!bindDataSource) {\n return;\n }\n let dataSourceName;\n const parts = bindDataSource.split('.');\n if (parts.length > 1 && parts[0] === 'Variables') {\n dataSourceName = parts[1];\n }\n return dataSourceName;\n}\n\nexport const setFocusTrap = (container, allowOutsideClick, setReturnFocusElement?) => {\n return createFocusTrap(container, {\n onActivate: () => container.classList.add('is-active'),\n onDeactivate: () => container.classList.remove('is-active'),\n allowOutsideClick: allowOutsideClick,\n setReturnFocus: setReturnFocusElement,\n });\n}\n\n/**\n * Gets keyboard focusable elements within a specified element\n * @param element {HTMLElement}\n * @returns {Array}\n */\nexport const getKeyboardFocusableElements = (element: HTMLElement) => {\n const elementNodeList = element.querySelectorAll('a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable]');\n const elements = Array.from(elementNodeList);\n return elements.filter(el => {\n return (!el.hasAttribute('disabled') && !el.hasAttribute('hidden')\n && (!el.hasAttribute('tabindex') || (el.hasAttribute('tabindex') && !el.getAttribute(\"tabindex\").startsWith('-'))));\n });\n}\n","import { setCSS } from '@wm/core';\n\nimport { getBackGroundImageUrl } from '../../utils/widget-utils';\nimport { StylableComponent } from '../common/base/stylable.component';\n\nexport enum APPLY_STYLES_TYPE {\n CONTAINER,\n SCROLLABLE_CONTAINER,\n INNER_SHELL,\n SHELL\n}\n\nexport const propNameCSSKeyMap = {\n 'backgroundattachment': 'backgroundAttachment',\n 'backgroundcolor': 'backgroundColor',\n 'backgroundgradient': 'backgroundGradient',\n 'backgroundimage': 'backgroundImage',\n 'backgroundposition': 'backgroundPosition',\n 'backgroundrepeat': 'backgroundRepeat',\n 'backgroundsize': 'backgroundSize',\n 'bordercolor': 'borderColor',\n 'borderradius': 'borderRadius',\n 'borderstyle': 'borderStyle',\n 'borderwidth': 'borderWidth',\n 'borderbottomwidth': 'borderBottomWidth',\n 'borderleftwidth': 'borderLeftWidth',\n 'borderrightwidth': 'borderRightWidth',\n 'bordertopwidth': 'borderTopWidth',\n 'color': 'color',\n 'cursor': 'cursor',\n 'display': 'display',\n 'fontsize': 'fontSize',\n 'fontfamily': 'fontFamily',\n 'fontstyle': 'fontStyle',\n 'fontunit': 'fontunit',\n 'fontvariant': 'fontVariant',\n 'fontweight': 'fontWeight',\n 'height': 'height',\n 'horizontalalign': 'textAlign',\n 'lineheight': 'lineHeight',\n 'margin': 'margin',\n 'marginbottom': 'marginBottom',\n 'marginleft': 'marginLeft',\n 'marginright': 'marginRight',\n 'margintop': 'marginTop',\n 'opacity': 'opacity',\n 'overflow': 'overflow',\n 'padding': 'padding',\n 'paddingbottom': 'paddingBottom',\n 'paddingleft': 'paddingLeft',\n 'paddingright': 'paddingRight',\n 'paddingtop': 'paddingTop',\n 'picturesource': 'backgroundImage',\n 'textalign': 'textAlign',\n 'textdecoration': 'textDecoration',\n 'verticalalign': 'verticalAlign',\n 'visibility': 'visibility',\n 'whitespace': 'whiteSpace',\n 'width': 'width',\n 'wordbreak': 'wordbreak',\n 'zindex': 'zIndex'\n};\n\nexport const isStyle = key => !!propNameCSSKeyMap[key];\n\nconst MAP_SHELL_TYPE_IGNORE_LIST = {\n height: true,\n overflow: true,\n padding: true,\n paddingbottom: true,\n paddingleft: true,\n paddingright: true,\n paddingtop: true\n};\n\nconst MAP_CONTAINER_TYPE_IGNORE_LIST = {\n textalign: true\n};\n\nconst MAP_SCROLLABLE_CONTAINER_TYPE_IGNORE_LIST = {\n textalign: true,\n width: true\n};\n\n\nexport function styler($node: HTMLElement, component: StylableComponent, type?: APPLY_STYLES_TYPE, skipList?: Array<string>) {\n // apply init styles;\n const skipListMap = Object.create(null);\n if (skipList) {\n skipList.forEach(k => skipListMap[k] = true);\n }\n\n component.registerStyleChangeListener((key, nv) => {\n\n if (skipListMap[key]) {\n return;\n }\n\n // if the type is `shell` and the key is in the SHELL_TYPE_IGNORE_LIST, return\n if (type === APPLY_STYLES_TYPE.SHELL && MAP_SHELL_TYPE_IGNORE_LIST[key]) {\n return;\n }\n\n // if the type is `inner-shell` and the key is NOT in the SHELL_TYPE_IGNORE_LIST, return\n if (type === APPLY_STYLES_TYPE.INNER_SHELL) {\n if (!MAP_SHELL_TYPE_IGNORE_LIST[key]) {\n return;\n }\n if (key === 'height') {\n setCSS($node, 'overflow', nv ? 'auto' : '');\n }\n }\n\n // if the type is `container` and the key is in the CONTAINER_TYPE_IGNORE_LIST, return\n if (type === APPLY_STYLES_TYPE.CONTAINER && MAP_CONTAINER_TYPE_IGNORE_LIST[key]) {\n return;\n }\n\n if (type === APPLY_STYLES_TYPE.SCROLLABLE_CONTAINER) {\n if (MAP_SCROLLABLE_CONTAINER_TYPE_IGNORE_LIST[key]) {\n return;\n }\n\n if (key === 'height') {\n setCSS($node, 'overflow', nv ? 'auto' : '');\n }\n }\n\n if (key === 'fontsize' || key === 'fontunit') {\n setCSS($node, 'fontSize', component.fontsize === '' ? '' : component.fontsize + (component.fontunit || 'px'));\n } else if (key === 'backgroundimage') {\n setCSS($node, 'backgroundImage', component.picturesource || getBackGroundImageUrl(nv));\n } else if (propNameCSSKeyMap[key]) {\n setCSS($node, propNameCSSKeyMap[key], nv);\n }\n });\n}\n","import { FormWidgetType } from '@wm/core';\n\ndeclare const window;\nconst formFieldPrefix = 'wm-form-field-';\n// map of widgetSubType vs WidgetProps\nconst widgetProps = (() => {\n const props = new Map<string, Map<string, any>>();\n for (const key in FormWidgetType) {\n props.set(formFieldPrefix + FormWidgetType[key], new Map<string, any>());\n }\n return props;\n})();\n\n// returns the widgetPropsMap associated with the given identifier\nexport const getWidgetPropsByType = (identifier: string): Map<string, any> => widgetProps.get(identifier);\n\n// register the widgetProps with the given identifier\nexport const register = (identifier: string, props: Map<string, any>) => {\n widgetProps.set(identifier, props);\n window.WM_LOADED_COMPONENTS = [...window.WM_LOADED_COMPONENTS || [], identifier ];\n};\n\nexport const registerFormWidget = (identifier: string, props: Map<string, any>) => {\n const widgetName = formFieldPrefix + identifier;\n const existingProps = widgetProps.get(widgetName);\n if (existingProps) {\n props.forEach((v: any, k) => existingProps.set(k, v));\n }\n};\n\nexport enum PROP_TYPE {\n BOOLEAN = 1,\n NUMBER,\n STRING\n}\n\nexport const PROP_STRING: any = {type: PROP_TYPE.STRING};\nexport const PROP_NUMBER: any = {type: PROP_TYPE.NUMBER};\nexport const PROP_BOOLEAN: any = {type: PROP_TYPE.BOOLEAN};\nexport const PROP_ANY: any = {arrayType: true};\n","import { PROP_ANY, PROP_BOOLEAN, PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-container',\n new Map(\n [\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['conditionalclass', PROP_ANY],\n ['conditionalstyle', PROP_ANY],\n ['content', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ]\n )\n );\n};\n","import { isDefined } from '@wm/core';\n\n/**\n * Widget Registry\n */\nconst registryById = new Map<string, any>();\n\n/**\n * returns the widget by the given widgetId\n */\nexport const getById = (widgetId: string) => registryById.get(widgetId);\n\n\n/**\n * Registers the Widget with the given id and name\n * Makes the Widget available with the viewParent\n * returns unRegister method\n */\nexport const register = (widget: any, viewParent: any, widgetId: string, name?: string): () => void => {\n let registered = false;\n registryById.set(widgetId, widget);\n if (name) {\n if (isDefined(viewParent.Widgets)) {\n registered = true;\n viewParent.Widgets[name] = widget;\n }\n }\n\n // Unregister method.\n return () => {\n registryById.delete(widgetId);\n if (registered) {\n viewParent.Widgets[name] = undefined;\n }\n };\n};\n\n/**\n * Deregisters the oldname in widgets registry and sets new name\n */\nexport const renameWidget = (viewParent: any, widget: any, nv: string, ov?: string) => {\n if (!isDefined(viewParent.Widgets)) {\n return;\n }\n if (ov) {\n viewParent.Widgets[ov] = undefined;\n }\n if (nv) {\n viewParent.Widgets[nv] = widget;\n }\n};\n","import { IDGenerator } from '@wm/core';\n\nexport const widgetIdGenerator = new IDGenerator('widget-id');\n","\nexport const EVENTS_MAP = new Map<string, string>([\n // ['enterkeypress', 'keypress.enter']\n ['tap', 'click']\n]);\n\n\n// TODO: Implement touch events for the mobile\n\nexport const DISPLAY_TYPE = {\n BLOCK: 'block',\n INLINE_BLOCK: 'inline-block',\n INLINE: 'inline'\n};\n\n// set of boolean attrs\nconst BOOLEAN_ATTRS = new Set([\n 'readonly', 'autofocus', 'disabled', 'startchecked', 'multiple',\n 'selected', 'required', 'controls', 'autoplay', 'loop', 'muted', 'show'\n]);\n\n/**\n * Returns true if the provided key is a boolean attribute\n * @param {string} key\n * @returns {boolean}\n */\nexport const isBooleanAttr = (key: string): boolean => BOOLEAN_ATTRS.has(key);\n\nconst DIMENSION_PROPS = new Set([\n 'width',\n 'height',\n 'iconheight',\n 'iconwidth',\n 'popoverwidth',\n 'popoverheight',\n 'imagewidth',\n 'imageheight'\n]);\n\nexport const isDimensionProp = (key: string): boolean => DIMENSION_PROPS.has(key);\n\nexport const DEBOUNCE_TIMES = {\n PAGINATION_DEBOUNCE_TIME : 250\n};\n","import { $appDigest, $unwatch, isChangeFromWatch, isObject, resetChangeFromWatch, toBoolean, toDimension } from '@wm/core';\n\nimport { BaseComponent } from '../common/base/base.component';\nimport { getWidgetPropsByType, PROP_TYPE } from './widget-props';\nimport { isStyle } from './styler';\nimport { getConditionalClasses, getWatchIdentifier } from '../../utils/widget-utils';\nimport { isBooleanAttr, isDimensionProp } from './constants';\nimport {startsWith} from \"lodash-es\";\n\n/**\n * Returns the parsed value based on the provided type\n * if the type is PROP_TYPE.NUMBER returns a number/NaN\n * if the type is PROP_BOOLEAN returns true/false\n * else returns the same value without any type conversion\n *\n * @param {string} key\n * @param value\n * @param {PROP_TYPE} type\n * @returns {any}\n */\nconst parseValue = (key: string, value: any, type: PROP_TYPE): any => {\n if (type === PROP_TYPE.BOOLEAN) {\n return toBoolean(value, isBooleanAttr(key) && key);\n }\n\n if (type === PROP_TYPE.NUMBER) {\n return +value;\n }\n\n return value;\n};\n\n\n/**\n * Whenever a property on a component changes through a proxy this method will be triggered\n * If the new value is not from a watch, the existing watch on that particular property will be removed\n * This method invokes the defaultPropertyChange handler where the common widget properties like name, class are handled\n * Notifies the component about the style/property change\n */\nexport const globalPropertyChangeHandler = (component: BaseComponent, key: string, nv: any) => {\n const widgetId = component.widgetId;\n const ov = component[key];\n\n // if the change is not from the bound watch, remove the existing watch\n if (!isChangeFromWatch()) {\n $unwatch(getWatchIdentifier(widgetId, key));\n }\n\n resetChangeFromWatch();\n\n const widgetProps = getWidgetPropsByType(component.getWidgetSubType());\n const propInfo = widgetProps ? widgetProps.get(key) : undefined;\n if (propInfo) {\n const type = propInfo.type;\n if (type) {\n nv = parseValue(key, nv, type);\n }\n }\n\n // Set the value in the component and trigger appDigest when there is a change in the value\n if (nv !== ov || isObject(nv) || isObject(ov)) {\n\n if (isDimensionProp(key)) {\n nv = toDimension(nv);\n } else if (startsWith(nv, 'resources/')) {\n const ref: any = component;\n if (ref._parentPrefab_ === undefined) {\n ref._parentPrefab_ = component.$element.parent().closest('[prefabname][prefabname!=\"__self__\"]').attr('prefabname') || '';\n }\n if (ref._parentPrefab_) {\n nv = `./app/prefabs/${ref._parentPrefab_}/${nv}`;\n } else if(propInfo && nv != propInfo.value) {\n nv = './' + nv;\n }\n }\n\n component[key] = nv;\n\n if (isStyle(key)) {\n component.notifyStyleChange(key, nv, ov);\n } else {\n\n if (key === 'conditionalclass') {\n nv = getConditionalClasses(nv, ov);\n }\n\n if (propInfo) {\n component.notifyPropertyChange(key, nv, ov);\n }\n }\n\n $appDigest();\n }\n};\n","/**\n * Proxy Provider - Creates a JS proxy for the given object\n */\nimport { propNameCSSKeyMap } from './styler';\nimport { globalPropertyChangeHandler } from './property-change-handler';\nimport { BaseComponent } from '../common/base/base.component';\nimport {isFunction, startsWith} from \"lodash-es\";\n\n/**\n * proxy handler for the components\n */\nexport const proxyHandler = {\n set: (target: BaseComponent, key: string, value: any): boolean => {\n globalPropertyChangeHandler(target, key, value);\n return true;\n },\n get: (target: BaseComponent, key: string): any => {\n const v = target[key];\n if (isFunction(v)) { // bind the proper context for the methods\n return v.bind(target);\n }\n return v;\n }\n};\n\nconst $RAF = window.requestAnimationFrame;\nconst $RAFQueue = [];\n\nconst invokeLater = fn => {\n if (!$RAFQueue.length) {\n $RAF(() => {\n $RAFQueue.forEach(f => f());\n $RAFQueue.length = 0;\n });\n }\n $RAFQueue.push(fn);\n};\n\nexport class WidgetProxyProvider {\n public static create(instance: BaseComponent, widgetSubType: string, propsByWidgetSubType: Map<string, any>) {\n // If the native Proxy is supported\n if ((window as any).Proxy) {\n return new Proxy(instance, proxyHandler);\n } else {\n\n // If the native Proxy is not supported, IE11\n const widget = Object.create(instance);\n\n // bind proper context for the methods\n invokeLater(() => {\n for (const key in instance) {\n if (isFunction(instance[key]) && key !== 'constructor' && key !== 'super' && !startsWith(key, 'ng')) {\n instance[key] = instance[key].bind(instance);\n }\n }\n });\n\n // define setters and getters for styles\n Object.keys(propNameCSSKeyMap)\n .forEach(key => {\n Object.defineProperty(widget, key, {\n get: () => instance[key],\n set: nv => globalPropertyChangeHandler(instance, key, nv)\n });\n });\n\n // define the setters and getters for Props\n if (propsByWidgetSubType) {\n propsByWidgetSubType\n .forEach((value, key) => {\n Object.defineProperty(widget, key, {\n get: () => instance[key],\n set: nv => globalPropertyChangeHandler(instance, key, nv)\n });\n });\n }\n\n return widget;\n }\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ElementRef,\n Inject,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n ViewContainerRef\n} from '@angular/core';\nimport {EventManager} from '@angular/platform-browser';\n\nimport {ReplaySubject, Subject} from 'rxjs';\n\nimport {\n $invokeWatchers,\n $parseEvent,\n $unwatch,\n $watch,\n addClass,\n App,\n findParent,\n isDefined,\n isMobileApp,\n removeAttr,\n removeClass,\n setAttr,\n setCSS,\n setCSSFromObj,\n switchClass\n} from '@wm/core';\n\nimport {getWidgetPropsByType} from '../../framework/widget-props';\nimport {isStyle} from '../../framework/styler';\nimport {register, renameWidget} from '../../framework/widget-registry';\nimport {ChangeListener, Context, IWidgetConfig, WidgetConfig} from '../../framework/types';\nimport {widgetIdGenerator} from '../../framework/widget-id-generator';\nimport {DISPLAY_TYPE, EVENTS_MAP} from '../../framework/constants';\nimport {WidgetProxyProvider} from '../../framework/widget-proxy-provider';\nimport {getWatchIdentifier} from '../../../utils/widget-utils';\nimport {camelCase, extend, forEach, isArray, isObject, join, last, map} from \"lodash-es\";\n\ndeclare const $;\n\n// Gets list of classes to add and remove and applies on the $el\nconst updateClasses = (toAdd, toRemove, el) => {\n if (toRemove && toRemove.length) {\n removeClass(el, join(toRemove, ' '));\n }\n if (toAdd && toAdd.length) {\n addClass(el, join(toAdd, ' '));\n }\n};\n\n// To add and remove styles on the $el\nconst updateStyles = (nv, ov, el) => {\n if (ov && isObject(ov)) {\n const keys = Object.keys(ov || {});\n keys.forEach(function(key) {\n setCSS(el, key, '');\n });\n }\n if (nv && isObject(nv)) {\n setCSSFromObj(el, nv);\n }\n\n};\n\ninterface Child {\n widget: any,\n nativeElement: any\n}\n\n@Injectable()\nexport abstract class BaseComponent implements OnDestroy, OnInit, AfterViewInit, AfterContentInit {\n\n /**\n * unique identifier for the widget\n */\n public readonly widgetId: any;\n\n public isDestroyed: boolean;\n\n public isAttached = false;\n\n /**\n * jQuery nativeElement reference of the component root\n */\n public get $element() {\n return $(this.nativeElement);\n }\n\n /**\n * DOM node reference of the component root\n */\n public readonly nativeElement: HTMLElement;\n\n /**\n * Type of the component\n */\n protected readonly widgetType: string;\n\n /**\n * Most of the cases it is same as widgetType\n * for specific widgets like charts widgetType can be wm-chart where as the subtype can be wm-bar-chart\n */\n protected readonly widgetSubType: string;\n\n /**\n * Proxy for the component instance.\n */\n protected widget: any;\n\n /**\n * View parent component\n * eg, Page, Partial, Prefab\n */\n protected readonly viewParent: any;\n\n /**\n * EventManger to add/remove events\n */\n protected readonly eventManager: EventManager;\n\n /**\n * App Locale\n */\n public readonly appLocale: any;\n\n /**\n * Style change subject and observable\n */\n private readonly styleChange = new ReplaySubject();\n\n /**\n * Property change subject and observable\n */\n private readonly propertyChange = new Subject();\n\n /**\n * On Ready State change subject and observable\n */\n private readonly readyState = new Subject();\n\n /**\n * Component destroy subject and observable\n */\n private readonly destroy = new Subject();\n\n /**\n * Map of event handler callbacks\n */\n private eventHandlers = new Map<string, {callback: Function, locals: any}>();\n\n /**\n * context of the widget\n * when the widget is preset inside a repeater this context will have the repeater related properties\n */\n public context: any;\n\n /**\n * Initial state of the widget.\n * Will be undefined once the initial properties are set on to the component\n */\n private initState: Map<string, any>;\n\n /**\n * Internal flag to determine whether to wait for the widget initialization or not\n * If the initPromise is provided in the construction wait till the promise is resolved\n * If the initPromise is not provided proceed with the initialization, which is the default behavior.\n */\n private readonly delayedInit: boolean;\n\n /**\n * Display type of the component. eg, block(Default), inline-block, inline etc\n */\n private readonly displayType: string;\n\n /**\n * Holds the event registration functions.\n * these functions needs to be executed after onViewInit\n */\n private toBeSetupEventsQueue: Array<Function> = [];\n\n public __cloneable__ = false;\n\n public widgetProps: Map<string, any>;\n\n private $attrs = new Map<string, string>();\n\n private isMuted = false;\n\n public viewContainerRef: ViewContainerRef;\n public viewParentApp: App;\n /**\n * To avoid re-rendering of widget, passing unique id as contextKey to createCustomInjector\n * (for List, Dynamic Tabs, Accordion, Nav, Carousel)\n */\n public trackId: string;\n\n customWidgetSubType: string;\n\n protected constructor(\n protected inj: Injector,\n @Inject(WidgetConfig) config: IWidgetConfig,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext?: any,\n initPromise?: Promise<any> // Promise on which the initialization has to wait\n ) {\n const elementRef = inj.get(ElementRef);\n this.nativeElement = elementRef.nativeElement;\n //making the code compatible in both the JIT and AOT modes\n this.viewParentApp = inj ? inj.get(App) : inject(App);\n this.widgetType = config.widgetType;\n this.widgetSubType = config.widgetSubType || config.widgetType;\n this.viewContainerRef = inj.get(ViewContainerRef);\n // this.viewParent = (inj as any).view.component;\n // this.viewParent = (this.viewContainerRef as any).parentInjector._lView[8];\n // this.viewParent = _viewParent || (this.viewContainerRef as any).parentInjector._lView[8];\n // https://github.com/angular/angular/blob/main/packages/core/src/render3/interfaces/view.ts\n\n let lView = (this.inj as any)._lView;\n this.viewParent = findParent(lView, this.viewParentApp);\n //console.log(\"---*************--context--*************---\", lView[8]);\n this.context = (this.inj as any)._lView[8];\n\n this.displayType = config.displayType || DISPLAY_TYPE.BLOCK;\n // this.context = (inj as any).view.context;\n // this.context = (this.viewContainerRef as any)._hostLView.debug.context;\n // let hasImplicitContext = (this.viewContainerRef as any)._hostLView.find(t => t && !!t.$implicit);\n // when $implicit is not available, this object contains some ngFor context or listitem context of the widget then\n // we use the direct parent for example: nav component is the parent for anchor => anchor gets viewParent as Nav\n // In other case, where we have implicitContext there we can make use of page/app level context hence viewParent.viewParent to get page level context\n /*if (hasImplicitContext && this.viewParent.viewParent) {\n if (this.viewParent.widgetType !== 'wm-card' && this.viewParent.widgetType !== 'wm-iframedialog'\n && this.viewParent.widgetType !== 'wm-partialdialog') {\n this.viewParent = this.viewParent.viewParent;\n }\n }\n if (!hasImplicitContext || (!this.viewParent.widgetType)) {\n this.context = (this.viewContainerRef as any)._hostLView.find(t => t && !!t.$implicit);\n } else {\n this.context = (this.viewContainerRef as any).parentInjector._lView[8];\n }*/\n\n /*if(_viewParent && !hasImplicitContext) {\n this.context = (this.viewContainerRef as any)._hostLView[8];\n } else {\n this.context = hasImplicitContext;\n }*/\n // if (['wm-list', 'wm-nav'].includes(this.viewParent.widgetType) || ['wm-carousel-template', 'wm-card'].includes(this.widgetType)) {\n // this.context = (this.viewContainerRef as any)._hostLView.debug.context;\n // } else {\n // this.context = (this.viewContainerRef as any).parentInjector._lView[8];\n // }\n this.widget = this.createProxy();\n this.eventManager = inj.get(EventManager);\n (this.nativeElement as any).widget = this.widget;\n\n this.appLocale = inj.get(App).appLocale || {};\n\n this.initContext();\n\n if (config.hostClass) {\n addClass(this.nativeElement, config.hostClass);\n }\n\n this.widgetId = this.generateWidgetId();\n this.trackId = this.generateWidgetId();\n setAttr(this.nativeElement, 'widget-id', this.widgetId, true);\n\n // register default property change handler and style change handler\n this.registerStyleChangeListener(this.onStyleChange, this);\n this.registerPropertyChangeListener(this.onPropertyChange, this);\n\n // if the initPromise is provided, wait till the promise is resolved to proceed with the widget initialization\n if (!initPromise) {\n this.initWidget();\n } else {\n this.delayedInit = true;\n initPromise.then((resolveFn) => {\n let formFieldCW = this.widgetSubType === 'wm-form-field-custom-widget',\n cw = this.widgetSubType.startsWith('wm-custom-');\n if( formFieldCW || cw ) {\n this.customWidgetSubType = formFieldCW ? 'wm-form-field-' + last(this[\"formWidget\"].config.widgetType.split('-')) : this[\"config\"].widgetType;\n }\n\n this.initWidget();\n this.setInitProps();\n resolveFn && resolveFn()\n });\n }\n if(explicitContext) {\n extend(this.context, explicitContext);\n }\n }\n\n public getNativeElement(): HTMLElement {\n return this.nativeElement;\n }\n\n public getWidgetType(): string {\n return this.widgetType;\n }\n\n public getWidgetSubType(): string {\n return this.widgetSubType;\n }\n\n public getWidget(): any {\n return this.widget;\n }\n\n public setProperty(propName, propValue) {\n this.widget[propName] = propValue;\n }\n\n public getViewParent(): any {\n return this.viewParent;\n }\n\n public notifyStyleChange(key: string, nv: any, ov: any) {\n this.styleChange.next({key, nv, ov});\n }\n\n public notifyPropertyChange(key: string, nv: any, ov: any) {\n this.propertyChange.next({key, nv, ov});\n }\n\n public registerStyleChangeListener(fn: ChangeListener, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n this.styleChange.subscribe(({key, nv, ov}) => fn(key, nv, ov));\n }\n\n public registerReadyStateListener(fn: Function, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n if (this.readyState.isStopped) {\n fn();\n return;\n }\n this.readyState.subscribe(() => fn());\n }\n\n public registerPropertyChangeListener(fn: ChangeListener, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n this.propertyChange.subscribe(({key, nv, ov}) => fn(key, nv, ov));\n }\n\n public registerDestroyListener(fn: Function, ctx?: any) {\n if (ctx) {\n fn = fn.bind(ctx);\n }\n this.destroy.subscribe(() => {}, () => {}, () => fn());\n }\n\n public getDisplayType(): string {\n return this.displayType;\n }\n\n protected createProxy(): any {\n return WidgetProxyProvider.create(this, this.widgetSubType, getWidgetPropsByType(this.widgetSubType));\n }\n\n protected initContext() {\n // const context = (this.inj as any).view.context;\n const context = this.context || {};\n\n const parentContexts = this.inj.get(Context, {});\n\n // assign the context property accordingly\n if (this.viewParent !== context) {\n this.context = context;\n } else {\n this.context = {};\n }\n\n if (parentContexts) {\n let parentContextObj = {};\n if (isArray(parentContexts)) {\n forEach(parentContexts, (contextObj) => {\n Object.assign(parentContextObj, contextObj);\n });\n } else {\n parentContextObj = parentContexts;\n }\n this.context = Object.assign({}, parentContextObj, this.context);\n }\n }\n\n /**\n * set the value on the proxy object ie, widget\n * setting the property on the proxy will invoke the change listeners\n * @param {string} key\n * @param value\n */\n public setWidgetProperty(key: string, value: any) {\n this.widget[key] = value;\n }\n\n public getAttr(attrName: string): string {\n return this.$attrs.get(attrName);\n }\n\n /**\n * returns app instance\n * @returns {App}\n */\n public getAppInstance() {\n return this.inj.get(App);\n }\n\n /**\n * Generates a unique id\n * Default pattern is `widget-id-${id}`\n * Components can override this method to generate a different id eg, bar-chart-1\n */\n protected generateWidgetId(): string {\n return widgetIdGenerator.nextUid();\n }\n\n /**\n * Handles the common functionality across the components\n * eg,\n * 1. value of the class property will be applied on the host element\n * 2. based on the value of show property component is shown/hidden\n *\n * @param {string} key\n * @param nv\n * @param ov\n */\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'show') {\n this.nativeElement.hidden = !nv;\n } else if (key === 'hint') {\n if (!isMobileApp()) {\n setAttr(this.nativeElement, 'title', nv);\n }\n } else if (key === 'class') {\n switchClass(this.nativeElement, nv, ov);\n let result = nv.match(/(\\W|^)(h([0-6]))(?=\\s|$)/);\n if (result) {\n setAttr(this.nativeElement, 'role', 'heading');\n setAttr(this.nativeElement, 'aria-level', result[3]);\n }\n } else if (key === 'name' || key === 'tabindex') {\n setAttr(this.nativeElement, key, nv);\n if (key === 'name' && nv) {\n renameWidget(this.viewParent, this.widget, nv, ov);\n }\n } else if (key === 'conditionalclass') {\n // update classes if old and nv value are different\n updateClasses(nv.toAdd, nv.toRemove, this.nativeElement);\n } else if (key === 'autoplay') {\n const tagName = this.widgetType === 'wm-audio' ? 'audio' : 'video';\n // Trigger media(audio/video) element load method after changing autoplay property\n this.nativeElement.querySelector(tagName).load();\n } else if (key === 'conditionalstyle') {\n // update styles if old and nv value are different\n updateStyles(nv, ov, this.nativeElement);\n } else if (key === 'animation') {\n // update styles if old and nv value are different\n addClass(this.nativeElement, \"animated \" + nv);\n } else if (key === 'disabled') {\n // WMS-19321: In IE, widget is in disabled state when disabled=\"false\" attribute is present\n (nv === true) ? setAttr(this.nativeElement, 'disabled', 'true', true) : removeAttr(this.nativeElement, 'disabled', true);\n }\n }\n\n /**\n * Default style change handler\n */\n protected onStyleChange(k: string, nv: any, ov?: any) {}\n\n /**\n * Register the widget with the widgetRegistry\n */\n protected registerWidget(widgetName: string) {\n this.registerDestroyListener(register(this.widget, this.viewParent, this.widgetId, widgetName));\n }\n\n /**\n * override the\n */\n protected getMappedEventName(eventName) {\n return EVENTS_MAP.get(eventName) || eventName;\n }\n\n /**\n * invoke the event handler\n * Components can override this method to execute custom logic before invoking the user callback\n */\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any, meta?: string) {\n this.eventManager.addEventListener(\n node,\n eventName,\n e => {\n locals.$event = e;\n if (meta === 'delayed') {\n setTimeout(() => eventCallback(), 150);\n } else {\n return eventCallback();\n }\n }\n );\n }\n\n /**\n * parse the event expression and save reference to the function inside eventHandlers map\n * If the component provides a override for an event through @Event decorator invoke that\n * else invoke the resolved function\n *\n * @param {string} eventName\n * @param {string} expr\n */\n protected processEventAttr(eventName: string, expr: string, meta?: string, child?: Child) {\n const fn = $parseEvent(expr);\n const locals = this.context;\n locals.widget = child ? child.widget : this.widget;\n const boundFn = fn.bind(undefined, child ? this.viewParent.viewParent : this.viewParent, locals);\n\n let widget = child ? child.widget : this,\n nativeElement = child ? child.nativeElement : this.nativeElement;\n\n const eventCallback = () => {\n let boundFnVal;\n $invokeWatchers(true);\n try {\n locals.$event = locals.$event || new window.CustomEvent(eventName);\n // If the event is bound directly to the variable then we need to internally handle\n // the promise returned by the variable call.\n boundFnVal = boundFn();\n if (boundFnVal instanceof Promise) {\n boundFnVal.then( response => response, err => err);\n } else {\n return boundFnVal;\n }\n } catch (e) {\n console.error(e);\n }\n };\n if(child && !child.widget.eventHandlers)\n child.widget.eventHandlers = new Map<string, {callback: Function, locals: any}>()\n\n widget.eventHandlers.set(this.getMappedEventName(eventName), {callback: eventCallback, locals});\n // prepend eventName with on and convert it to camelcase.\n // eg, \"click\" ---> onClick\n const onEventName = camelCase(`on-${eventName}`);\n // save the eventCallback in widgetScope.\n\n widget[onEventName] = eventCallback;\n\n // events needs to be setup after viewInit\n this.toBeSetupEventsQueue.push(() => {\n this.handleEvent(nativeElement, this.getMappedEventName(eventName), eventCallback, locals, meta);\n });\n }\n\n /**\n * Process the bound property\n * Register a watch on the bound expression\n */\n protected processBindAttr(propName: string, expr: string, child ?: any) {\n if(!child)\n this.initState.delete(propName);\n let viewParent = child ? child.widget.viewParent.viewParent : this.viewParent,\n context = child ? child.widget.context : this.context,\n widget = child ? child.widget : this.widget,\n isMuted = child ? child.widget.isMuted : this.isMuted,\n widgetProps = child ? child.widget.widgetProps : this.widgetProps,\n widgetId = child ? child.widget.widgetId : this.widgetId;\n this.registerDestroyListener(\n $watch(\n expr,\n viewParent,\n context,\n nv => {\n if(propName.startsWith('base-') && widget.updateData)\n widget.updateData(propName, nv);\n widget[propName] = nv\n },\n getWatchIdentifier(widgetId, propName),\n propName === 'datasource',\n widgetProps.get(propName),\n () => isMuted\n )\n );\n }\n\n /**\n * Remove watch on the bound property\n */\n protected removePropertyBinding(propName: string) {\n $unwatch(getWatchIdentifier(this.widgetId, propName));\n }\n\n /**\n * invoke the event callback method\n * @param {string} eventName\n * @param extraLocals\n */\n public invokeEventCallback(eventName: string, extraLocals?: any) {\n const callbackInfo = this.eventHandlers.get(eventName);\n if (callbackInfo) {\n const fn = callbackInfo.callback;\n const locals = callbackInfo.locals || {};\n\n if (fn) {\n return fn(Object.assign(locals, extraLocals));\n }\n }\n }\n /**\n * Process the attribute\n * If the attribute is an event expression, generate a functional representation of the expression\n * and keep in eventHandlers\n * If the attribute is a bound expression, register a watch on the expression\n */\n protected processAttr(attrName: string, attrValue: string, child?: Child) {\n // console.log(\"====attrName=====\", attrName, \"=====typeof attrname=====\", typeof attrName, \"-----attrValue----\", attrValue);\n const {0: propName, 1: type, 2: meta, length} = attrName.split('.');\n if (type === 'bind') {\n // if the show property is bound, set the initial value to false\n if (propName === 'show' && !this.widgetSubType.startsWith('wm-custom-')) {\n this.nativeElement.hidden = true;\n }\n this.processBindAttr(propName, attrValue, child);\n } else if (type === 'event' && !this.nativeElement.hasAttribute('customwidgetcontainer')) {\n this.processEventAttr(propName, attrValue, meta, child);\n } else if (length === 1) {\n // remove class and name attributes. Component will set them on the proper node\n if (attrName === 'class') {\n removeClass(this.nativeElement, attrValue);\n } else if (attrName === 'tabindex' || attrName === 'name') {\n removeAttr(this.nativeElement, attrName);\n }\n\n this.initState.set(propName, attrValue);\n } else {\n // custom attributes provided on elDef;\n }\n }\n\n /**\n * This is required as the native element attributes are case insensitive(camelcase) like customExpressions becomes customexpression\n * and our logic to check like these changes will fail. Before IVY changes, angular maintains a separate object with these attributes\n * as it is like in the camelcase. With IVY all those are gone. So need to maintain a separate list with the camelcasing of attributes\n * @private\n * _tNode.attrs attributes are stored in array(even index: key, odd index: value)\n */\n protected getAttributes() {\n let _tNodeAttrs = (this.inj as any)._tNode.attrs, actualAttrs = Array.from(this.nativeElement.attributes).map(attr => attr.name);\n if(_tNodeAttrs === null) {\n return actualAttrs.sort();\n }\n forEach(_tNodeAttrs, (attr, i: any) => {\n if (typeof attr === 'number') {\n return false;\n }\n if(typeof attr === 'string' && i % 2 == 0) {\n let lowerCaseAttr = attr.toLowerCase();\n if (actualAttrs.includes(lowerCaseAttr)) {\n let index = actualAttrs.indexOf(lowerCaseAttr)\n actualAttrs[index] = attr;\n }\n }\n });\n\n /*\n Sorting attributes as properties like placeholder is not working when it is bound.\n placeholder and placeholder.bind two properties are coming in Array.\n When array is not sorted, initially placeholder.bind value is set then placeholder default value is updated.\n If array is sorted, placeholder.bind value will be set finally.\n This is caused because of the way we are storing attribute names in watcher registry map\n */\n return actualAttrs.sort();\n }\n\n /**\n * Process the attributes\n */\n private processAttrs() {\n map(this.getAttributes(), (attrName: string) => {\n let attrValue = this.nativeElement.attributes[attrName].value\n this.$attrs.set(attrName, attrValue);\n this.processAttr(attrName, attrValue);\n });\n }\n\n /**\n * Update the initState with the default property values and the values provided in the markup\n * Process the attributes\n * Register the widget\n */\n protected initWidget() {\n this.initState = new Map<string, any>();\n\n // get the widget properties\n const widgetProps: Map<string, any> = getWidgetPropsByType(this.widgetSubType);\n if(this.customWidgetSubType) {\n const customWidgetProps: Map<string, any> = getWidgetPropsByType(this.customWidgetSubType);\n customWidgetProps.forEach((v, k) => {\n widgetProps.set(k, v);\n });\n }\n widgetProps.forEach((v, k) => {\n if (isDefined(v.value)) {\n this.initState.set(k, v.value);\n }\n });\n\n this.widgetProps = widgetProps;\n\n this.processAttrs();\n\n this.registerWidget(this.initState.get('name'));\n }\n\n /**\n * Update the default properties and the properties provided in the markup in component\n * Invoking this method will result in invocation of propertyChange handlers on the component for the first time\n */\n protected setInitProps() {\n if (this.initState.get('name')) {\n this.widget.name = this.initState.get('name');\n }\n this.initState.forEach((v, k) => {\n // name is already set, ignore name\n // if the key is part of to be ignored attributes list do not set it on the component instance\n if ((this.widgetProps.get(k) || isStyle(k)) && k !== 'name') {\n this.widget[k] = v;\n }\n });\n this.initState.clear();\n this.initState = undefined;\n\n this.readyState.next(null);\n this.readyState.complete();\n }\n\n /**\n * Returns true, if a listener registered for the given event on this widget markup.\n * @param eventName\n * @returns {boolean}\n */\n protected hasEventCallback(eventName): boolean {\n return this.eventHandlers.has(eventName);\n }\n\n /**\n * Sets the focus on the widget\n */\n protected focus(): void {\n /**\n * Check for the nodes having focus-target attribute inside the element\n * If found, focus the first node (eg, date widget)\n * else, focus the element (eg, text widget)\n */\n let $target = this.$element[0].querySelector('[focus-target]');\n if (!$target) {\n $target = this.$element[0];\n }\n $target.focus();\n }\n\n // Defining the execute method on BaseComponent. If dataset is binded to widgets ouptut then datasource.execute will be defined\n protected execute(operation, options): any {\n\n }\n\n public mute() {\n this.isMuted = true;\n }\n\n public unmute() {\n this.isMuted = false;\n }\n\n private customInjectorMap: any = {};\n\n /**\n * After the Angular 17 upgrade, Angular is no longer sending ngTemplateContext to components in ng-template.\n * Wavemaker widgets inside ng-template require context to evaluate bind expressions.\n * So we're creating an injectionToken that returns the context as a value.\n * We are passing the injectionToken to the ngTemplateOutletInjector.\n * This injects the context into each widget in the ng-template.\n * In the widget component constructor we are getting the injectionToken using dependency injection.\n * If injectionToken is present, we extend the component context with the value of injectionToken.\n * @param contextKey\n * @param context\n * @returns injector\n */\n createCustomInjector(contextKey: string, context: any) {\n if(this.customInjectorMap[contextKey]) {\n return this.customInjectorMap[contextKey].injector;\n }\n const injector = Injector.create({\n providers: [{ provide: 'EXPLICIT_CONTEXT', useFactory: () => context }]\n });\n this.customInjectorMap[contextKey] = { context, injector };\n return injector;\n }\n\n /**\n * After the host page is attached from cache, this function is called.\n */\n public ngOnAttach() {\n this.isAttached = true;\n }\n\n /**\n * Before the host page is detached from dom and stored in cache, this function is called.\n */\n public ngOnDetach() {\n this.isAttached = false;\n }\n\n /**\n * nativeElement will be available by this time\n * if the delayInit is false, properties meta will be available by this time\n * Invoke the setInitProps if the delayInit is false\n */\n ngOnInit() {\n if (!this.delayedInit) {\n this.setInitProps();\n }\n }\n\n /**\n * Register the events\n */\n ngAfterViewInit() {\n if (this.toBeSetupEventsQueue.length) {\n for (const fn of this.toBeSetupEventsQueue) {\n fn();\n }\n }\n this.toBeSetupEventsQueue.length = 0;\n this.isAttached = true;\n }\n\n ngAfterContentInit() {}\n\n ngOnDestroy() {\n this.isDestroyed = true;\n this.widget = Object.create(null);\n this.styleChange.complete();\n this.propertyChange.complete();\n this.destroy.complete();\n this.isAttached = false;\n }\n}\n","import { BaseComponent } from './base.component';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class StylableComponent extends BaseComponent {\n backgroundattachment: string;\n backgroundcolor: string;\n backgroundgradient: string;\n backgroundimage: string;\n backgroundposition: string;\n backgroundrepeat: string;\n backgroundsize: string;\n bordercolor: string;\n borderradius: string;\n borderstyle: string;\n borderwidth: string;\n borderbottomwidth: string;\n borderleftwidth: string;\n borderrightwidth: string;\n bordertopwidth: string;\n color: string;\n cursor: string;\n display: string;\n fontsize: string;\n fontfamily: string;\n fontstyle: string;\n fontunit: string;\n fontvariant: string;\n fontweight: string;\n height: string;\n horizontalalign: string;\n lineheight: string;\n margin: string;\n marginbottom: string;\n marginleft: string;\n marginright: string;\n margintop: string;\n opacity: string;\n overflow: string;\n padding: string;\n paddingbottom: string;\n paddingleft: string;\n paddingright: string;\n paddingtop: string;\n picturesource: string;\n textalign: string;\n textdecoration: string;\n verticalalign: string;\n visibility: string;\n whitespace: string;\n width: string;\n wordbreak: string;\n zindex: string;\n}\n","import { Directive, Inject, Self } from '@angular/core';\n\nimport { IRedrawableComponent, WidgetRef } from '../../framework/types';\n\n@Directive({\n selector: '[redrawable]'\n})\nexport class RedrawableDirective implements IRedrawableComponent {\n redraw: Function;\n constructor(@Self() @Inject(WidgetRef) widget) {\n this.redraw = () => {\n const tabEl = widget.$element.closest(\"[wmtabpane]\");\n const accordionEl = widget.$element.closest('[wmaccordionpane]').find('.panel-heading');\n if ((tabEl.length && !tabEl.hasClass('active')) || (accordionEl.length && !accordionEl.hasClass('active'))) {\n return;\n }\n return widget.redraw && widget.redraw();\n }\n }\n}\n","import {ContentChildren, Directive, Inject, Injector, Optional} from '@angular/core';\nimport { StylableComponent } from \"./stylable.component\";\nimport { RedrawableDirective } from \"../redraw/redrawable.directive\";\nimport { IWidgetConfig } from '../../framework/types';\nimport {includes, pickBy} from \"lodash-es\";\n\n@Directive()\nexport abstract class BaseContainerComponent extends StylableComponent {\n // reference to the components which needs a redraw(eg, grid, chart) when the show of this component changes\n @ContentChildren(RedrawableDirective, { descendants: true }) reDrawableComponents;\n public content;\n public Widgets;\n\n constructor(inj: Injector, WIDGET_CONFIG: IWidgetConfig, explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n private updateRedrawableComponents(widgets) {\n pickBy(widgets, widget => {\n // check for redrawable widget and whether it is already exist in reDrawableComponents query list or not\n if (widget && widget.nativeElement && widget.nativeElement.hasAttribute('redrawable') && !includes(this.reDrawableComponents._results, widget)) {\n this.reDrawableComponents._results.push(widget);\n }\n if (widget && widget.Widgets) {\n this.updateRedrawableComponents(widget.Widgets);\n }\n });\n }\n\n private redrawChildren() {\n // If container is bound to partial content, manually updating reDrawableComponents query list.\n if (this.content && this.Widgets) {\n this.updateRedrawableComponents(this.Widgets);\n }\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n }, 100);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n super.onPropertyChange(key, nv, ov);\n if (key === 'show') {\n if (nv) {\n this.redrawChildren();\n }\n }\n }\n}\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {addClass} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, styler } from '../../framework/styler';\nimport { IWidgetConfig } from '../../framework/types';\nimport { registerProps } from './container.props';\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\nimport {BaseContainerComponent} from \"../base/base-container.component\";\n\nconst DEFAULT_CLS = 'app-container';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-container',\n hostClass: DEFAULT_CLS\n};\n\n@Directive({\n selector: '[wmContainer]',\n providers: [\n provideAsWidgetRef(ContainerDirective)\n ]\n})\nexport class ContainerDirective extends BaseContainerComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext?: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n addClass(this.nativeElement, DEFAULT_CLS);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n\nimport { transformFileURI } from '@wm/core';\n\nimport { getImageUrl } from '../utils/widget-utils';\n\n@Pipe({\n name: 'image'\n})\nexport class ImagePipe implements PipeTransform {\n transform(url: string, encode?: boolean, defaultImageUrl?: string) {\n return transformFileURI(getImageUrl(url, encode, defaultImageUrl));\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-item-template',\n new Map(\n [\n ['content', PROP_STRING]\n ]\n )\n );\n};\n","/**\n * This directive is used to set custom template partial for an item and maintains separate scope for each item.\n * This takes two inputs\n * 1) template partial name as wmItemTemplate\n * 2) item object as userComponentParams\n * Example: Providing a custom template for the search/autocomplete widget (customized UI in the dropdown for each item)\n * Add this directive to the li tag and provide item object and partial name like below. And also provide partialContainer and partial-container-target to render the partial.\n * <li #liElements *ngFor=\"let match of matches\" [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\" partialContainer>\n * <a partial-container-target></a>\n * </li>\n */\n\nimport {Directive, ElementRef, Inject, Injector, Input, Optional, ViewContainerRef} from '@angular/core';\nimport { NgForOfContext } from '@angular/common';\n\nimport {App} from '@wm/core';\n\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\nimport { registerProps } from './item-template.props';\nimport { StylableComponent } from '../base/stylable.component';\n\nconst WIDGET_CONFIG = {widgetType: 'wm-item-template'};\n\n@Directive({\n selector: '[wmItemTemplate]',\n exportAs: 'itemTemplateRef',\n providers: [\n provideAsWidgetRef(ItemTemplateDirective)\n ]\n})\nexport class ItemTemplateDirective extends StylableComponent {\n static initializeProps = registerProps();\n public context;\n public content;\n public partialParams;\n public nativeElement: HTMLElement;\n public viewContainerRef: ViewContainerRef;\n get $index() {\n return this.context.index;\n }\n\n @Input() userComponentParams;\n\n @Input() set wmItemTemplate(value) {\n this.widget.content = value;\n }\n\n constructor(inj: Injector, elRef: ElementRef, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.nativeElement = elRef.nativeElement;\n // this.context = (<NgForOfContext<ItemTemplateDirective>>(<any>inj).view.context);\n this.context = (this.inj as any)._lView[8];\n }\n ngOnInit() {\n super.ngOnInit();\n this.partialParams.item = this.userComponentParams.dataObject;\n }\n}\n","import { PROP_BOOLEAN, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-repeat-template',\n new Map(\n [\n ['show', PROP_BOOLEAN]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\nimport { StylableComponent } from '../base/stylable.component';\nimport { registerProps } from './repeat-template.props';\nimport { styler } from '../../framework/styler';\nimport { IWidgetConfig } from '../../framework/types';\n\nconst DEFAULT_CLS = 'app-repeat-item';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-repeat-template',\n hostClass: DEFAULT_CLS\n};\n\n@Directive({\n selector: '[wmRepeatTemplate]',\n exportAs: 'repeatItemRef'\n})\nexport class RepeatTemplateDirective extends StylableComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n }\n}\n","import {\n Directive,\n Inject,\n inject,\n Injector,\n Input,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport {$watch, App, findParent} from '@wm/core';\nimport {extend} from \"lodash-es\";\n\n@Directive({\n selector: '[lazyLoad]'\n})\nexport class LazyLoadDirective implements OnDestroy {\n private readonly viewParent: any;\n private readonly context = {};\n private embeddedView;\n private unSubscribeFn: Function;\n\n constructor(\n inj: Injector,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any = {}\n ) {\n let viewParentApp = inj ? inj.get(App) : inject(App);\n let lView = (inj as any)._lView;\n this.viewParent = findParent(lView, viewParentApp)\n //this.context = (inj as any).view.context;\n extend(this.context, (inj as any)._lView[8], explicitContext);\n }\n\n @Input()\n set lazyLoad(expr) {\n this.unSubscribeFn = $watch(\n expr,\n this.viewParent,\n this.context,\n (val) => {\n if (!this.embeddedView && val) {\n this.embeddedView = this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n this.unSubscribeFn();\n }\n }\n );\n }\n\n ngOnDestroy() {\n this.unSubscribeFn();\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-message',\n new Map(\n [\n ['animation', PROP_STRING],\n ['caption', {value: 'Message', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['hideclose', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['type', {value: 'success', ...PROP_STRING}],\n ]\n )\n );\n};\n","import {Component, Inject, Injector, Optional} from '@angular/core';\n\nimport {switchClass} from '@wm/core';\n\nimport { styler } from '../../framework/styler';\nimport { IWidgetConfig } from '../../framework/types';\nimport { StylableComponent } from '../base/stylable.component';\nimport { registerProps } from './message.props';\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\n\nconst DEFAULT_CLS = 'alert app-message';\nconst WIDGET_CONFIG: IWidgetConfig = {widgetType: 'wm-message', hostClass: DEFAULT_CLS};\n\n@Component({\n selector: '[wmMessage]',\n templateUrl: './message.component.html',\n providers: [\n provideAsWidgetRef(MessageComponent)\n ],\n exportAs: 'wmMessage'\n})\nexport class MessageComponent extends StylableComponent {\n static initializeProps = registerProps();\n messageClass = '';\n messageIconClass = '';\n type = '';\n caption: string;\n public hideclose: any;\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n }\n\n public showMessage(caption?: string, type?: string) {\n if (caption) {\n this.caption = caption;\n }\n if (type) {\n this.setWidgetProperty('type', type);\n }\n this.setWidgetProperty('show', true);\n }\n\n public hideMessage() {\n this.setWidgetProperty('show', false);\n }\n\n public dismiss($event) {\n this.hideMessage();\n this.invokeEventCallback('close', {$event});\n }\n\n private onMessageTypeChange(nv: string) {\n let msgCls, msgIconCls;\n switch (nv) {\n case 'success':\n msgCls = 'alert-success';\n msgIconCls = 'wm-sl-l sl-check';\n break;\n case 'error':\n msgCls = 'alert-danger';\n msgIconCls = 'wi wi-cancel';\n break;\n case 'warn': /*To support old projects with type as \"warn\"*/\n case 'warning':\n msgCls = 'alert-warning';\n msgIconCls = 'wm-sl-l sl-alarm-bell';\n break;\n case 'info':\n msgCls = 'alert-info';\n msgIconCls = 'wi wi-info';\n break;\n case 'loading':\n msgCls = 'alert-info alert-loading';\n msgIconCls = 'fa fa-spinner fa-spin';\n break;\n }\n switchClass(this.nativeElement, msgCls, this.messageClass);\n this.messageClass = msgCls;\n this.messageIconClass = msgIconCls;\n }\n\n onPropertyChange(key, nv, ov?) {\n if (key === 'type') {\n this.onMessageTypeChange(nv);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","<i aria-hidden=\"true\" [title]=\"type + 'Alert'\" class=\"icon {{type}} {{messageIconClass}}\"></i>\n<span [innerHtml]=\"caption\"></span>\n<button title=\"Close\" type=\"button\" class=\"btn-transparent close\" [hidden]=\"hideclose\" (click)=\"dismiss($event)\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n</button>\n","import { PROP_STRING, register } from '../../framework/widget-props';\n\nexport const registerProps = () => {\n register(\n 'wm-partial',\n new Map(\n [\n ['name', PROP_STRING]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {Viewport, ViewportEvent} from '@wm/core';\nimport { StylableComponent } from '../base/stylable.component';\nimport { registerProps } from './partial.props';\nimport { provideAsWidgetRef } from '../../../utils/widget-utils';\nimport {assign} from \"lodash-es\";\n\nconst DEFAULT_CLS = 'app-partial clearfix';\nconst WIDGET_CONFIG = {widgetType: 'wm-partial', hostClass: DEFAULT_CLS};\n\n@Directive({\n selector: '[wmPartial]',\n providers: [\n provideAsWidgetRef(PartialDirective)\n ]\n})\nexport class PartialDirective extends StylableComponent implements OnDestroy {\n static initializeProps = registerProps();\n constructor(inj: Injector, private viewport: Viewport, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, data => this.callback('resize', data)));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, data => this.callback('orientationchange', data)));\n }\n\n private callback(eventName, locals?: object) {\n locals = assign({widget: this}, locals);\n this.invokeEventCallback(eventName, locals);\n }\n\n public ngOnAttach() {\n this.callback('attach');\n }\n\n public ngOnDetach() {\n this.callback('detach');\n }\n\n public ngOnDestroy() {\n this.callback('destroy');\n super.ngOnDestroy();\n }\n\n}\n","import { Attribute, Directive, Inject, Self, Input, OnInit } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { $watch } from '@wm/core';\n\nimport { WidgetRef } from '../../framework/types';\nimport {get} from \"lodash-es\";\n\n@Directive({\n selector: '[partialContainer]',\n})\nexport class PartialParamHandlerDirective {\n constructor (@Self() @Inject(WidgetRef) private widgetRef) {\n this.widgetRef.partialParams = {};\n this.widgetRef.pageParams = this.widgetRef.partialParams;\n this.widgetRef.params$ = new Subject();\n }\n\n registerParams(name: string, value: string, bindExpr: string, type: string) {\n this.widgetRef.partialParams[name] = value;\n if (!value && bindExpr) {\n this.widgetRef.registerDestroyListener(\n //[Todo-CSP]: expr fn should be generated be default\n $watch(bindExpr, this.widgetRef.getViewParent(), get(this.widgetRef, 'context'), nv => {\n this.widgetRef.partialParams[name] = nv;\n\n // notify the partial container of the param changes\n this.widgetRef.params$.next();\n })\n );\n } else {\n this.widgetRef.params$.next();\n }\n\n }\n}\n\n@Directive({\n selector: '[wmParam]',\n})\nexport class PartialParamDirective implements OnInit {\n\n @Input() name: string;\n @Input() value: any;\n\n constructor(\n @Attribute('value.bind') public bindValue,\n @Attribute('type') public type,\n private partialParamsProvider: PartialParamHandlerDirective\n ) {\n }\n\n ngOnInit() {\n this.partialParamsProvider.registerParams(this.name, this.value, this.bindValue, this.type);\n }\n}\n","import { Attribute, ComponentFactoryResolver, Directive, ElementRef, Inject, Injector, Self, ViewContainerRef } from '@angular/core';\n\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { App, $invokeWatchers, noop, ComponentType, PartialRefProvider } from '@wm/core';\n\nimport { WidgetRef } from \"../../framework/types\";\nimport {debounce} from \"lodash-es\";\n\n@Directive({\n selector: '[partialContainer]'\n})\nexport class PartialContainerDirective {\n\n private contentInitialized = false;\n private $target;\n\n get name() {\n return this.componentInstance.name;\n }\n\n async _renderPartial(nv) {\n // destroy the existing partial\n this.vcRef.clear();\n // when the container-target is inside the component template, it can be queried after viewInit of the component.\n $invokeWatchers(true);\n // for partials with popovers and page dialogs which are inside a prefab, prefab name needs to be computed and appended\n const prefab = $(this.elRef.nativeElement).closest('.app-prefab');\n let prefabName;\n if (prefab.length) {\n prefabName = prefab.attr('prefabname');\n } else if (this.componentInstance.viewParent) {\n prefabName = this.componentInstance.viewParent.prefabName;\n }\n\n const componentFactory = await this.partialRefProvider.getComponentFactoryRef(nv, ComponentType.PARTIAL, {prefab: prefabName});\n if (componentFactory) {\n const instanceRef = this.vcRef.createComponent(componentFactory, 0, this.inj);\n if (instanceRef && instanceRef['instance'] && prefabName) {\n // @ts-ignore\n instanceRef['instance'].prefabName = prefabName;\n }\n if (!this.$target) {\n this.$target = this.elRef.nativeElement.querySelector('[partial-container-target]') || this.elRef.nativeElement;\n }\n\n this.$target.innerHTML = '';\n this.$target.appendChild(instanceRef.location.nativeElement);\n this.contentInitialized = true;\n setTimeout(() => this.onLoadSuccess(), 200);\n }\n }\n\n renderPartial = debounce(this._renderPartial, 200);\n\n onLoadSuccess() {\n this.componentInstance.invokeEventCallback('load');\n\n this.app.notify('partialLoaded');\n }\n\n constructor(\n @Self() @Inject(WidgetRef) public componentInstance,\n public vcRef: ViewContainerRef,\n public elRef: ElementRef,\n public inj: Injector,\n private app: App,\n @Attribute('content') _content: string,\n private resolver: ComponentFactoryResolver,\n private partialRefProvider: PartialRefProvider\n ) {\n\n componentInstance.registerPropertyChangeListener((key: string, nv: any, ov?: any) => {\n if (key === 'content') {\n if (componentInstance.$lazyLoad) {\n componentInstance.$lazyLoad = () => {\n this.renderPartial(nv);\n componentInstance.$lazyLoad = noop;\n };\n } else {\n this.renderPartial(nv);\n }\n }\n });\n\n const subscription = componentInstance.params$\n .pipe(\n filter(() => this.contentInitialized),\n debounceTime(200)\n )\n .subscribe(() => this.renderPartial(componentInstance.content));\n // reload the partial content on partial param change\n componentInstance.registerDestroyListener(() => subscription.unsubscribe());\n }\n}\n","import { Attribute, ComponentFactoryResolver, Directive, ElementRef, Inject, Injector, Self, ViewContainerRef } from '@angular/core';\nimport { App, $invokeWatchers, noop, ComponentType, CustomWidgetRefProvider } from '@wm/core';\nimport { WidgetRef } from \"../../framework/types\";\n\n\ndeclare const _;\n\n@Directive({\n selector: '[customWidgetContainer][widgetname]'\n})\nexport class CustomWidgetContainerDirective {\n\n constructor(\n @Self() @Inject(WidgetRef) public componentInstance,\n public vcRef: ViewContainerRef,\n public elRef: ElementRef,\n public inj: Injector,\n private app: App,\n @Attribute('widgetname') widgetname: string,\n private customWidgetRefProvider: CustomWidgetRefProvider\n ) {\n const widgetnames = this.componentInstance.widgetname;\n this.customWidgetRefProvider.getComponentFactoryRef(widgetname, ComponentType.WIDGET).then((componentFactory) => {\n if (componentFactory) {\n const instanceRef = this.vcRef.createComponent(componentFactory, 0, this.inj);\n this.elRef.nativeElement.appendChild(instanceRef.location.nativeElement);\n }\n });\n }\n}","import {Directive, Inject, Injector, Input, OnDestroy, Optional, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {isLargeTabletLandscape, isLargeTabletPortrait} from '@wm/core';\nimport {extend} from \"lodash-es\";\n\n@Directive({\n selector: '[wmShowInDevice]'\n})\nexport class ShowInDeviceDirective implements OnDestroy {\n private readonly context = {};\n private devices;\n private embeddedView;\n constructor(\n private viewContainerRef: ViewContainerRef,\n inj: Injector,\n private templateRef: TemplateRef<any>,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n extend(this.context, (inj as any)._lView[8], explicitContext);\n\n window.addEventListener('resize', this.onResize.bind(this));\n }\n @Input() set wmShowInDevice(devices) {\n this.devices = devices.split(',');\n this.onResize();\n }\n /*\n This function handles the rendering of widgets based on the configured showindevice property\n for the widget.\n 1. For Large Screen, create the view only when min-width is 1200px(except when the viewport is an Ipad Pro 13 inch(Landscape))\n 2. For Laptop/Tablet Landscape, create the view only when either min-width is 992px and max-width is 1199px(except when the viewport is an Ipad Pro 13 inch(Portrait)), or its an Ipad Pro 13 inch(Landscape))\n 3. For Tablet Portrait, create the view only when either min-width is 768px and max-width is 991px, or its an Ipad Pro 13 inch(Portrait))\n 4. For Mobile, create the view only when max-width is 767px.\n 5. For all, always render the view.\n */\n private onResize($event?) {\n\n const lgWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-lg') || '1200px';\n const mdWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-md') || '992px';\n const smWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-sm') || '768px';\n const lgTabLandScapeWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-lg-tab-landscape') || '1366px';\n const lgTabPortraitWidth = getComputedStyle(document.documentElement).getPropertyValue('--screen-lg-tab-portrait') || '1024px';\n const lgWidthMin = parseFloat(lgWidth)-1;\n const lgUnit = lgWidthMin + \"px\";\n const mdWidthMin = parseFloat(mdWidth)-1;\n const mdUnit = mdWidthMin + \"px\";\n const smWidthMin = parseFloat(smWidth)-1;\n const smUnit = smWidthMin + \"px\";\n if (\n (this.devices.indexOf('lg') > -1 && window.matchMedia(\"(min-width: \"+lgWidth+\")\").matches && !isLargeTabletLandscape(lgTabLandScapeWidth, lgTabPortraitWidth))\n || (this.devices.indexOf('md') > -1 && (isLargeTabletLandscape(lgTabLandScapeWidth, lgTabPortraitWidth) || (window.matchMedia(\"(min-width: \"+mdWidth+\") and (max-width: \"+lgUnit +\")\").matches && !isLargeTabletPortrait(lgTabLandScapeWidth, lgTabPortraitWidth))))\n || (this.devices.indexOf('sm') > -1 && (window.matchMedia(\"(min-width: \"+smWidth+\") and (max-width: \"+mdUnit+\")\").matches || isLargeTabletPortrait(lgTabLandScapeWidth, lgTabPortraitWidth)))\n || (this.devices.indexOf('xs') > -1 && window.matchMedia(\"(max-width: \"+smUnit+\")\").matches)\n || (this.devices.indexOf('all') > -1)) {\n if (!this.embeddedView) {\n this.embeddedView = this.viewContainerRef.createEmbeddedView(this.templateRef, this.context);\n }\n } else {\n this.viewContainerRef.clear();\n this.embeddedView = '';\n }\n\n }\n\n ngOnDestroy() {\n window.removeEventListener('resize', this.onResize);\n }\n}\n","import {Directive, DoCheck, ElementRef, Injector, Input, OnDestroy, OnInit} from '@angular/core';\n\nimport { App, debounce, isKitkatDevice, isMobileApp } from '@wm/core';\nimport {forEach, includes} from \"lodash-es\";\n\ndeclare const $;\ndeclare const IScroll;\n\n@Directive({\n selector: '[wmSmoothscroll]'\n})\nexport class SmoothScrollDirective implements OnInit, DoCheck, OnDestroy {\n\n private readonly _$el;\n private _isEnabled = false;\n private _smoothScrollInstance;\n private _lastScrollY = -1;\n private _waitRefreshTill = -1;\n private app: App;\n private pendingIscrolls: any = [];\n private cancelSubscription: any;\n\n constructor(inj: Injector, elRef: ElementRef, app: App) {\n this._$el = $(elRef.nativeElement);\n this.app = app;\n }\n\n public ngOnInit() {\n this.cancelSubscription = this.app.subscribe('no-iscroll', el => {\n this.pendingIscrolls.push(el);\n });\n }\n\n public ngDoCheck() {\n if (this._isEnabled) {\n if (!this._smoothScrollInstance) {\n this._smoothScrollInstance = this.applySmoothScroll();\n } else {\n this.refreshIScroll();\n }\n } else if (this._smoothScrollInstance && this._smoothScrollInstance.destroy) {\n this._smoothScrollInstance.destroy();\n }\n }\n\n public ngOnDestroy() {\n if (this._smoothScrollInstance && this._smoothScrollInstance.destroy) {\n this._smoothScrollInstance.destroy();\n }\n if (this.cancelSubscription) {\n this.cancelSubscription();\n }\n }\n\n @Input()\n set wmSmoothscroll(val: any) {\n this._isEnabled = (val === true || val === 'true');\n if (this._isEnabled) {\n if (!this._smoothScrollInstance) {\n this._smoothScrollInstance = this.applySmoothScroll();\n }\n } else {\n this.ngOnDestroy();\n }\n }\n\n private applySmoothScroll($events?: any[], activeEl?: any) {\n if (!isMobileApp() || isKitkatDevice()) {\n return null;\n }\n // Set the fadeScrollbars to true only when content is scrollable inside the smoothscroll-container\n const scrollOptions = {\n scrollbars: true,\n preventDefault: false,\n momentum: true,\n bounce: false,\n mouseWheel: true, // for preview in browser support\n disablePointer: true, // disable the pointer events as it causes lag in scrolling (jerky).\n disableTouch: false, // false to be usable with touch devices\n disableMouse: false // false to be usable with a mouse (desktop)\n },\n el = this._$el[0];\n\n if (!el.children.length) {\n return null;\n }\n\n this._$el.addClass('smoothscroll-wrapper');\n /* WMS-17904\n document.scrollIntoView overrides default iScroll scroll,\n so the fix is done to ensure, the scroll action from 'scrollIntoView'\n is captured & executed through iScroll APIs\n */\n el.onscroll = function(e) {\n if (e.target.iscroll && e.target.scrollTop) {\n e.target.iscroll.scrollTo(\n e.target.iscroll.x,\n e.target.iscroll.y - e.target.scrollTop\n );\n e.target.scrollTop = 0;\n }\n };\n if (activeEl && activeEl.tagName === 'INPUT') {\n activeEl.focus();\n }\n\n // Add fadeScrollbars options only when smoothscroll container is included, which means content is scrollable.\n if ($events) {\n scrollOptions['fadeScrollbars'] = true;\n }\n\n let iScroll = new IScroll(el, scrollOptions);\n\n if ($events) {\n // map all events on previous iscroll to the newly created iscroll.\n forEach($events, (listeners, key) => {\n forEach(listeners, l => {\n iScroll.on(key, l);\n });\n });\n const scope = this;\n iScroll.on('scrollStart', function () {\n this._scrolling = true;\n //will notify the components which want to subscribe upon scrolling.\n if (isMobileApp()) {\n scope.app.notify('iscroll-start',{});\n }\n });\n iScroll.on('scrollEnd', function () {\n this._scrolling = false;\n });\n iScroll.refresh();\n }\n\n this.app.notify('iscroll-start',{});\n\n // refresh the indicators.\n iScroll.indicatorRefresh = () => {\n const indicators = this._$el[0].iscroll.indicators;\n let i;\n if (indicators.length) {\n for (i = 0; i < indicators.length; i++) {\n indicators[i].refresh();\n }\n }\n };\n\n this._$el[0].iscroll = iScroll;\n forEach(this.pendingIscrolls, (_el, index) => {\n if (_el.isSameNode(this._$el[0])) {\n this.app.notify('iscroll-update', {el: _el});\n this.pendingIscrolls.splice(index, 1);\n return;\n }\n });\n this.app.notify('iscroll-update', {});\n\n return {\n iScroll: iScroll,\n destroy: function () {\n iScroll.destroy();\n $(iScroll.scroller).css({\n 'transition-timing-function': '',\n 'transition-duration': '',\n 'transform': ''\n });\n\n iScroll = null;\n delete el.iscroll;\n }\n };\n }\n\n /*\n * When element has scroll (i.e. scrollHeight > clientHeight), a div with smoothscroll-container class will be added.\n * new iScroll will be initialised on the element after the div addition, by removing the existing iscroll on the element.\n * This div will have no height, so the elements inside this div will inherit this height, i.e. no height,\n * Scenario: tabs with 100% height, as it covers the pageContent with no scroll, this div will not be added.\n * TODO: Scenario: tabs with 100% height and add others widgets after/before, as it has scroll, this div will be added.\n * But tabs having 100% height will not be honoured as div is having no height.\n */\n private refreshIScroll() {\n const iScroll = this._smoothScrollInstance.iScroll;\n const waitTime = 500;\n if (iScroll._scrolling || this._waitRefreshTill > Date.now()) {\n return;\n }\n // Check for scrollable content and if smoothscroll-container div is already added.\n if (iScroll.wrapper\n && !includes(iScroll.wrapper.children[0].classList, 'smoothscroll-container')\n && iScroll.wrapper.scrollHeight > iScroll.wrapper.clientHeight) {\n\n const cloneEvents = iScroll._events;\n const prevActiveEl = document.activeElement;\n\n // Adds the smoothscroll container div wrapper only when element has scrollable content.\n $(iScroll.wrapper.children).wrapAll('<div class=\"smoothscroll-container\"></div>');\n this._smoothScrollInstance.destroy();\n\n // create new iscroll instance on the element\n this._smoothScrollInstance = this.applySmoothScroll(cloneEvents, prevActiveEl);\n }\n if (this._lastScrollY !== this._$el[0].iscroll.maxScrollY) {\n refreshIscrolls(this._smoothScrollInstance.iScroll);\n this._lastScrollY = this._$el[0].iscroll.maxScrollY;\n } else {\n this._smoothScrollInstance.iScroll.refresh();\n }\n this._waitRefreshTill = Date.now() + waitTime;\n }\n}\n\n/**\n * Refreshes the given iScorll or all iScrolls in the page.\n * @param iScroll\n */\nconst refreshIscrolls = function(iScroll?: any) {\n const scrollContainer = !iScroll && $('.smoothscroll-container');\n\n // Fix for issue: keyboard hides the input on focus.\n // On input focus or window resize, keypad in device has to adjust.\n let bScrollIntoView = iScroll && iScroll.wrapper && iScroll.wrapper.contains(document.activeElement);\n if (bScrollIntoView && document.activeElement.tagName === 'INPUT' && ($(document.activeElement).offset().top + document.activeElement.clientHeight) > window.innerHeight * 0.9) {\n document.activeElement.scrollIntoView({behavior: 'auto', block: 'end', inline: 'end'});\n }\n\n if (iScroll) {\n // refresh specify iscroll on change.\n if (iScroll.indicatorRefresh) {\n iScroll.indicatorRefresh();\n }\n if (iScroll.refresh) {\n iScroll.refresh();\n }\n } else if (scrollContainer.length) {\n // refresh all the iscrolls in pagecontent.\n scrollContainer.parent().each( (i, el: any) => {\n el.iscroll.indicatorRefresh();\n el.iscroll.refresh();\n });\n }\n};\n\n// on window resize, recalculate the iscroll position and refresh scrollers.\nwindow.addEventListener('resize', debounce(refreshIscrolls, 200));\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[textContent]'\n})\nexport class TextContentDirective {\n @Input()\n set textContent(nv) {\n let v = nv;\n\n if (nv === undefined || nv === null) {\n v = '';\n }\n this.elRef.nativeElement.textContent = v;\n }\n\n constructor(private elRef: ElementRef) {}\n}","\nimport { CustomPipeManager } from '@wm/core';\nimport {isFunction} from \"lodash-es\";\n\nexport class WmPipe {\n protected pipeRef;\n protected isCustomPipe;\n constructor(private pipeName, protected customPipeManager: CustomPipeManager) {\n this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;\n this.isCustomPipe = this.pipeRef && isFunction(this.pipeRef.formatter);\n }\n\n customFormatter(data, args) {\n try {\n return this.pipeRef.formatter(...args);\n } catch (error) {\n return data;\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport { CURRENCY_INFO, isDefined, App, CustomPipeManager, AbstractI18nService, hasOffsetStr } from '@wm/core';\nimport { WmPipe } from \"./wm-pipe\";\nimport {filter, includes, isDate, isFunction, isObject, isUndefined, startsWith} from \"lodash-es\";\n\ndeclare const moment;\n\nconst getEpochValue = data => {\n let epoch;\n // For data in form of string number ('123'), convert to number (123). And don't parse date objects.\n if (!isDate(data) && !isNaN(data)) {\n data = parseInt(data, 10);\n }\n // get the timestamp value. If data is time string, append date string to the time value\n epoch = moment(data).valueOf() || moment(new Date().toDateString() + ' ' + data).valueOf();\n return epoch;\n};\n\n@Pipe({\n name: 'trailingZeroDecimalPipe'\n})\nexport class TrailingZeroDecimalPipe implements PipeTransform {\n transform(value: any, selectedLocale: string, numberfilter: string, localefilter: any, trailingzero: boolean, decimalValue: string, skipTrailingZeroCheck?: boolean, formattedLocale?): any {\n numberfilter = trailingzero && !skipTrailingZeroCheck ? `1.${decimalValue.length}-16`: numberfilter;\n const locale = formattedLocale ? formattedLocale['number'] : undefined;\n return this.decimalPipe.transform(value, numberfilter, localefilter || locale || selectedLocale);\n }\n\n constructor(private decimalPipe: DecimalPipe) { }\n\n}\n\n@Pipe({\n name: 'toDate'\n})\nexport class ToDatePipe extends WmPipe implements PipeTransform {\n // This method calls the custom formatter fn after applying the exisitng date pattern\n returnFn(data, args) {\n if (this.isCustomPipe) {\n if (args) {\n args[0] = data;\n }\n return this.customFormatter(data, args);\n }\n return data;\n }\n transform(data: any, format: any, timezone?, compInstance?) {\n let timestamp;\n // 'null' is to be treated as a special case, If user wants to enter null value, empty string will be passed to the backend\n if (data === 'null' || data === '') {\n return this.returnFn('', arguments);\n }\n if (!isDefined(data)) {\n return this.returnFn('',arguments);\n }\n timestamp = getEpochValue(data);\n if (timestamp) {\n if (format === 'timestamp') {\n return this.returnFn(timestamp, arguments);\n }\n if (format === 'UTC') {\n return this.returnFn(new Date(timestamp).toISOString(), arguments);\n }\n let formattedVal;\n const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;\n if (timeZone && (data === timestamp || hasOffsetStr(data))) {\n formattedVal = moment(timestamp).tz(timeZone).format(format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A'));\n } else {\n formattedVal = this.datePipe.transform(timestamp, format);\n }\n return this.returnFn(formattedVal, arguments);\n }\n return this.returnFn('', arguments);\n }\n\n constructor(private datePipe: DatePipe, private i18nService: AbstractI18nService, protected customPipeManager: CustomPipeManager) {\n super('toDate', customPipeManager);\n }\n}\n\n@Pipe({\n name: 'toNumber'\n})\nexport class ToNumberPipe implements PipeTransform {\n transform(data, fracSize) {\n if (fracSize && !String(fracSize).match(/^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/)) {\n fracSize = '1.' + fracSize + '-' + fracSize;\n }\n if (!isNaN(+data)) {\n const locale = this.i18nService && this.i18nService.getwidgetLocale() ? this.i18nService.getwidgetLocale() : undefined;\n const formattedLocale = locale ? locale['number'] : null;\n return this.decimalPipe.transform(data, fracSize, formattedLocale);\n }\n }\n constructor(private decimalPipe: DecimalPipe, @Inject(AbstractI18nService) private i18nService: AbstractI18nService) {\n }\n}\n\n@Pipe({\n name: 'toCurrency'\n})\nexport class ToCurrencyPipe implements PipeTransform {\n transform(data, currencySymbol, fracSize) {\n const _currencySymbol = (CURRENCY_INFO[currencySymbol] || {}).symbol || currencySymbol || '';\n let _val = new ToNumberPipe(this.decimalPipe, this.i18nService).transform(data, fracSize);\n const isNegativeNumber = startsWith(_val, '-');\n if (isNegativeNumber) {\n _val = _val.replace('-','');\n }\n return _val ? isNegativeNumber ? '-'+ _currencySymbol +_val :_currencySymbol + _val : '';\n }\n\n constructor(private decimalPipe: DecimalPipe, @Inject(AbstractI18nService) private i18nService: AbstractI18nService) {\n }\n}\n\n@Pipe({\n name: 'prefix'\n})\nexport class PrefixPipe implements PipeTransform {\n transform(data, padding) {\n return (isUndefined(data) || data === null || data === '') ? data : ((padding || '') + data);\n }\n}\n\n@Pipe({\n name: 'suffix'\n})\nexport class SuffixPipe implements PipeTransform {\n transform(data, padding) {\n return (isUndefined(data) || data === null || data === '') ? data : (data + (padding || ''));\n }\n}\n\n\n/**\n * Custom pipe: It is work as interceptor between the user custom pipe function and angular pipe\n */\n@Pipe({\n name: 'custom'\n})\nexport class CustomPipe implements PipeTransform {\n constructor(private custmeUserPipe: CustomPipeManager) {\n\n }\n transform(data, pipename) {\n let argumentArr = [];\n for(let i =2 ; i<arguments.length; i++ ){\n argumentArr.push(arguments[i]);\n }\n\n let pipeRef = this.custmeUserPipe.getCustomPipe(pipename);\n if (!pipeRef || !isFunction(pipeRef.formatter)) {\n console.warn('formatter is not defined, please check the custom pipes documentation');\n return data;\n }\n\n try{\n return pipeRef.formatter(data, ...argumentArr);\n } catch(error){\n console.error('Pipe name: '+pipename, error);\n return data;\n }\n }\n}\n\n@Pipe({\n name: 'timeFromNow'\n})\nexport class TimeFromNowPipe implements PipeTransform {\n transform(data) {\n let timestamp;\n if (!isDefined(data)) {\n return undefined;\n }\n timestamp = getEpochValue(data);\n return timestamp ? moment(timestamp).fromNow() : undefined;\n }\n}\n\n@Pipe({\n name: 'numberToString'\n})\nexport class NumberToStringPipe extends ToNumberPipe implements PipeTransform { }\n\n@Pipe({\n name: 'stringToNumber'\n})\nexport class StringToNumberPipe implements PipeTransform {\n transform(data) {\n return Number(data) || undefined;\n }\n}\n\n@Pipe({\n name: 'filter'\n})\nexport class FilterPipe implements PipeTransform {\n transform(data: any[], field: any, value: any) {\n if (!data) {\n return [];\n }\n // If object is passed as first paramter\n if (isObject(field)) {\n return filter(data, field);\n }\n // If key value pair is provided\n return filter(data, item => {\n return includes(item[field], value);\n });\n }\n}\n\n@Pipe({\n name: 'filesize'\n})\nexport class FileSizePipe implements PipeTransform {\n transform(bytes: number, precision: number) {\n const units = [\n 'bytes',\n 'KB',\n 'MB',\n 'GB',\n 'TB',\n 'PB'\n ];\n\n /*Todo[shubham]\n if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) {\n return isMobile() ? '' : '?';\n }*/\n let unit = 0;\n while (bytes >= 1024) {\n bytes /= 1024;\n unit++;\n }\n return bytes.toFixed(+precision) + ' ' + units[unit];\n }\n}\n\n@Pipe({\n name: 'fileIconClass'\n})\nexport class FileIconClassPipe implements PipeTransform {\n transform(fileExtension: any) {\n const fileClassMapping = {\n 'zip' : 'fa-file-zip-o',\n 'pdf' : 'fa-file-pdf-o',\n 'rar' : 'fa-file-archive-o',\n 'txt' : 'fa-file-text-o',\n 'ppt' : 'fa-file-powerpoint-o',\n 'pot' : 'fa-file-powerpoint-o',\n 'pps' : 'fa-file-powerpoint-o',\n 'pptx' : 'fa-file-powerpoint-o',\n 'potx' : 'fa-file-powerpoint-o',\n 'ppsx' : 'fa-file-powerpoint-o',\n 'mpg' : 'fa-file-movie-o',\n 'mp4' : 'fa-file-movie-o',\n 'mov' : 'fa-file-movie-o',\n 'avi' : 'fa-file-movie-o',\n 'mp3' : 'fa-file-audio-o',\n 'docx' : 'fa-file-word-o',\n 'js' : 'fa-file-code-o',\n 'md' : 'fa-file-code-o',\n 'html' : 'fa-file-code-o',\n 'css' : 'fa-file-code-o',\n 'xlsx' : 'fa-file-excel-o',\n 'png' : 'fa-file-image-o',\n 'jpg' : 'fa-file-image-o',\n 'jpeg' : 'fa-file-image-o',\n 'file' : 'fa-file-o',\n 'default' : 'fa-file-o'\n };\n\n return 'fa ' + (fileClassMapping[fileExtension] || 'fa-file-o');\n }\n}\n\n@Pipe({\n name: 'stateClass'\n})\nexport class StateClassPipe implements PipeTransform {\n transform(state) {\n const stateClassMap = {\n 'success' : 'wi wi-done text-success',\n 'error' : 'wi wi-error text-danger'\n };\n return stateClassMap[state.toLowerCase()];\n }\n}\n\n@Pipe({\n name: 'fileExtensionFromMime'\n})\nexport class FileExtensionFromMimePipe implements PipeTransform {\n transform(mimeType: any) {\n const typeMapping = {\n 'audio/aac': '.aac',\n 'application/x-abiword': '.abw',\n 'application/vnd.android.package-archive': '.apk',\n 'video/x-msvideo': '.avi',\n 'application/vnd.amazon.ebook': '.azw',\n 'application/octet-stream': '.bin',\n 'image/bmp': '.bmp',\n 'application/x-bzip': '.bz',\n 'application/x-bzip2': '.bz2',\n 'application/x-csh': '.csh',\n 'text/css': '.css',\n 'text/csv': '.csv',\n 'application/msword': '.doc',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': '.docx',\n 'application/vnd.ms-fontobject': '.eot',\n 'application/epub+zip': '.epub',\n 'application/ecmascript': '.es',\n 'image/gif': '.gif',\n 'text/html': '.html',\n 'image/x-icon': '.ico',\n 'text/calendar': '.ics',\n 'application/java-archive': '.jar',\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'application/javascript': '.js',\n 'application/json': '.json',\n 'audio/midi': '.mid',\n 'audio/x-midi': '.midi',\n 'video/mpeg': '.mpeg',\n 'application/vnd.apple.installer+xml': 'mpkg',\n 'application/vnd.oasis.opendocument.presentation': '.odp',\n 'application/vnd.oasis.opendocument.spreadsheet': '.ods',\n 'application/vnd.oasis.opendocument.text': '.odt',\n 'audio/ogg': '.oga',\n 'video/ogg': '.ogv',\n 'application/ogg': '.ogx',\n 'font/otf': '.otf',\n 'image/png': '.png',\n 'application/pdf': '.pdf',\n 'application/vnd.ms-powerpoint': '.ppt',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': '.pptx',\n 'application/x-rar-compressed': '.rar',\n 'application/rtf': '.rtf',\n 'application/x-sh': '.sh',\n 'image/svg+xml': '.svg',\n 'application/x-shockwave-flash': '.swf',\n 'application/x-tar': '.tar',\n 'image/tiff': '.tiff',\n 'application/typescript': '.ts',\n 'font/ttf': '.ttf',\n 'text/plain': '.txt',\n 'application/vnd.visio': '.vsd',\n 'audio/wav': '.wav',\n 'audio/webm': '.weba',\n 'video/webm': '.webm',\n 'image/webp': '.webp',\n 'font/woff': '.woff',\n 'font/woff2': '.woff2',\n 'application/xhtml+xml': '.xhtml',\n 'application/vnd.ms-excel': '.xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': '.xlsx',\n 'application/xml': '.xml',\n 'application/vnd.mozilla.xul+xml': '.xul',\n 'application/zip': '.zip',\n 'video/3gpp': '.3gp',\n 'audio/3gpp': '.3gp',\n 'video/3gpp2': '.3g2',\n 'audio/3gpp2': '.3g2',\n 'application/x-7z-compressed': '.7z'\n };\n\n return typeMapping[mimeType];\n }\n}\n\n\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl} from '@angular/platform-browser';\n\n@Pipe({\n name: 'trustAs'\n})\nexport class TrustAsPipe implements PipeTransform {\n\n constructor(private domSanitizer: DomSanitizer) {}\n\n transform(content: string, context: string | SecurityContext) {\n if (content === null || content === undefined) {\n return '';\n }\n switch (context) {\n case 'html':\n case SecurityContext.HTML:\n return this.domSanitizer.bypassSecurityTrustHtml(content);\n case 'style':\n case SecurityContext.STYLE:\n return this.domSanitizer.bypassSecurityTrustStyle(content);\n case 'script':\n case SecurityContext.SCRIPT:\n return this.domSanitizer.bypassSecurityTrustScript(content);\n case 'url':\n case SecurityContext.URL:\n return this.domSanitizer.bypassSecurityTrustUrl(content);\n case 'resource':\n case SecurityContext.RESOURCE_URL:\n return this.domSanitizer.bypassSecurityTrustResourceUrl(content);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {isMobile, isMobileApp} from '@wm/core';\nimport {forEach} from \"lodash-es\";\n\nconst openedDialogs = [];\n/*We need closedDialogs array because onHidden event is asynchronous,\nand if the user uses script and calls dialog1.close() and then dialog2.close() then\nwe cannot be sure if both the dialogs onClose callback will be called or not.*/\nconst closeDialogsArray = [];\n\n\n@Injectable()\nexport class DialogServiceImpl {\n\n /**\n * map which contains the references to all dialogs by name\n * @type {Map<any, any>}\n * Ex Map[[dialogName, [[dialogScope, dialogRef]]]]\n */\n private dialogRefsCollection = new Map<any, any>();\n private appConfirmDialog = '_app-confirm-dialog';\n\n constructor() {}\n\n /**\n * Register dialog by name and scope\n * @param {string} name\n * @param {BaseDialog} dialogRef\n * @param {scope}\n */\n public register(name: string, dialogRef: any, scope: any) {\n if (!name) {\n return;\n }\n if (this.dialogRefsCollection.get(name)) {\n this.dialogRefsCollection.get(name).set(scope, dialogRef);\n } else {\n this.dialogRefsCollection.set(name, new Map([[scope, dialogRef]]));\n }\n }\n\n public getDialogRefsCollection() {\n return this.dialogRefsCollection;\n }\n\n /**\n * De Register dialog by name and scope\n * @param name\n * @param dialogRef\n * @param scope\n */\n public deRegister(name: string, scope: any) {\n if (!name) {\n return;\n }\n if (this.dialogRefsCollection.get(name)) {\n this.dialogRefsCollection.get(name).delete(scope);\n }\n }\n\n private getDialogRef(name: string, scope?: any) {\n const dialogRefMap = this.dialogRefsCollection.get(name);\n let dialogRef;\n\n if (scope) {\n dialogRef = dialogRefMap.get(scope);\n if (!dialogRef) {\n // Check if the scope is App level scope\n // else throw a console error\n if (!scope.pageName && !scope.partialName && !scope.prefabName) {\n dialogRefMap.forEach((dRef, dialogScope) => {\n // Check if the collection of dialogs have a \"common\" partial scope\n // If yes use that else through a console error\n if (dialogScope && dialogScope.partialName === 'Common') {\n dialogRef = dRef;\n } else {\n console.error('No dialog with the name \"' + name + '\" found in the App scope.');\n }\n });\n } else {\n console.error('No dialog with the name \"' + name + '\" found in the given scope.');\n }\n }\n } else {\n if (dialogRefMap.size === 1) {\n dialogRef = dialogRefMap.entries().next().value[1];\n } else {\n console.error('There are multiple instances of this dialog name. Please provide the Page/Partial/App instance in which the dialog exists.');\n }\n }\n return dialogRef;\n }\n\n /**\n * Opens the dialog with the given name\n * @param {string} name\n */\n public open(name: string, scope?: any, initState?: any) {\n const dialogRef = this.getDialogRef(name, scope);\n if (!dialogRef) {\n return;\n }\n\n dialogRef.open(initState);\n }\n\n /**\n * closes the dialog with the given name\n * @param {string} name\n */\n public close(name: string, scope?: any, callBackFn?:any) {\n const dialogRef = this.getDialogRef(name, scope);\n if (!dialogRef) {\n return;\n }\n // For notification action variable dialogs onok callback event should be called after closing the dialog.\n // So passing it as callback function\n dialogRef.closeCallBackFn = callBackFn;\n dialogRef.close();\n }\n\n /**\n * closes all the opened dialogs\n */\n closeAllDialogs() {\n forEach(openedDialogs.reverse(), (dialog) => {\n dialog.close();\n });\n }\n\n public showAppConfirmDialog(initState?: any) {\n this.open(this.getAppConfirmDialog(), undefined, initState);\n }\n\n public closeAppConfirmDialog() {\n this.close(this.getAppConfirmDialog());\n }\n\n public getAppConfirmDialog() {\n return this.appConfirmDialog;\n }\n\n public setAppConfirmDialog(dialogName: string) {\n this.appConfirmDialog = dialogName;\n }\n\n public addToOpenedDialogs(ref) {\n openedDialogs.push(ref);\n }\n\n public getLastOpenedDialog() {\n return openedDialogs[openedDialogs.length - 1];\n }\n\n public removeFromOpenedDialogs(ref) {\n if (openedDialogs.indexOf(ref) !== -1) {\n openedDialogs.splice(openedDialogs.indexOf(ref), 1);\n }\n if (openedDialogs.length === 0 && (isMobile() || isMobileApp())) {\n //Fix for [WMS-23948]: remove aria-hidden attribute only after all dialogs are closed\n const parentSelector = $('body > app-root')[0];\n parentSelector.removeAttribute('aria-hidden');\n }\n }\n\n public getOpenedDialogs() {\n return openedDialogs;\n }\n\n public addToClosedDialogs(ref) {\n closeDialogsArray.push(ref);\n }\n\n public removeFromClosedDialogs(ref) {\n if (closeDialogsArray.indexOf(ref) !== -1) {\n closeDialogsArray.splice(closeDialogsArray.indexOf(ref), 1);\n }\n }\n\n public getDialogRefFromClosedDialogs() {\n return closeDialogsArray[closeDialogsArray.length - 1];\n }\n}\n","import {Pipe, PipeTransform, SecurityContext} from \"@angular/core\";\nimport {DomSanitizer, SafeValue} from \"@angular/platform-browser\";\n\n@Pipe({\n name: 'sanitize'\n})\nexport class SanitizePipe implements PipeTransform {\n constructor(private domSanitizer: DomSanitizer) {\n }\n\n transform(content: string | SafeValue, context: string | SecurityContext): string {\n if (content === null || content === undefined) {\n return '';\n }\n switch (context) {\n case 'html':\n case SecurityContext.HTML:\n return this.domSanitizer.sanitize(SecurityContext.HTML, content);\n case 'style':\n case SecurityContext.STYLE:\n return this.domSanitizer.sanitize(SecurityContext.STYLE, content);\n case 'script':\n case SecurityContext.SCRIPT:\n return this.domSanitizer.sanitize(SecurityContext.SCRIPT, content);\n case 'url':\n case SecurityContext.URL:\n return this.domSanitizer.sanitize(SecurityContext.URL, content);\n case 'resource':\n case SecurityContext.RESOURCE_URL:\n return this.domSanitizer.sanitize(SecurityContext.RESOURCE_URL, content);\n case 'none':\n case SecurityContext.NONE:\n return this.domSanitizer.sanitize(SecurityContext.NONE, content);\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\n\nimport { AbstractDialogService } from '@wm/core';\nimport { SecurityModule } from '@wm/security';\n\nimport { ContainerDirective } from './widgets/common/container/container.directive';\nimport { ImagePipe } from './pipes/image.pipe';\nimport { ItemTemplateDirective } from \"./widgets/common/item-template/item-template.directive\";\nimport { RepeatTemplateDirective } from \"./widgets/common/repeat-template/repeat-template.directive\";\nimport { LazyLoadDirective } from './widgets/common/lazy-load/lazy-load.directive';\nimport { MessageComponent } from './widgets/common/message/message.component';\nimport { PartialDirective } from './widgets/common/partial/partial.directive';\nimport {\n PartialParamDirective,\n PartialParamHandlerDirective\n} from './widgets/common/partial-param/partial-param.directive';\nimport { PartialContainerDirective} from \"./widgets/common/base/partial-container.directive\";\nimport { CustomWidgetContainerDirective} from \"./widgets/common/base/custom-widget-container.directive\";\nimport { RedrawableDirective } from './widgets/common/redraw/redrawable.directive';\nimport { ShowInDeviceDirective } from './directives/show-in-device.directive';\nimport { SmoothScrollDirective } from './widgets/common/smooth-scroll/smooth-scroll.directive';\nimport { TextContentDirective } from './widgets/common/base/text-content.directive';\nimport {\n FileExtensionFromMimePipe,\n FileIconClassPipe,\n FileSizePipe,\n FilterPipe,\n NumberToStringPipe,\n PrefixPipe,\n StateClassPipe,\n StringToNumberPipe,\n SuffixPipe,\n TimeFromNowPipe,\n ToCurrencyPipe,\n ToDatePipe,\n ToNumberPipe,\n CustomPipe,\n TrailingZeroDecimalPipe\n} from './pipes/custom-pipes';\nimport { TrustAsPipe } from './pipes/trust-as.pipe';\nimport { DialogServiceImpl } from './widgets/common/dialog/dialog.service';\nimport { SanitizePipe } from \"./pipes/sanitize.pipe\";\n\nconst wmComponents = [\n ContainerDirective,\n ItemTemplateDirective,\n RepeatTemplateDirective,\n LazyLoadDirective,\n MessageComponent,\n PartialDirective,\n PartialParamHandlerDirective,\n PartialParamDirective,\n PartialContainerDirective,\n CustomWidgetContainerDirective,\n RedrawableDirective,\n ShowInDeviceDirective,\n SmoothScrollDirective,\n TextContentDirective\n];\n\nconst PIPES = [\n ToDatePipe,\n FileIconClassPipe,\n FileExtensionFromMimePipe,\n FilterPipe,\n FileSizePipe,\n ToNumberPipe,\n ToCurrencyPipe,\n PrefixPipe,\n SuffixPipe,\n TimeFromNowPipe,\n NumberToStringPipe,\n StateClassPipe,\n StringToNumberPipe,\n TrailingZeroDecimalPipe,\n TrustAsPipe,\n ImagePipe,\n CustomPipe,\n SanitizePipe\n];\n\n@NgModule({\n imports: [\n CommonModule,\n SecurityModule\n ],\n declarations: [...wmComponents, ...PIPES],\n exports: [...wmComponents, ...PIPES]\n})\nexport class WmComponentsModule {\n\n static forRoot(): ModuleWithProviders<WmComponentsModule> {\n return {\n ngModule: WmComponentsModule,\n providers: [\n ToDatePipe,\n FilterPipe,\n TrailingZeroDecimalPipe,\n TrustAsPipe,\n ImagePipe,\n CustomPipe,\n SanitizePipe,\n Location,\n {provide: AbstractDialogService, useClass: DialogServiceImpl}\n ]\n };\n }\n}\n","import { DataSource, debounce, processFilterExpBindNode } from '@wm/core';\nimport { FormWidgetType, isDefined, MatchMode } from '@wm/core';\n\nimport { isDataSetWidget } from './widget-utils';\nimport {\n each,\n filter,\n forEach, get, head,\n includes,\n intersection,\n isArray, isEmpty, isFunction,\n isNull,\n isObject,\n isString,\n isUndefined, keys, replace,\n split\n} from \"lodash-es\";\n\nconst noop = () => { };\n\nexport enum Live_Operations {\n INSERT = 'insert',\n UPDATE = 'update',\n DELETE = 'delete',\n READ = 'read'\n}\n\nexport const ALLFIELDS = 'All Fields';\n\nexport const LIVE_CONSTANTS = {\n 'EMPTY_KEY': 'EMPTY_NULL_FILTER',\n 'EMPTY_VALUE': 'No Value',\n 'LABEL_KEY': 'key',\n 'LABEL_VALUE': 'value',\n 'NULL_EMPTY': ['null', 'empty'],\n 'NULL': 'null',\n 'EMPTY': 'empty'\n};\n\n// Returns true if widget is autocomplete or chips\nexport function isSearchWidgetType(widget) {\n return includes([FormWidgetType.AUTOCOMPLETE, FormWidgetType.TYPEAHEAD, FormWidgetType.CHIPS], widget);\n}\n\nfunction onSuccess(response, res, rej) {\n if (response.error) {\n rej(response);\n } else {\n res(response);\n }\n}\n\nexport function performDataOperation(dataSource, requestData, options): Promise<any> {\n return new Promise((res, rej) => {\n if (dataSource.execute(DataSource.Operation.SUPPORTS_CRUD)) {\n let fn;\n const operationType = options.operationType;\n switch (operationType) {\n case Live_Operations.UPDATE:\n fn = DataSource.Operation.UPDATE_RECORD;\n break;\n case Live_Operations.INSERT:\n fn = DataSource.Operation.INSERT_RECORD;\n break;\n case Live_Operations.DELETE:\n fn = DataSource.Operation.DELETE_RECORD;\n break;\n }\n dataSource.execute(fn, requestData).then(response => onSuccess(response, res, rej), rej);\n } else if (dataSource.execute(DataSource.Operation.IS_API_AWARE)) {\n if(dataSource.category === \"wm.CrudVariable\") {\n const operation = options.operationType === 'insert' ? 'create' : (options.operationType === 'delete' ? 'delete' : 'update');\n dataSource.execute(DataSource.Operation.INVOKE, {\n 'skipNotification': true,\n 'operation': operation,\n 'inputFields': requestData\n }).then(res, rej);\n } else {\n dataSource.execute(DataSource.Operation.SET_INPUT, requestData);\n dataSource.execute(DataSource.Operation.INVOKE, {\n 'skipNotification': true\n }).then(res, rej);\n }\n } else {\n res(requestData);\n }\n });\n}\n\nexport function refreshDataSource(dataSource, options): Promise<any> {\n return new Promise((res, rej) => {\n if (!dataSource) {\n rej();\n return;\n }\n dataSource.execute(DataSource.Operation.LIST_RECORDS, {\n 'filterFields': options.filterFields || {},\n 'orderBy': options.orderBy,\n 'page': options.page || 1,\n 'logicalOp' : options.condition || ''\n }).then(res, rej);\n });\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.fetchRelatedFieldData\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * This function fetches the data for the related field in live form/ grid\n *\n * @param {object} columnDef field definition\n * @param {string} relatedField related field name\n * @param {string} datafield Datafield to be set on widget\n * @param {string} widget Type of the widget\n * @param {object} elScope element scope\n * @param {object} parentScope live form// grid scope\n */\nexport function fetchRelatedFieldData(dataSource, formField, options) {\n let primaryKeys;\n let displayField;\n const relatedField = options.relatedField;\n const datafield = options.datafield;\n\n if (!dataSource) {\n return;\n }\n primaryKeys = dataSource.execute(DataSource.Operation.GET_RELATED_PRIMARY_KEYS, relatedField);\n formField.datafield = datafield;\n formField._primaryKey = isEmpty(primaryKeys) ? undefined : primaryKeys[0];\n formField.compareby = primaryKeys && primaryKeys.join(',');\n\n displayField = datafield === ALLFIELDS ? undefined : datafield;\n formField.displayfield = displayField = (formField.displayfield || displayField || formField._primaryKey);\n\n if (isSearchWidgetType(formField[options.widget])) {\n formField.dataoptions = { 'relatedField': relatedField, 'filterExpr': formField.filterexpressions ? formField.filterexpressions : {} };\n formField.datasource = dataSource;\n formField.searchkey = formField.searchkey || displayField;\n formField.displaylabel = formField.displayfield = (formField.displaylabel || displayField);\n if (formField.showPendingSpinner) {\n formField.showPendingSpinner = false;\n }\n } else {\n interpolateBindExpressions(formField.viewParent, formField.filterexpressions, (filterexpressions) => {\n formField.filterexpressions = filterexpressions;\n dataSource.execute(DataSource.Operation.GET_RELATED_TABLE_DATA, {\n relatedField,\n pagesize: formField.limit,\n orderBy: formField.orderby ? replace(formField.orderby, /:/g, ' ') : '',\n filterFields: {},\n filterExpr: formField.filterexpressions ? formField.filterexpressions : {}\n }).then(response => {\n formField.dataset = response.data;\n formField.displayfield = formField.displayfield || head(keys(get(response, '[0]')));\n if (formField.showPendingSpinner) {\n formField.showPendingSpinner = false;\n }\n }, noop);\n });\n }\n}\n\n/**\n * used to interpolate the bind expression for keys in the query builder\n * @param context where we find the variable obj\n * @param filterexpressions - obj containing all the rule objs\n * @param callbackFn - function to be called with the new replaced values if any in the filterexpressions object\n */\nexport const interpolateBindExpressions = (context, filterexpressions, callbackFn) => {\n const debouncedFn = debounce(() => {\n if (isFunction(callbackFn)) {\n callbackFn(filterexpressions);\n }\n }, 300);\n\n /**\n * calling the debounced function first for the case where if there is any filterexpression without the bindedvariables.\n * without this it will never be called. processFilterExpBindNode will be called only for the binded variable expressions.\n */\n debouncedFn();\n const filterExpressions = filterexpressions ? (isObject(filterexpressions) ? filterexpressions : JSON.parse(filterexpressions)) : {};\n const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : noop;\n const filterSubscription = processFilterExpBindNode(context, filterExpressions).subscribe((response: any) => {\n filterexpressions = JSON.stringify(response.filterExpressions);\n debouncedFn();\n });\n destroyFn(() => filterSubscription.unsubscribe());\n};\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDistinctFieldProperties\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Returns the properties required for dataset widgets\n *\n * @param {object} dataSource variable source for the widget\n * @param {object} formField definition of the column/ field\n *\n */\nexport const getDistinctFieldProperties = (dataSource, formField) => {\n const props: any = {};\n let fieldColumn;\n if (formField['is-related']) {\n props.tableName = formField['lookup-type'];\n fieldColumn = formField['lookup-field'];\n props.distinctField = fieldColumn;\n props.aliasColumn = fieldColumn.replace('.', '$'); // For related fields, In response . is replaced by $\n props.filterExpr = formField.filterexpressions ? (isObject(formField.filterexpressions) ? formField.filterexpressions : JSON.parse(formField.filterexpressions)) : {};\n } else {\n props.tableName = dataSource.execute(DataSource.Operation.GET_ENTITY_NAME);\n fieldColumn = formField.field || formField.key;\n props.distinctField = fieldColumn;\n props.aliasColumn = fieldColumn;\n }\n return props;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDistinctValues\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Returns the distinct values for a field\n *\n * @param {object} formField definition of the column/ field\n * @param {string} widget widget property on the field\n * @param {object} variable variable for the widget\n * @param {function} callBack Function to be executed after fetching results\n *\n */\nexport function getDistinctValues(dataSource, formField, widget) {\n let props;\n\n return new Promise((res, rej) => {\n if (isDataSetWidget(formField[widget]) && (!formField.isDataSetBound || widget === 'filterwidget')) {\n props = getDistinctFieldProperties(dataSource, formField);\n dataSource.execute(DataSource.Operation.GET_DISTINCT_DATA_BY_FIELDS, {\n fields: props.distinctField,\n entityName: props.tableName,\n pagesize: formField.limit,\n filterExpr: formField.filterexpressions ? JSON.parse(formField.filterexpressions) : {}\n }).then(response => {\n res({ 'field': formField, 'data': response.data, 'aliasColumn': props.aliasColumn });\n }, rej);\n }\n });\n}\n\n// Set the data field properties on dataset widgets\nfunction setDataFields(formField, options?) {\n // For search widget, set search key and display label\n if (isSearchWidgetType(formField[options.widget])) {\n formField.datafield = options.aliasColumn || LIVE_CONSTANTS.LABEL_KEY;\n formField.searchkey = options.distinctField || LIVE_CONSTANTS.LABEL_KEY;\n formField.displaylabel = formField.displayfield = (options.aliasColumn || LIVE_CONSTANTS.LABEL_VALUE);\n return;\n }\n formField.datafield = LIVE_CONSTANTS.LABEL_KEY;\n formField.displayfield = LIVE_CONSTANTS.LABEL_VALUE;\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#setFieldDataSet\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to set the dataSet on the fields\n *\n * @param {object} formField definition of the column/ field\n * @param {object} data data returned from the server\n * @param {string} aliasColumn column field name\n * @param {string} widget widget property on the field\n * @param {boolean} isEnableEmptyFilter is null or empty values allowed on filter\n *\n */\nfunction setFieldDataSet(formField, data, options?) {\n const emptySupportWidgets = [FormWidgetType.SELECT, FormWidgetType.RADIOSET];\n const emptyOption = {};\n const dataSet = [];\n if (options.isEnableEmptyFilter && includes(emptySupportWidgets, formField[options.widget]) &&\n !formField['is-range'] && !formField.multiple) {\n // If empty option is selected, push an empty object in to dataSet\n emptyOption[LIVE_CONSTANTS.LABEL_KEY] = LIVE_CONSTANTS.EMPTY_KEY;\n emptyOption[LIVE_CONSTANTS.LABEL_VALUE] = options.EMPTY_VALUE || LIVE_CONSTANTS.EMPTY_VALUE;\n dataSet.push(emptyOption);\n }\n each(data, key => {\n const value = key[options.aliasColumn];\n const option = {};\n if (value !== null && value !== '') {\n option[LIVE_CONSTANTS.LABEL_KEY] = value;\n option[LIVE_CONSTANTS.LABEL_VALUE] = value;\n dataSet.push(option);\n }\n });\n setDataFields(formField, options);\n formField.dataset = dataSet;\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#fetchDistinctValues\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to fetch the distinct values for a field\n *\n * @param {object} scope scope of the widget\n * @param {object} formFields definitions of the column/ field\n * @param {string} widget widget property on the field\n * @param {boolean} isEnableEmptyFilter is null or empty values allowed on filter\n *\n */\nexport function fetchDistinctValues(dataSource, formFields, options) {\n if (isEmpty(formFields)) {\n return;\n }\n formFields.forEach(formField => {\n getDistinctValuesForField(dataSource, formField, options);\n });\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDistinctValuesForField\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to fetch the distinct values for a field\n *\n * @param {object} scope scope of the widget\n * @param {object} formFields definitions of the column/ field\n * @param {string} widget widget property on the field\n * @param {boolean} isEnableEmptyFilter is null or empty values allowed on filter\n *\n */\nexport function getDistinctValuesForField(dataSource, formField, options?) {\n if (!dataSource || !formField || formField.isDataSetBound) {\n return;\n }\n if (isSearchWidgetType(formField[options.widget])) {\n const dataoptions = getDistinctFieldProperties(dataSource, formField);\n formField.dataoptions = dataoptions;\n setDataFields(formField, Object.assign(options || {}, dataoptions));\n formField.datasource = dataSource;\n } else {\n interpolateBindExpressions(formField.viewParent, formField.filterexpressions, (filterexpressions) => {\n formField.filterexpressions = filterexpressions;\n getDistinctValues(dataSource, formField, options.widget).then((res: any) => {\n setFieldDataSet(res.field, res.data, {\n aliasColumn: res.aliasColumn,\n widget: options.widget,\n isEnableEmptyFilter: getEnableEmptyFilter(options.enableemptyfilter),\n EMPTY_VALUE: options.EMPTY_VALUE\n });\n });\n });\n }\n}\n\nfunction isDefinedAndNotEmpty(val) {\n return isDefined(val) && val !== '' && val !== null;\n}\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.getRangeFieldValue\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the field value for range\n *\n * @param {string} minValue min value selected\n * @param {string} maxValue max value selected\n */\nexport function getRangeFieldValue(minValue, maxValue) {\n let fieldValue;\n if (isDefinedAndNotEmpty(minValue) && isDefinedAndNotEmpty(maxValue)) {\n fieldValue = [minValue, maxValue];\n } else if (isDefinedAndNotEmpty(minValue)) {\n fieldValue = minValue;\n } else if (isDefinedAndNotEmpty(maxValue)) {\n fieldValue = maxValue;\n }\n return fieldValue;\n}\n/**\n * @ngdoc function\n * @name wm.widgets.live.getRangeMatchMode\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the match mode for range\n *\n * @param {string} minValue min value selected\n * @param {string} maxValue max value selected\n */\nexport function getRangeMatchMode(minValue, maxValue) {\n let matchMode;\n // If two values exists, then it is between. Otherwise, greater or lesser\n if (isDefinedAndNotEmpty(minValue) && isDefinedAndNotEmpty(maxValue)) {\n matchMode = MatchMode.BETWEEN;\n } else if (isDefinedAndNotEmpty(minValue)) {\n matchMode = MatchMode.GREATER;\n } else if (isDefinedAndNotEmpty(maxValue)) {\n matchMode = MatchMode.LESSER;\n }\n return matchMode;\n}\n/**\n * @ngdoc function\n * @name wm.widgets.live.getEnableEmptyFilter\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * This function checks if enable filter options is set on live filter\n *\n * @param {object} enableemptyfilter empty filter options\n */\nexport function getEnableEmptyFilter(enableemptyfilter) {\n return enableemptyfilter && intersection(enableemptyfilter.split(','), LIVE_CONSTANTS.NULL_EMPTY).length > 0;\n}\n/**\n * @ngdoc function\n * @name wm.widgets.live.getEmptyMatchMode\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the match mode based on the filter selected\n *\n * @param {object} enableemptyfilter empty filter options\n */\nexport function getEmptyMatchMode(enableemptyfilter) {\n let matchMode;\n const emptyFilterOptions = split(enableemptyfilter, ',');\n if (intersection(emptyFilterOptions, LIVE_CONSTANTS.NULL_EMPTY).length === 2) {\n matchMode = MatchMode.NULLOREMPTY;\n } else if (includes(emptyFilterOptions, LIVE_CONSTANTS.NULL)) {\n matchMode = MatchMode.NULL;\n } else if (includes(emptyFilterOptions, LIVE_CONSTANTS.EMPTY)) {\n matchMode = MatchMode.EMPTY;\n }\n return matchMode;\n}\n\n/**\n * converts the data passed to array.\n * -> Array: [1,2,3] - [1,2,3]\n * -> String: a,b,c - ['a','b','c']\n * -> object: {a:1} - [{a:1}]\n * -> null - []\n * -> undefined - []\n * @param data\n * @returns {Array<any>}\n */\nexport const createArrayFrom = (data): Array<any> => {\n\n if (isUndefined(data) || isNull(data)) {\n return [];\n }\n\n if (isString(data)) {\n data = data.split(',').map(Function.prototype.call, String.prototype.trim);\n }\n\n if (!isArray(data)) {\n data = [data];\n }\n\n return data;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.applyFilterOnField\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * Function to get the updated values when filter on field is changed\n *\n * @param {object} $scope scope of the filter field/form field\n * @param {object} filterDef filter/form definition of the field\n * @param {boolean} isFirst boolean value to check if this method is called on load\n */\nexport function applyFilterOnField(dataSource, filterDef, formFields, newVal, options: any = {}) {\n const fieldName = filterDef.field || filterDef.key;\n const filterOnFields = filter(formFields, {'filter-on': fieldName});\n\n newVal = filterDef['is-range'] ? getRangeFieldValue(filterDef.minValue, filterDef.maxValue) : (isDefined(newVal) ? newVal : filterDef.value);\n if (!dataSource || (options.isFirst && (isUndefined(newVal) || newVal === ''))) {\n return;\n }\n // Loop over the fields for which the current field is filter on field\n forEach(filterOnFields, filterField => {\n const filterKey = filterField.field || filterField.key;\n const lookUpField = filterDef['lookup-field'] || filterDef._primaryKey;\n const filterWidget = filterField['edit-widget-type'] || filterField.widgettype;\n let filterFields = {};\n let filterOn = filterField['filter-on'];\n let filterVal;\n let fieldColumn;\n let matchMode;\n if (!isDataSetWidget(filterWidget) || filterField.isDataSetBound || filterOn === filterKey) {\n return;\n }\n // For related fields, add lookupfield for query generation\n if (filterDef && filterDef['is-related']) {\n filterOn += '.' + lookUpField;\n }\n if (isDefined(newVal)) {\n if (filterDef['is-range']) {\n matchMode = getRangeMatchMode(filterDef.minValue, filterDef.maxValue);\n } else if (getEnableEmptyFilter(options.enableemptyfilter) && newVal === LIVE_CONSTANTS.EMPTY_KEY) {\n matchMode = getEmptyMatchMode(options.enableemptyfilter);\n } else {\n matchMode = MatchMode.EQUALS;\n }\n filterVal = (isObject(newVal) && !isArray(newVal)) ? newVal[lookUpField] : newVal;\n filterFields[filterOn] = {\n 'value': filterVal,\n 'matchMode': matchMode\n };\n } else {\n filterFields = {};\n }\n fieldColumn = filterKey;\n\n if (isSearchWidgetType(filterWidget) && filterField.dataoptions) {\n filterField.dataoptions.filterFields = filterFields;\n } else {\n dataSource.execute(DataSource.Operation.GET_DISTINCT_DATA_BY_FIELDS, {\n 'fields': fieldColumn,\n 'filterFields': filterFields,\n 'pagesize': filterField.limit\n }).then(response => {\n setFieldDataSet(filterField, response.data, {\n aliasColumn: fieldColumn,\n widget: options.widget || 'widgettype',\n isEnableEmptyFilter: getEnableEmptyFilter(options.enableemptyfilter),\n EMPTY_VALUE: options.EMPTY_VALUE\n });\n }, noop);\n }\n });\n}\n\n// Transform data as required by data table\nexport function transformData(dataObject, variableName) {\n let newObj,\n tempArr,\n keys,\n oldKeys,\n numKeys,\n newObject,\n tempObj;\n\n // data sanity testing\n dataObject = dataObject || [];\n // if the dataObject is not an array make it an array\n if (!isArray(dataObject)) {\n // if the data returned is of type string, make it an object inside an array\n if (isString(dataObject)) {\n keys = variableName.substring(variableName.indexOf('.') + 1, variableName.length).split('.');\n oldKeys = [];\n numKeys = keys.length;\n newObject = {};\n tempObj = newObject;\n\n // loop over the keys to form appropriate data object required for grid\n keys.forEach((key, index) => {\n // loop over old keys to create new object at the iterative level\n oldKeys.forEach(oldKey => {\n tempObj = newObject[oldKey];\n });\n tempObj[key] = index === numKeys - 1 ? dataObject : {};\n oldKeys.push(key);\n });\n\n // change the string data to the new dataObject formed\n dataObject = newObject;\n }\n dataObject = [dataObject];\n } else {\n /*if the dataObject is an array and each value is a string, then lite-transform the string to an object\n * lite-transform: just checking if the first value is string and then transforming the object, instead of traversing through the whole array\n * */\n if (isString(dataObject[0])) {\n tempArr = [];\n forEach(dataObject, str => {\n newObj = {};\n newObj[variableName.split('.').join('-')] = str;\n tempArr.push(newObj);\n });\n dataObject = tempArr;\n }\n }\n return dataObject;\n}\n","import { $parseEvent, getClonedObject, getFormattedDate, isDefined, isEqualWithFields } from '@wm/core';\n\nimport { getEvaluatedData, getObjValueByKey } from './widget-utils';\n\nimport { ALLFIELDS } from './data-utils';\nimport { ToDatePipe } from '../pipes/custom-pipes';\nimport {\n cloneDeep,\n filter,\n forEach, get, groupBy, includes,\n isArray, isEqual,\n isNull,\n isObject,\n isString,\n isUndefined, keys,\n orderBy as _orderBy, sortBy,\n split, toLower,\n trim, uniqBy, uniqWith, values\n} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst momentLocale = moment.localeData();\nconst momentCalendarOptions = getClonedObject(momentLocale._calendar);\nconst momentCalendarDayOptions = momentLocale._calendarDay || {\n lastDay: '[Yesterday]',\n lastWeek: '[Last] dddd',\n nextDay: '[Tomorrow]',\n nextWeek: 'dddd',\n sameDay: '[Today]',\n sameElse: 'L'\n };\nconst GROUP_BY_OPTIONS = {\n ALPHABET: 'alphabet',\n WORD: 'word',\n OTHERS: 'Others'\n };\nconst TIME_ROLLUP_OPTIONS = {\n HOUR: 'hour',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n YEAR: 'year'\n };\nconst ROLLUP_PATTERNS = {\n DAY: 'yyyy-MM-dd',\n WEEK: 'w \\'Week\\', yyyy',\n MONTH: 'MMM, yyyy',\n YEAR: 'YYYY',\n HOUR: 'hh:mm a'\n };\n\n/**\n * function to get the ordered dataset based on the given orderby\n */\nexport const getOrderedDataset = (dataSet: any, orderBy: string, innerItem?) => {\n if (!orderBy) {\n return cloneDeep(dataSet);\n }\n\n // The order by only works when the dataset contains list of objects.\n const items = orderBy.split(','),\n fields = [],\n directions = [];\n items.forEach(obj => {\n const item = obj.split(':');\n fields.push(innerItem ? innerItem + '.' + item[0] : item[0]);\n directions.push(item[1]);\n });\n return _orderBy(dataSet, fields, directions);\n};\n\n/**\n * Returns an array of object, each object contain the DataSetItem whose key, value, label are extracted from object keys.\n */\nexport const transformDataWithKeys = (dataSet: any) => {\n const data: DataSetItem[] = [];\n // if the dataset is instance of object (not an array) or the first item in the dataset array is an object,\n // then we extract the keys from the object and prepare the dataset items.\n if (isObject(dataSet[0]) || (isObject(dataSet) && !(dataSet instanceof Array))) {\n // getting keys of the object\n const objectKeys = Object.keys(dataSet[0] || dataSet);\n forEach(objectKeys, (objKey, index) => {\n data.push({\n key: objKey,\n label: objKey,\n value: objKey,\n index: index + 1\n });\n });\n }\n\n return data;\n};\n\n// Converts any type of data to array.\nexport const extractDataAsArray = data => {\n\n if (isUndefined(data) || isNull(data) || trim(data) === '') {\n return [];\n }\n\n if (isString(data)) {\n data = split(data, ',').map(str => str.trim());\n }\n\n if (!isArray(data)) {\n data = [data];\n }\n\n return data;\n};\n\n// This function return always an object containing dataset details.\nexport const convertDataToObject = dataResult => {\n if (isString(dataResult)) {\n dataResult = split(dataResult, ',').map(str => str.trim());\n }\n\n return dataResult;\n};\n\n// This function used to check the search type widget\nconst isSeachWidget = (widgetType) => {\n return widgetType === 'wm-search';\n};\n\n// This function is used to set the groupby field for search/autocomplete\nconst setGroupbyKey = (scope, context, dataSetItem, innerItem) => {\n if (scope && isSeachWidget(scope.widgetType)) {\n if (scope.groupby) {\n if (includes(scope.groupby, '(')) {\n //[Todo-CSP]: can generate expr fn in page based on groupby property on widget\n const groupDataByUserDefinedFn = $parseEvent(scope.groupby);\n (dataSetItem as any).groupby = groupDataByUserDefinedFn(context, {'row': dataSetItem.dataObject || dataSetItem});\n } else {\n (dataSetItem as any).groupby = groupDataByField(scope.groupby, scope.match, innerItem, scope.dateformat, scope.datePipe, scope.appDefaults, dataSetItem);\n }\n } else {\n (dataSetItem as any).groupby = '';\n }\n }\n};\n\n/**\n * The first step in datasetItems creation is data transformation:\n *\n * The dataset can contain one of the following formats and each of them to be converted to the given format;\n *\n * 1) The comma separated string..eg: A,B,C => [{ key: 'A', value: 'A'}, { key: 'B', value: 'B'}, { key: 'C', value: 'C'}]\n * 2) The array of values eg: [1,2,3] => [{ key: 1, value: 1}, { key: 2, value: 2}, { key: 3, value: 3}]\n * 3) an object eg: {name: 'A', age: 20} => [ {key: 'name', value: 'A'}, {key: 'age', value: 20}]\n * 4) an array of objects...eg: [ {name: 'A', age: 20}, {name: 'B', age: 20}] ==> returns [{key: _DATAFIELD_, value: _DISPLAYFIELD, label: _DISPLAYVALUE}]\n */\nexport const transformFormData = (context: any, dataSet: any, myDataField?: string, displayOptions?, startIndex?: number, scope?: any): Array<DataSetItem> => {\n const data = [];\n if (!dataSet) {\n return;\n }\n dataSet = convertDataToObject(dataSet);\n\n // startIndex is the index of the next new item.\n if (isUndefined(startIndex)) {\n startIndex = 1;\n }\n\n if (isString(dataSet)) {\n dataSet = dataSet.split(',').map(str => str.trim());\n dataSet.forEach((option, index) => {\n const dataSetItem = {key: option, value: option, label: (isDefined(option) && option !== null) ? option.toString() : '', index: startIndex + index};\n setGroupbyKey(scope, context, dataSetItem, 'value');\n data.push(dataSetItem);\n });\n } else if (isArray(dataSet) && !isObject(dataSet[0])) { // array of primitive values only\n dataSet.forEach((option, index) => {\n const dataSetItem = {key: option, value: option, label: (isDefined(option) && option !== null) ? option.toString() : '', index: startIndex + index};\n setGroupbyKey(scope, context, dataSetItem, 'value');\n data.push(dataSetItem);\n });\n } else if (!(dataSet instanceof Array) && isObject(dataSet)) {\n const i = 0;\n forEach(dataSet, (value, key) => {\n // @ts-ignore\n const dataSetItem = {key: trim(key), value: key, label: (isDefined(value) && value !== null) ? value.toString() : '',\n index: startIndex,\n dataObject: dataSet\n };\n setGroupbyKey(scope, context, dataSetItem, 'value');\n data.push(dataSetItem);\n });\n } else {\n if (!myDataField) { // consider the datafield as 'ALLFIELDS' when datafield is not given.\n myDataField = ALLFIELDS;\n }\n dataSet.forEach((option, index) => {\n const key = myDataField === ALLFIELDS ? startIndex + index : getObjValueByKey(option, myDataField);\n // Omit all the items whose datafield (key) is null or undefined.\n if (!isUndefined(key) && !isNull(key)) {\n const label = getEvaluatedData(option, {\n field: displayOptions.displayField,\n expression: displayOptions.displayExpr,\n bindExpression: displayOptions.bindDisplayExpr\n }, context);\n const dataSetItem = {\n key: key,\n label: (isDefined(label) && label !== null) ? label.toString() : '',\n value: myDataField === ALLFIELDS ? option : key,\n dataObject: option, // represents the object when datafield is ALLFIELDS. This is used as innerItem while grouping the datasetItems.\n index: startIndex + index\n };\n if (displayOptions.displayImgSrc || displayOptions.bindDisplayImgSrc) {\n (dataSetItem as any).imgSrc = getEvaluatedData(option, {\n expression: displayOptions.displayImgSrc,\n bindExpression: displayOptions.bindDisplayImgSrc\n }, context);\n }\n setGroupbyKey(scope, context, dataSetItem, 'dataObject');\n\n data.push(dataSetItem);\n }\n });\n }\n return data;\n};\n\n/**\n * Private method to get the unique objects by the data field\n */\nexport const getUniqObjsByDataField = (data: Array<DataSetItem>, dataField: string, displayField: string, allowEmptyFields?: boolean) => {\n let uniqData;\n const isAllFields = dataField === ALLFIELDS;\n\n uniqData = isAllFields ? uniqWith(data, isEqual) : uniqBy(data, 'key');\n\n if (!displayField || allowEmptyFields) {\n return uniqData;\n }\n\n // return objects having non empty datafield and display field values.\n return filter(uniqData, (obj) => {\n if (isAllFields) {\n return trim(obj.label);\n }\n return trim(obj.key) && trim(obj.label);\n });\n};\n\n/**\n * This function sets the selectedItem by comparing the field values, where fields are passed by \"compareby\" property.\n * works only for datafield with ALL_FIELDS\n * @param datasetItems list of dataset items.\n * @param compareWithDataObj represents the datavalue (object) whose properties are to be checked against each property of datasetItem.\n * @param compareByField specifies the property names on which datasetItem has to be compared against datavalue object.\n */\nexport const setItemByCompare = (datasetItems: Array<DataSetItem>, compareWithDataObj: Object, compareByField: string) => {\n // compare the fields based on fields given to compareby property.\n forEach(datasetItems, opt => {\n if (isEqualWithFields(opt.value, compareWithDataObj, compareByField)) {\n opt.selected = true;\n return false;\n }\n });\n};\n\n/**\n * This method returns sorted data based to groupkey.\n * Returns a array of objects, each object containing key which is groupKey and data is the sorted data which is sorted by groupby field in the data.\n *\n * @param groupedLiData, grouped data object with key as the groupKey and its value as the array of objects grouped under the groupKey.\n * @param groupBy, string groupby property\n * @returns {any[]}\n */\nconst getSortedGroupedData = (groupedLiData: Object, groupBy: string, orderby: string) => {\n const _groupedData = [];\n forEach(keys(groupedLiData), (groupkey, index) => {\n const liData = getOrderedDataset(groupedLiData[groupkey], orderby, 'dataObject');\n _groupedData.push({\n key: groupkey,\n data: sortBy(liData, data => {\n data._groupIndex = index + 1;\n return get(data, groupBy) || get(data.dataObject, groupBy);\n })\n });\n });\n return _groupedData;\n};\n\n/**\n * This method gets the groupedData using groupby property and match and returns the sorted array of objects.\n *\n * @param compRef represents the component's reference i.e. \"this\" value.\n * @param data represents the dataset i.e array of objects.\n * @param groupby, string groupby property\n * @param match, string match property\n * @param orderby, string orderby property\n * @param dateformat, string dateFormat property\n * @param innerItem, represents the innerItem on which groupby has to be applied. Incase of datasetItems, 'dataObject' contains the full object. Here innerItem is dataObject.\n * @returns {any[]} groupedData, array of objects, each object having key and data.\n */\nexport const groupData = (compRef: any, data: Array<Object | DataSetItem>, groupby: string, match: string, orderby: string, dateformat: string, datePipe: ToDatePipe, innerItem?: string, AppDefaults?: any) => {\n let groupedLiData = {};\n if (includes(groupby, '(')) {\n //[Todo-CSP]: can generate expr fn in page based on groupby property on widget\n const groupDataByUserDefinedFn = $parseEvent(groupby);\n groupedLiData = groupBy(data, val => {\n // @ts-ignore\n return groupDataByUserDefinedFn(compRef.viewParent, {'row': val.dataObject || val});\n });\n } else {\n groupedLiData = getGroupedData(data, groupby, match, orderby, dateformat, datePipe, innerItem, AppDefaults);\n }\n\n return getSortedGroupedData(groupedLiData, groupby, orderby);\n};\n\n/**\n * This method prepares the grouped data.\n *\n * @param fieldDefs array of objects i.e. dataset\n * @param groupby string groupby\n * @param match string match\n * @param orderby string orderby\n * @param dateFormat string date format\n * @param innerItem, item to look for in the passed data\n */\nconst getGroupedData = (fieldDefs: Array<Object | DataSetItem>, groupby: string, match: string, orderby: string, dateFormat: string, datePipe: ToDatePipe, innerItem?: string, AppDefaults?: any) => {\n // For day, set the relevant moment calendar options\n if (match === TIME_ROLLUP_OPTIONS.DAY) {\n momentLocale._calendar = momentCalendarDayOptions;\n }\n\n // handling case-in-sensitive scenario\n // ordering the data based on groupby field. If there is innerItem then apply orderby using the innerItem's containing the groupby field.\n fieldDefs = _orderBy(fieldDefs, fieldDef => {\n const groupKey = get(innerItem ? fieldDef[innerItem] : fieldDef, groupby);\n if (groupKey) {\n return toLower(groupKey);\n }\n });\n\n // extract the grouped data based on the field obtained from 'groupDataByField'.\n const groupedLiData = groupBy(fieldDefs, groupDataByField.bind(undefined, groupby, match, innerItem, dateFormat, datePipe, AppDefaults));\n\n momentLocale._calendar = momentCalendarOptions; // Reset to default moment calendar options\n\n return groupedLiData;\n};\n\n// Format the date with given date format\nexport const filterDate = (value: string | number, format: string, defaultFormat: string, datePipe: ToDatePipe) => {\n if (format === 'timestamp') { // For timestamp format, return the epoch value\n return value;\n }\n\n return getFormattedDate(datePipe, value, format || defaultFormat);\n};\n\n\n/**\n * This method returns the groupkey based on the rollup (match) passed\n *\n * @param concatStr, string containing groupby field value\n * @param rollUp string containing the match property.\n * @param dateformat string containing the date format to display the date.\n */\nconst getTimeRolledUpString = (concatStr: string, rollUp: string, dateformat: string, datePipe?: ToDatePipe, AppDefaults?: any) => {\n let groupByKey,\n strMoment = moment(concatStr),\n dateFormat = dateformat;\n\n const currMoment = moment(),\n getSameElseFormat = function () { // Set the sameElse option of moment calendar to user defined pattern\n return '[' + filterDate(this.valueOf(), dateFormat, ROLLUP_PATTERNS.DAY, datePipe) + ']';\n };\n\n switch (rollUp) {\n case TIME_ROLLUP_OPTIONS.HOUR:\n dateFormat = dateFormat || AppDefaults.timeFormat;\n\n // If date is invalid, check if data is in form of hh:mm a\n if (!strMoment.isValid()) {\n strMoment = moment(new Date().toDateString() + ' ' + concatStr);\n\n if (strMoment.isValid()) {\n // As only time is present, roll up at the hour level with given time format\n momentLocale._calendar.sameDay = function () {\n return '[' + filterDate(this.valueOf(), dateFormat, ROLLUP_PATTERNS.HOUR, datePipe) + ']';\n };\n }\n }\n // round off to nearest last hour\n strMoment = strMoment.startOf('hour');\n momentLocale._calendar.sameElse = getSameElseFormat;\n groupByKey = strMoment.calendar(currMoment);\n break;\n case TIME_ROLLUP_OPTIONS.WEEK:\n groupByKey = filterDate(strMoment.valueOf(), dateFormat, ROLLUP_PATTERNS.WEEK, datePipe);\n break;\n case TIME_ROLLUP_OPTIONS.MONTH:\n groupByKey = filterDate(strMoment.valueOf(), dateFormat, ROLLUP_PATTERNS.MONTH, datePipe);\n break;\n case TIME_ROLLUP_OPTIONS.YEAR:\n groupByKey = strMoment.format(ROLLUP_PATTERNS.YEAR);\n break;\n case TIME_ROLLUP_OPTIONS.DAY:\n dateFormat = dateFormat || AppDefaults.dateFormat;\n strMoment = strMoment.startOf('day'); // round off to current day\n momentLocale._calendar.sameElse = getSameElseFormat;\n groupByKey = strMoment.calendar(currMoment);\n break;\n }\n // If invalid date is returned, Categorize it as Others.\n if (groupByKey === 'Invalid date') {\n return GROUP_BY_OPTIONS.OTHERS;\n }\n return groupByKey;\n};\n\n\n// groups the fields based on the groupby value.\nconst groupDataByField = (groupby: string, match: string, innerItem: string, dateFormat: string, datePipe: ToDatePipe, AppDefaults: any, liData: Object) => {\n // get the groupby field value from the liData or innerItem in the liData.\n let concatStr = get(innerItem ? liData[innerItem] : liData, groupby);\n\n // by default set the undefined groupKey as 'others'\n if (isUndefined(concatStr) || isNull(concatStr) || concatStr.toString().trim() === '') {\n return GROUP_BY_OPTIONS.OTHERS;\n }\n\n // if match prop is alphabetic ,get the starting alphabet of the word as key.\n if (match === GROUP_BY_OPTIONS.ALPHABET) {\n concatStr = concatStr.substr(0, 1);\n }\n\n // if match contains the time options then get the concatStr using 'getTimeRolledUpString'\n if (includes(values(TIME_ROLLUP_OPTIONS), match)) {\n concatStr = getTimeRolledUpString(concatStr, match, dateFormat, datePipe, AppDefaults);\n }\n\n return concatStr;\n};\n\n/**\n * This method toggles all the list items inside the each list group.\n * @param el, component reference on which groupby is applied.\n */\nexport const toggleAllHeaders = (el: any) => {\n const groups = $(el.nativeElement).find('.item-group');\n\n groups.find('.group-list-item').toggle();\n\n // toggle the collapse icon on list header.\n const groupIcons = groups.find('li.list-group-header .app-icon');\n\n if (groupIcons) {\n forEach(groupIcons, (icon) => {\n const $icon = $(icon);\n if ($icon.hasClass('wi-chevron-down')) {\n $icon.removeClass('wi-chevron-down').addClass('wi-chevron-up');\n } else {\n $icon.removeClass('wi-chevron-up').addClass('wi-chevron-down');\n }\n });\n }\n};\n\n/**\n * On list header click, toggle the list items in this group.\n * and also toggle the header icon.\n * @param $event\n */\nexport const handleHeaderClick = ($event: Event) => {\n const selectedGroup = $($event.target as any).closest('.item-group'),\n selectedAppIcon = selectedGroup.find('li.list-group-header .app-icon');\n\n if (selectedAppIcon.hasClass('wi-chevron-down')) {\n selectedAppIcon.removeClass('wi-chevron-down').addClass('wi-chevron-up');\n } else {\n selectedAppIcon.removeClass('wi-chevron-up').addClass('wi-chevron-down');\n }\n\n selectedGroup.find('.group-list-item').toggle();\n};\n\n/**\n * configures reordering the items.\n * @param $el element to be sortable\n * @param options object containing the sortable options.\n * @param startCb callback on drag start on the element.\n * @param updateCb callback triggerred when sorting is stopped and the DOM position has changed.\n * @param sortCb callback triggerred during the sorting of an element.\n */\nexport const configureDnD = ($el: any, options: object, startCb: Function, updateCb: Function, sortCb?: Function) => {\n const sortOptions = Object.assign({\n containment: $el,\n delay: 100,\n opacity: 0.8,\n helper: 'clone',\n zIndex: 1050,\n tolerance: 'pointer',\n start: startCb,\n update: updateCb,\n sort: sortCb\n }, options);\n\n $el.sortable(sortOptions);\n};\n\n// Todo: convert to Class\ninterface DataSetProps {\n datafield: string;\n displayfield?: string;\n displayexpression?: string;\n usekeys?: boolean;\n orderby?: string;\n}\n\n/**\n * key represents the datafield value\n * label represents display value or expression value\n * value displayValue for primitives and data object for allFields\n * dataObject represent the object from the dataset when datafield is ALLFIELDS. This is used as innerItem while grouping the datasetItems.\n * imgSrc picture source\n * selected represents boolean to notify selected item.\n */\nexport class DataSetItem {\n key: any;\n label: any;\n value: any;\n dataObject?: Object;\n index?: number;\n imgSrc?: string;\n selected?: boolean;\n}\n","import { isNumberType, FormWidgetType, DataType, isMobileApp, isAndroid } from '@wm/core';\nimport {forEach, get, includes, split} from \"lodash-es\";\n\nconst VIEW_MODE_OPTIONS = {\n DEFAULT : 'default',\n LABEL : 'label'\n};\n\nexport const EDIT_MODE = {\n QUICK_EDIT : 'quickedit',\n INLINE : 'inline',\n FORM : 'form',\n DIALOG : 'dialog'\n};\n\n// Method to set the header config of the data table\nexport const setHeaderConfig = (headerConfig, config, field, index?: number): void => {\n forEach(headerConfig, cols => {\n if (get(cols, 'isGroup')) {\n if (cols.field === field) {\n cols.columns[index] = config;\n } else {\n setHeaderConfig(cols.columns, config, field, index);\n }\n }\n });\n};\n\nexport const setHeaderConfigForTable = (headerConfig: any, config: any, fieldName: string, index?: number): void => {\n if (fieldName) {\n setHeaderConfig(headerConfig, config, fieldName, index);\n } else {\n headerConfig[index] = config;\n }\n};\n\nexport const getRowOperationsColumn = (): any => {\n return {\n 'field' : 'rowOperations',\n 'type' : 'custom',\n 'displayName' : 'Actions',\n 'width' : '120px',\n 'readonly' : true,\n 'sortable' : false,\n 'searchable' : false,\n 'resizable' : false,\n 'selectable' : false,\n 'show' : true,\n 'operations' : [],\n 'opConfig' : {},\n 'pcDisplay' : true,\n 'mobileDisplay' : true,\n 'tabletDisplay' : true,\n 'include' : true,\n 'isRowOperation': true\n };\n};\n\n/**\n * Returns caption and widget bootstrap classes for the field\n */\nexport const getFieldLayoutConfig = (captionWidth, captionPosition, os): any => {\n let captionCls = '',\n widgetCls = '';\n\n captionPosition = captionPosition || 'top';\n\n if (captionPosition === 'top' || captionPosition === 'floating') {\n if ((os && os === 'android') || !isMobileApp() || isAndroid()) { // Is android or not a mobile application\n captionCls = widgetCls = 'col-xs-12';\n } else if (isMobileApp()) { // Is a mobile application and not android\n captionCls = 'col-xs-4';\n widgetCls = 'col-xs-8';\n }\n } else if (captionWidth) {\n // handling itemsperrow containing string of classes\n forEach(split(captionWidth, ' '), function (cls) {\n const keys = split(cls, '-'),\n tier = keys[0];\n let _captionWidth,\n widgetWidth;\n _captionWidth = parseInt(keys[1], 10);\n widgetWidth = 12 - _captionWidth;\n widgetWidth = widgetWidth <= 0 ? 12 : widgetWidth;\n captionCls += ' ' + 'col-' + tier + '-' + _captionWidth;\n widgetCls += ' ' + 'col-' + tier + '-' + widgetWidth;\n });\n }\n return {\n 'captionCls' : captionCls,\n 'widgetCls' : widgetCls\n };\n};\n\nexport const getDefaultViewModeWidget = widget => {\n if (includes(['checkbox', 'toggle', 'rating'], widget)) {\n return VIEW_MODE_OPTIONS.DEFAULT;\n }\n return VIEW_MODE_OPTIONS.LABEL;\n};\n\nconst parseBooleanValue = value => {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (/^\\d+$/.test(value)) { // Check if the value is a string of number type like '123'\n return +value;\n }\n return value;\n};\n\nexport const parseValueByType = (value, type, widget, trailingzero?) => {\n if (widget) {\n if (widget === FormWidgetType.NUMBER || widget === FormWidgetType.SLIDER || widget === FormWidgetType.CURRENCY) {\n return isNaN(Number(value)) ? null : trailingzero ? value : Number(value);\n }\n if (widget === FormWidgetType.CHECKBOX || widget === FormWidgetType.TOGGLE) {\n return parseBooleanValue(value);\n }\n return value;\n }\n if (isNumberType(type)) {\n return isNaN(Number(value)) ? null : Number(value);\n }\n if (type === DataType.BOOLEAN) {\n return parseBooleanValue(value);\n }\n return value;\n};\n\nconst fieldTypeWidgetTypeMap = {\n 'integer' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'rating', 'slider', 'currency', 'autocomplete', 'chips'],\n 'big_integer': ['number', 'text', 'select', 'checkboxset', 'radioset', 'rating', 'slider', 'currency', 'autocomplete', 'chips'],\n 'short' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'float' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'big_decimal': ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'number' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'double' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'long' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'rating', 'slider', 'currency', 'autocomplete', 'chips'],\n 'byte' : ['number', 'text', 'select', 'checkboxset', 'radioset', 'slider', 'currency', 'autocomplete', 'chips'],\n 'string' : ['text', 'number', 'textarea', 'password', 'richtext', 'select', 'checkboxset', 'radioset', 'date', 'time', 'timestamp', 'switch', 'currency', 'autocomplete', 'chips', 'colorpicker'],\n 'character' : ['text', 'number', 'textarea', 'password', 'richtext', 'select', 'checkboxset', 'radioset', 'switch', 'currency', 'autocomplete', 'chips'],\n 'text' : ['text', 'number', 'textarea', 'password', 'richtext', 'select', 'checkboxset', 'radioset', 'date', 'time', 'timestamp', 'switch', 'currency', 'autocomplete', 'chips', 'colorpicker'],\n 'date' : ['date', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'time' : ['time', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'timestamp' : ['timestamp', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'datetime' : ['datetime', 'text', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],\n 'boolean' : ['checkbox', 'radioset', 'toggle', 'select'],\n 'list' : ['select', 'radioset', 'checkboxset', 'switch', 'autocomplete', 'chips'],\n 'clob' : ['text', 'textarea', 'richtext'],\n 'blob' : ['upload'],\n 'file' : ['upload'],\n 'custom' : ['text', 'number', 'textarea', 'password', 'checkbox', 'toggle', 'slider', 'richtext', 'currency', 'switch',\n 'select', 'checkboxset', 'radioset', 'date', 'time', 'timestamp', 'rating', 'datetime', 'autocomplete', 'chips', 'colorpicker']\n};\n\n// Get widgets applicable to the given type\nexport const getFieldTypeWidgetTypesMap = () => {\n return fieldTypeWidgetTypeMap;\n};\n\n// Get filter widget applicable to the given type\nexport const getDataTableFilterWidget = type => {\n let widget = fieldTypeWidgetTypeMap[type] && fieldTypeWidgetTypeMap[type][0];\n if (type === DataType.BOOLEAN) {\n widget = FormWidgetType.SELECT;\n }\n if (includes([FormWidgetType.TEXT, FormWidgetType.NUMBER, FormWidgetType.SELECT, FormWidgetType.AUTOCOMPLETE,\n FormWidgetType.DATE, FormWidgetType.TIME, FormWidgetType.DATETIME], widget)) {\n return widget;\n }\n return FormWidgetType.TEXT;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.getEditModeWidget\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * This function returns the default widget for grid\n *\n * @param {object} colDef field definition\n */\nexport const getEditModeWidget = colDef => {\n if (colDef['related-entity-name'] && colDef['primary-key']) {\n return FormWidgetType.SELECT;\n }\n return (fieldTypeWidgetTypeMap[colDef.type] && fieldTypeWidgetTypeMap[colDef.type][0]) || FormWidgetType.TEXT;\n};\n\n/**\n * @ngdoc function\n * @name wm.widgets.live.LiveWidgetUtils#getDefaultValue\n * @methodOf wm.widgets.live.LiveWidgetUtils\n * @function\n *\n * @description\n * return the formatted default value\n *\n * @param {string} value value to be formatted\n * @param {string} type column type of the value\n */\nexport const getDefaultValue = (value, type, widget) => {\n if (widget) {\n if (widget === FormWidgetType.NUMBER || widget === FormWidgetType.SLIDER || widget === FormWidgetType.CURRENCY) {\n return isNaN(Number(value)) ? null : Number(value);\n }\n if (widget === FormWidgetType.CHECKBOX || widget === FormWidgetType.TOGGLE) {\n return parseBooleanValue(value);\n }\n return value;\n }\n if (isNumberType(type)) {\n return isNaN(Number(value)) ? null : Number(value);\n }\n if (type === DataType.BOOLEAN) {\n return parseBooleanValue(value);\n }\n return value;\n};\n","import {Inject, Injector, Optional} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport {$appDigest, findValueOf, isObject, isDefined, validateAccessRoles} from '@wm/core';\nimport { SecurityService } from '@wm/security';\n\nimport { createArrayFrom } from '../../../utils/data-utils';\nimport { getEvaluatedData } from '../../../utils/widget-utils';\nimport { getOrderedDataset } from '../../../utils/form-utils';\nimport { StylableComponent } from './stylable.component';\nimport {debounce, first, get, isUndefined, omitBy, startsWith} from \"lodash-es\";\n\nconst getValidLink = (link) => {\n const routRegex = /^(\\/|#\\/|#)(?!\\W).*/;\n if (link) {\n if (routRegex.test(link)) {\n link = first(link.match(/[\\w]+.*/g)) || '';\n return `#/${link}`;\n }\n if (startsWith(link, 'www.')) {\n return `//${link}`;\n }\n return link;\n }\n};\n\nexport class DatasetAwareNavComponent extends StylableComponent {\n\n public nodes: Array<NavNode> = [];\n public dataset: any;\n public itemicon: string;\n public itemlabel: string;\n public itemlink: string;\n public itemtarget: string;\n public itembadge: string;\n public itemchildren: string;\n public itemaction: string;\n public itemclass: string;\n public itemid: string;\n public isactive: string;\n public userrole: string;\n public orderby: string;\n public datafield: string;\n public displayfield: string;\n\n private _itemFieldMap;\n private binditemlabel: string | null;\n private binditemicon: string | null;\n private binditemaction: string | null;\n private binditembadge: string | null;\n private binditemchildren: string | null;\n private binditemlink: string | null;\n private binditemtarget: string | null;\n private binduserrole: string | null;\n private bindisactive: string | null;\n private securityService: any;\n\n protected binditemid: string | null;\n protected nodes$ = new Subject();\n\n constructor(inj: Injector, WIDGET_CONFIG, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.securityService = this.inj.get(SecurityService);\n this.binditemlabel = this.nativeElement.getAttribute('itemlabel.bind');\n this.binditemicon = this.nativeElement.getAttribute('itemicon.bind');\n this.binditemaction = this.nativeElement.getAttribute('itemaction.bind');\n this.binditembadge = this.nativeElement.getAttribute('itembadge.bind');\n this.binditemchildren = this.nativeElement.getAttribute('itemchildren.bind');\n this.binditemid = this.nativeElement.getAttribute('itemid.bind');\n this.binditemlink = this.nativeElement.getAttribute('itemlink.bind');\n this.binditemtarget = this.nativeElement.getAttribute('itemtarget.bind');\n this.binduserrole = this.nativeElement.getAttribute('userrole.bind');\n this.bindisactive = this.nativeElement.getAttribute('isactive.bind');\n }\n\n /**\n * constructs individual node for the widget model.\n * @param fields\n * @param node\n */\n private getNode(fields, node): NavNode {\n const context = this.viewParent.pageScope || this.viewParent;\n const children = getEvaluatedData(node, {\n field: this.itemchildren,\n bindExpression: this.binditemchildren\n }, context) || get(node, fields.childrenField);\n const navNode = {\n action: getEvaluatedData(node, {\n field: this.itemaction,\n bindExpression: this.binditemaction\n }, context) || get(node, fields.actionField),\n badge: getEvaluatedData(node, {\n field: this.itembadge,\n bindExpression: this.binditembadge\n }, context) || get(node, fields.badgeField),\n children: Array.isArray(children) ? this.getNodes(children) : [],\n class: get(node, fields.classField),\n disabled: node.disabled,\n icon: getEvaluatedData(node, {\n field: this.itemicon,\n bindExpression: this.binditemicon\n }, context) || get(node, fields.iconField),\n id: getEvaluatedData(node, {\n field: this.itemid,\n bindExpression: this.binditemid\n }, context) || get(node, fields.idField),\n label: getEvaluatedData(node, {\n field: this.itemlabel,\n bindExpression: this.binditemlabel\n }, context) || get(node, fields.labelField),\n link: getValidLink(getEvaluatedData(node, {\n field: this.itemlink,\n bindExpression: this.binditemlink\n }, context) || get(node, fields.linkField)),\n target: getValidLink(getEvaluatedData(node, {\n field: this.itemtarget,\n bindExpression: this.binditemtarget\n }, context) || get(node, fields.targetField)),\n role: getEvaluatedData(node, {field: this.userrole, bindExpression: this.binduserrole}, context),\n isactive: getEvaluatedData(node, {field: this.isactive, bindExpression: this.bindisactive}, context),\n // older projects have display field & data field property for menu.\n value: this.datafield ? (this.datafield === 'All Fields' ? node : findValueOf(node, this.datafield)) : node\n };\n // @ts-ignore\n return omitBy(navNode, isUndefined);\n }\n\n resetItemFieldMap() {\n this._itemFieldMap = null;\n }\n\n getItemFieldsMap() {\n if (!this._itemFieldMap) {\n this._itemFieldMap = {\n idField: this.itemid || 'itemid',\n iconField: this.itemicon || 'icon',\n labelField: this.itemlabel || 'label',\n linkField: this.itemlink || 'link',\n targetField: this.itemtarget || 'target',\n badgeField: this.itembadge || 'badge',\n childrenField: this.itemchildren || 'children',\n classField: this.itemclass || 'class',\n actionField: this.itemaction || 'action',\n isactiveField: this.isactive || 'isactive'\n };\n }\n return this._itemFieldMap;\n }\n\n /**\n * returns array for the value passed as nv.\n * nv: 'a,b' => [{label:a, value:a}, {label:b, value:b}]\n * nv: [1,2] => [{label:1, value:1}, {label:2, value:2}]\n * nv: [{obj}, {obj}] => [{obj}, {obj}]\n * @param nv\n */\n private prepareNodeDataSet(nv) {\n nv = createArrayFrom(nv);\n return nv.map((val) => {\n if (!isObject(val)) {\n return {\n label: val,\n value: val\n };\n }\n return val;\n });\n }\n\n /**\n * constructs dataset form the nav elements.\n */\n private getNodes(nv = this.dataset || {}): Array<NavNode> {\n let nodes: Array<any> = getOrderedDataset(this.prepareNodeDataSet(nv), this.orderby) || [];\n\n if (nodes.length) {\n const userRole = this.userrole;\n const nodeFields = this.getItemFieldsMap();\n\n nodes = nodes.reduce((result, node) => {\n if (validateAccessRoles(node[userRole], this.securityService.loggedInUser)) {\n result.push(this.getNode(nodeFields, node));\n }\n return result;\n }, []);\n }\n return nodes;\n }\n\n // enable the inherited class to extend this method.\n protected resetNodes() {\n this.resetItemFieldMap();\n this.nodes = this.getNodes();\n $appDigest();\n // notify the node listeners\n this.nodes$.next(null);\n }\n\n // debounce function for reset nodes functions.\n private _resetNodes = debounce(this.resetNodes, 50);\n\n onPropertyChange(key, nv, ov) {\n switch (key) {\n case 'dataset':\n case 'itemicon':\n case 'itemlabel':\n case 'itemlink':\n case 'itemtarget':\n case 'itemclass':\n case 'itemchildren':\n case 'isactive':\n case 'orderby':\n // calls resetnodes method after 50ms. any calls within 50ms will be ignored.\n this._resetNodes();\n break;\n }\n super.onPropertyChange(key, nv, ov);\n }\n}\n\nexport interface NavNode {\n label: string;\n action?: any;\n badge?: string;\n children?: Array<NavNode>;\n class?: string;\n disabled?: boolean;\n icon?: string;\n id?: string;\n link?: string;\n role?: string;\n value?: any;\n}\n","import {Validators} from '@angular/forms';\n\nimport {$unwatch, $watch, FormWidgetType, VALIDATOR} from '@wm/core';\nimport {\n cloneDeep,\n concat,\n extend,\n filter,\n find,\n forEach,\n get,\n isEmpty,\n isFunction,\n keys as _keys,\n toUpper\n} from \"lodash-es\";\n\nconst DEFAULT_VALIDATOR = {\n pattern: 'regexp',\n max: 'maxvalue',\n min: 'minvalue',\n required: 'required',\n maxlength: 'maxchars',\n mindate: 'mindate',\n maxdate: 'maxdate',\n excludedates: 'excludedates',\n excludedays: 'excludedays',\n invalidNumber:'invalidNumber'\n};\n\nexport class BaseFieldValidations {\n private hasValidators;\n\n // Instance of the directive table-column, form-field..\n private instance;\n // Inline form widget\n public formwidget;\n // Widget type\n private widgettype;\n // From control\n private widgetControl;\n // Parent widget context Table, Form..\n private widgetContext;\n // Optional table column type quickedit newrow/ inline edit\n private tableFieldType;\n\n private defaultValidatorMessages: any;\n private _syncValidators: any;\n private _asyncValidatorFn: any;\n\n constructor(instance, formwidget, widgettype, widgetControl, widgetContext, tableFieldType?){\n this.instance = instance;\n this.formwidget = formwidget;\n this.widgettype = widgettype;\n this.widgetControl = widgetControl;\n this.widgetContext = widgetContext;\n\n this.defaultValidatorMessages = [];\n if (tableFieldType) {\n this.tableFieldType = tableFieldType;\n }\n }\n\n // this method returns the collection of supported default validators\n private getDefaultValidators() {\n const _validator = [];\n if (this.instance.required && this.instance.show !== false) {\n // For checkbox/toggle widget, required validation should consider true value only\n if (this.widgettype === FormWidgetType.CHECKBOX || this.widgettype === FormWidgetType.TOGGLE) {\n _validator.push(Validators.requiredTrue);\n } else {\n _validator.push(Validators.required);\n }\n }\n if (this.instance.maxchars) {\n _validator.push(Validators.maxLength(this.instance.maxchars));\n }\n if (this.instance.minvalue) {\n _validator.push(Validators.min(this.instance.minvalue));\n }\n if (this.instance.maxvalue && this.widgettype !== FormWidgetType.RATING) {\n _validator.push(Validators.max(this.instance.maxvalue));\n }\n if (this.instance.regexp) {\n _validator.push(Validators.pattern(this.instance.regexp));\n }\n if (this.formwidget && isFunction(this.formwidget.validate)) {\n _validator.push(this.formwidget.validate.bind(this.formwidget));\n }\n return _validator;\n }\n\n // On change of any validation property, set the angular form validators\n setUpValidators(customValidator?) {\n if (this.hasValidators) {\n return;\n }\n this.instance._validators = this.getDefaultValidators();\n\n if (customValidator) {\n this.instance._validators.push(customValidator);\n }\n\n if (this.widgetContext.ngform) {\n this.widgetControl.setValidators(this.instance._validators);\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.updateValueAndValidity(opt);\n }\n }\n\n getPromiseList(validators) {\n const arr = [];\n forEach(validators, (fn, index) => {\n let promise = fn;\n if (fn instanceof Function && fn.bind) {\n promise = fn(this.widgetControl, this.widgetContext);\n }\n if (promise instanceof Promise) {\n arr.push(promise);\n }\n });\n return arr;\n }\n\n // this method sets the asyncValidation on the form field. Assigns validationmessages from the returned response\n setAsyncValidators(validators) {\n this._asyncValidatorFn = () => {\n return () => {\n return Promise.all(this.getPromiseList(validators)).then(() => {\n this.instance.validationmessage = '';\n return null;\n }, err => {\n // if err obj has validationMessage key, then set validationMessage using this value\n // else return the value of the first key in the err object as validation message.\n if (err.hasOwnProperty('errorMessage')) {\n this.instance.validationmessage = get(err, 'errorMessage');\n } else {\n const keys = _keys(err);\n this.instance.validationmessage = (err[keys[0]]).toString();\n }\n return err;\n }).then(response => {\n // form control status is not changed from pending. This is an angular issue refer https://github.com/angular/angular/issues/13200\n const checkForStatusChange = () => {\n setTimeout(() => {\n if (this.widgetControl.status === 'PENDING') {\n checkForStatusChange();\n } else {\n this.instance.onStatusChange(this.widgetControl.status, this.tableFieldType);\n }\n }, 100);\n };\n checkForStatusChange();\n return response;\n });\n };\n };\n\n this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);\n if(this.widgetContext.ngform.touched){\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.updateValueAndValidity(opt);\n }\n }\n\n isDefaultValidator(type) {\n return get(VALIDATOR, toUpper(type));\n }\n\n // default validator is bound to a function then watch for value changes\n // otherwise set the value of default validator directly\n setDefaultValidator(key, value) {\n if (value && value instanceof Function) {\n // passing formfield and form as arguments to the default validator function\n this.watchDefaultValidatorExpr(value.bind(undefined, this.widgetControl, this.widgetContext), key);\n } else {\n this.instance.widget[key] = value;\n this.instance[key] = value;\n }\n }\n\n // sets the default validation on the form field\n setValidators(validators) {\n let _cloneValidators = cloneDeep(validators);\n this.hasValidators = true;\n this._syncValidators = [];\n forEach(_cloneValidators, (obj, index) => {\n // custom validation is bound to function.\n if (obj && obj instanceof Function) {\n // passing formfield and form as arguments to the obj (i.e. validator function)\n _cloneValidators[index] = obj.bind(undefined, this.widgetControl, this.widgetContext);\n this._syncValidators.push(_cloneValidators[index]);\n } else {\n // checks for default validator like required, maxchars etc.\n const key = get(obj, 'type');\n this.defaultValidatorMessages[key] = get(obj, 'errorMessage');\n if (this.isDefaultValidator(key)) {\n const value = get(obj, 'validator');\n this.setDefaultValidator(key, value);\n _cloneValidators[index] = '';\n }\n }\n });\n\n // _syncValidators contains all the custom validations on the form field. will not include default validators.\n this._syncValidators = filter(_cloneValidators, val => {\n if (val) {\n return val;\n }\n });\n this.applyDefaultValidators();\n }\n\n observeOn(fields, context) {\n forEach(fields, field => {\n const formfield = find(this.widgetContext[context], {'key': field});\n if (formfield) {\n if (!formfield.notifyForFields) {\n formfield.notifyForFields = [];\n }\n formfield.notifyForFields.push(this.instance);\n }\n });\n }\n\n validate() {\n this.applyDefaultValidators();\n if (this._asyncValidatorFn) {\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);\n this.widgetControl.updateValueAndValidity(opt);\n }\n // show the validation erros show when form is touched and not on load. This just highlights the field that is subscribed for changes.\n if (this.widgetContext.ngform.touched) {\n this.widgetControl.markAsTouched();\n }\n }\n\n // watches for changes in the bound function for default validators.\n watchDefaultValidatorExpr(fn, key) {\n const watchName = `${this.instance.widgetId}_` + key + '_formField';\n $unwatch(watchName);\n //[Todo-CSP]: Need clarity generate this expr fn if form is present in the page\n this.instance.registerDestroyListener($watch('boundFn(fn)', extend(this.instance, this.instance.viewParent), {fn}, (nv, ov) => {\n this.instance.widget[key] = nv;\n this.applyDefaultValidators();\n }, watchName));\n }\n isNullOrEmptyOrFalsy(value) {\n return isEmpty(value);\n }\n\n // invokes both custom sync validations and default validations.\n applyDefaultValidators() {\n const validators = this.getDefaultValidators();\n const opt = {};\n // updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset\n // emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.\n if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {\n opt['emitEvent'] = false;\n }\n this.widgetControl.setValidators(concat(this._syncValidators || [], validators));\n this.widgetControl.updateValueAndValidity(opt);\n this.setCustomValidationMessage();\n }\n\n setCustomValidationMessage() {\n const fieldErrors = this.widgetControl && this.widgetControl.errors;\n\n if (!fieldErrors) {\n return;\n }\n if (fieldErrors.hasOwnProperty('errorMessage')) {\n this.instance.validationmessage = get(fieldErrors, 'errorMessage');\n } else {\n const keys = _keys(fieldErrors);\n const key = keys[0];\n const validationMsgKey = get(DEFAULT_VALIDATOR, key) || this.formwidget.validateType;\n if (validationMsgKey) {\n const msg = get(this.defaultValidatorMessages, validationMsgKey) || this.instance.validationmessage;\n if (msg && msg instanceof Function) {\n // passing formfield and form as arguments to the errorMessage function.\n this.instance.validationmessage = msg(this.widgetControl, this.widgetContext);\n } else {\n this.instance.validationmessage = msg;\n }\n } else {\n // fallback when there is no validationmessage for fields other than default validators.\n this.instance.validationmessage = '';\n }\n }\n }\n}\n","import { SwipeAnimation } from '@swipey';\n\nimport { App, isIos, setCSS } from '@wm/core';\n\ndeclare const $;\n\nexport class PullToRefresh extends SwipeAnimation {\n private infoContainer: JQuery<HTMLElement>;\n private runAnimation: boolean;\n private count = 0;\n private spinner: Spinner;\n public cancelSubscription: Function;\n private animationInProgress: boolean;\n\n constructor(private $el: JQuery<HTMLElement>, private app: App, private onPullToRefresh: () => void) {\n super();\n const template = '<div class=\"refresh-container\"></div>';\n this.$el.prepend(template);\n this.infoContainer = this.$el.find('.refresh-container');\n\n if (isIos()) {\n this.infoContainer.addClass('ios-refresh-container');\n }\n\n this.init(this.$el);\n }\n\n public threshold() {\n return 10;\n }\n\n public direction() {\n return $.fn.swipey.DIRECTIONS.VERTICAL;\n }\n\n private subscribe() {\n // Subscribing for variable updates, wait till the response and stop the animation.\n this.cancelSubscription = this.app.subscribe('toggle-variable-state', (data) => {\n // data.active is true means the variable update has just started whereas false means update has ended.\n if (data.active && this.animationInProgress) {\n this.count++;\n this.wait();\n } else if (this.count > 0) {\n this.count--;\n }\n // call stop animation only when animation has started.\n if (!this.count && this.animationInProgress) {\n this.stopAnimation();\n }\n });\n }\n\n public bounds($event, $d) {\n const pageIscroll = (this.$el[0] as any).iscroll;\n // If scroll position is not at the top of the page then do not trigger the animation.\n if ($d < 0 || (pageIscroll && !isNaN(pageIscroll.y) && pageIscroll.y !== 0)) {\n return {\n lower: undefined,\n upper: undefined\n };\n }\n if (!this.spinner) {\n this.spinner = isIos() ? new IOSSpinner(this.infoContainer) : new AndroidSpinner(this.infoContainer);\n this.subscribe();\n }\n\n return {\n lower: 0,\n center: 0,\n upper: isIos() ? 0 : 150,\n strict: !isIos()\n };\n }\n\n public context(): Object {\n this.infoContainer.show();\n if (isIos()) {\n this.infoContainer.addClass('entry');\n }\n return {\n spin: $d => {\n this.spinner.setRotation($d * 2);\n }\n };\n }\n\n public animation() {\n if (isIos()) {\n return {\n css: {\n transform: 'translate3d(0, ${{$D + $d}}px, 0)',\n spin: '${{spin($d)}}'\n }\n };\n }\n return {\n target: this.infoContainer,\n css: {\n transform: 'translate3d(0, ${{$D + $d}}px, 0)',\n spin: '${{spin($d)}}',\n opacity: '${{min(($D + $d) / 100, 1)}}'\n }\n };\n }\n\n // Start the spinner animation and invokes the pulltorefresh event. Stops the animation after the wait time.\n public onAnimation() {\n this.animationInProgress = true;\n this.spinner.start();\n if (this.onPullToRefresh) {\n this.onPullToRefresh();\n }\n\n setTimeout(() => {\n // if listenToAnimation is set, then wait for stopAnimation to be invoked. Otherwise call stopAnimation manually.\n if (this.runAnimation) {\n return;\n }\n this.stopAnimation();\n });\n }\n\n public stopAnimation() {\n setTimeout(() => {\n this.runAnimation = false;\n this.animationInProgress = false;\n this.spinner.stop();\n this.infoContainer.hide();\n setCSS(this.infoContainer[0], 'transform', 'none');\n if (!isIos()) {\n setCSS(this.infoContainer[0], 'opacity', 0);\n }\n this.infoContainer.removeClass('entry');\n }, 800);\n }\n\n public wait() {\n this.runAnimation = true;\n }\n}\n\n// Interface for Spinner\ninterface Spinner {\n start();\n stop();\n setRotation(d: number);\n}\n\n// Android Spinner implementation\nclass AndroidSpinner implements Spinner {\n private options: Object;\n private initialized: any;\n private cx: number;\n private cy: number;\n private r: number;\n private path: any;\n private intervalId;\n private container: any;\n\n constructor(private $el: JQuery<HTMLElement>, options?: any) {\n this.options = options || {};\n }\n\n\n private polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number): any {\n const angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(angleInRadians)),\n y: centerY + (radius * Math.sin(angleInRadians))\n };\n }\n\n private describeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number): string {\n\n const start = this.polarToCartesian(x, y, radius, endAngle);\n const end = this.polarToCartesian(x, y, radius, startAngle);\n\n const arcSweep = endAngle - startAngle <= 180 ? '0' : '1';\n\n return [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, arcSweep, 0, end.x, end.y,\n 'L', end.x, end.y\n ].join(' ');\n }\n\n public init(): void {\n if (this.initialized) {\n return;\n }\n // append the svg to the element on which spinner has to be shown.\n const androidTemplate = $('<svg><path id=\"arc1\"/></svg>');\n const container = $('<div class=\"android-spinner\"></div>');\n container.append(androidTemplate);\n this.$el.append(container);\n this.cx = container.outerWidth() / 2;\n this.cy = container.outerHeight() / 2;\n this.r = this.cx * 0.6;\n this.path = container.find('path');\n this.initialized = true;\n this.container = container;\n }\n\n // sets rotation to the path\n public setRotation(deg) {\n this.init();\n this.path.attr('d', this.describeArc(this.cx, this.cy, this.r, 0, deg));\n }\n\n // animate the path to rotate continuously with some interval\n public start() {\n this.init();\n const self = this,\n totalTime = (this.options as any).time || 1800,\n degreesToTraverse = 10;\n let i = 0;\n this.container.addClass('spin');\n this.intervalId = setInterval(() => {\n let deg;\n i = i + degreesToTraverse;\n if (i > 720) {\n deg = i = 0;\n } else if (i > 360) {\n deg = 720 - i;\n } else {\n deg = i;\n }\n self.path.attr('d', this.describeArc(self.cx, self.cy, self.r, 0, deg));\n }, (totalTime * degreesToTraverse / 360));\n }\n\n // Removes the animation by clearing the intervals\n public stop() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = 0;\n }\n this.container.removeClass('spin');\n }\n}\n\n// iOS spinner implementation\nclass IOSSpinner implements Spinner {\n private svg: any;\n private intervalId: any;\n\n constructor(private $el) {}\n\n // create the iOS spinner using svg\n private init() {\n if (this.svg) {\n return;\n }\n const container = $('<div class=\"ios-spinner\"><svg></svg></div>');\n const svg = container.find('svg');\n this.$el.append(container);\n const d = container.width();\n for (let i = 0; i < 12; i++) {\n svg[0].innerHTML += `<line y1=\"${0.15 * d}\" y2=\"${0.3 * d}\"\n transform=\"translate(${0.5 * d}, ${0.5 * d}) rotate(${i * 30})\">\n </line>`;\n }\n container.append(svg);\n this.svg = svg;\n }\n\n // Sets the svg to rotate depending on \"d\" value\n public setRotation(d: number): void {\n this.init();\n this.svg.css('transform', `rotateZ( ${Math.round(d / 30) * 30}deg)`);\n }\n\n // Triggers the rotation with some interval\n public start() {\n this.init();\n let i = 0;\n this.intervalId = setInterval(() => {\n i += 10;\n this.setRotation(i);\n }, 20);\n }\n\n // Removes the animation by clearing the intervals\n public stop() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = 0;\n }\n }\n}\n","import { isMobile, setCSS } from '@wm/core';\n\ndeclare const $;\n\nenum CLASS_NAME {\n LEFT_PANEL = 'page-left-panel',\n RIGHT_PANEL = 'page-right-panel',\n SWIPE_ELEM = 'page-left-panel-icon',\n CONTENT = 'app-content-column',\n HEADER = 'page-header',\n SEARCH = 'app-search'\n}\n\n/**\n * method returns jquery class selector for given roleName\n * @param roleName\n * @returns {string}\n */\nconst roleSelector = (roleName: string) => `[data-role='${roleName}']`;\nconst pageSelector = roleSelector(\"pageContainer\");\n/*setup touch event handler*/\nconst bindTapEvtHandler = (selector, handler) => {\n /*\n * In Iphone safari browser, tap event of HammerJs is breaking\n * functionalities of other controls like input[type=\"range\"].\n * So, replaced the hammer Js handler with click event handler.\n */\n if (typeof (selector) === 'string') {\n selector = document.querySelector(selector);\n }\n if (!selector) {\n return;\n }\n // Add js event listeners as the event handlers has to be invoked in angular zone.\n selector.removeEventListener('click', handler);\n selector.addEventListener('click', handler);\n};\n\n/**\n * hide the mobile toolbar actions\n */\nconst hidePageContainers = (leftNavEle: HTMLElement, searchEle?: HTMLElement) => {\n if (isMobile()) {\n if (leftNavEle) {\n try {\n (leftNavEle as any).widget.collapse();\n } catch (e) {\n //\n }\n }\n if (searchEle) {\n setCSS(searchEle, 'display', 'none');\n }\n }\n};\n\n/**\n * binds the touch event for content\n */\nconst bindContentEvents = (leftNavEle: HTMLElement, pageContainer: HTMLElement, searchContainer: any, isTablet = false) => {\n if (!isTablet) {\n // touch content to hide nav pane and left panel\n bindTapEvtHandler(pageContainer, hidePageContainers.bind(this, leftNavEle, searchContainer));\n }\n};\n\nconst bindLeftPanelEvents = (leftNavEle: HTMLElement, searchEle: HTMLElement) => {\n // tap left to show/hide left panel\n bindTapEvtHandler(roleSelector(CLASS_NAME.SWIPE_ELEM), () => {\n if (leftNavEle) {\n (leftNavEle as any).widget.toggle();\n\n // Hide search container when left panel is open\n if (leftNavEle.classList.contains('visible')) {\n if (searchEle) {\n setCSS(searchEle, 'display', 'none');\n }\n }\n }\n });\n};\n\n/**\n * binds the touch event for content\n */\nconst bindRightPanelEvents = (rightNavEle: HTMLElement) => {\n bindTapEvtHandler(rightNavEle, hidePageContainers);\n};\n\n\n/**\n * toggles the search container\n */\nconst toggleSearchContainer = (searchEle: HTMLElement, leftNavEle: HTMLElement) => {\n if ($(searchEle).css('display') === 'none') {\n hidePageContainers(leftNavEle);\n setCSS(searchEle, 'display', 'inline-table');\n } else {\n hidePageContainers(leftNavEle, searchEle);\n }\n};\n\n/**\n * Bind event with Search icon in header\n */\nconst bindSearchIconEvent = (searchElements, leftNavEle: HTMLElement) => {\n\n $(searchElements).each((index, ele: HTMLElement) => {\n const searchEle = $('<a class=\"app-header-action\"><i class=\"wi wi-search\"></i></a>') as JQuery<HTMLElement>;\n $(ele).before(searchEle);\n // Tap icon to show/hide search box\n bindTapEvtHandler(searchEle, () => toggleSearchContainer(ele, leftNavEle));\n });\n\n};\n\nexport const updateDeviceView = (element: HTMLElement, isTablet = false) => {\n\n const leftNavEle = element.querySelector(roleSelector(CLASS_NAME.LEFT_PANEL)) as HTMLElement;\n const rightNavEle = element.querySelector(roleSelector(CLASS_NAME.RIGHT_PANEL)) as HTMLElement;\n const headerEle = element.querySelector(roleSelector(CLASS_NAME.HEADER)) as HTMLElement;\n const searchEle = headerEle && headerEle.querySelector(`.${CLASS_NAME.SEARCH}`) as HTMLElement;\n const pageEle = element.querySelector(`.${CLASS_NAME.CONTENT}`) as HTMLElement;\n\n bindContentEvents(leftNavEle, pageEle, searchEle, isTablet);\n\n if (leftNavEle) {\n bindLeftPanelEvents(leftNavEle, searchEle);\n } else {\n // remove the icon\n $(headerEle).find(roleSelector(CLASS_NAME.SWIPE_ELEM)).remove();\n }\n\n if (rightNavEle) {\n bindRightPanelEvents(rightNavEle);\n }\n\n if (searchEle) {\n bindSearchIconEvent(searchEle, leftNavEle);\n }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["register","registerProps","isObject","DEFAULT_CLS","WIDGET_CONFIG","noop","debounce","i1","i2","filter","orderBy","_orderBy","keys","_keys","this"],"mappings":"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"}
|