@wavemaker/angular-codegen 11.2.0-next.141451 → 11.2.0-next.141561

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5959,26 +5959,6 @@
5959
5959
  "yarn": "^1.22.19"
5960
5960
  }
5961
5961
  },
5962
- "@wavemaker/variables": {
5963
- "version": "11.2.0-next.141451",
5964
- "resolved": "https://registry.npmjs.org/@wavemaker/variables/-/variables-11.2.0-next.141451.tgz",
5965
- "integrity": "sha512-jt41DfG6xG0QZyLyJvHbLEJ21vJu91+j0dck4dbrbb43jPuveGKfscMuP7zlRH3lf5P0mEs83ryCGAMjU2Emwg==",
5966
- "requires": {
5967
- "@metrichor/jmespath": "^0.3.1",
5968
- "lodash": "^4.17.21",
5969
- "x2js": "^3.4.3"
5970
- },
5971
- "dependencies": {
5972
- "x2js": {
5973
- "version": "3.4.4",
5974
- "resolved": "https://registry.npmjs.org/x2js/-/x2js-3.4.4.tgz",
5975
- "integrity": "sha512-yG/ThaBCgnsa3aoMPAe7QwDpcyU4D70hjXC4Y1lZSfD/Tgd0MpE19FnZZRAjekryw0c8cffpOt9zsPEiqktO6Q==",
5976
- "requires": {
5977
- "@xmldom/xmldom": "^0.8.3"
5978
- }
5979
- }
5980
- }
5981
- },
5982
5962
  "@webassemblyjs/ast": {
5983
5963
  "version": "1.9.0",
5984
5964
  "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
@@ -6179,11 +6159,6 @@
6179
6159
  "@xtuc/long": "4.2.2"
6180
6160
  }
6181
6161
  },
6182
- "@xmldom/xmldom": {
6183
- "version": "0.8.6",
6184
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz",
6185
- "integrity": "sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg=="
6186
- },
6187
6162
  "@xtuc/ieee754": {
6188
6163
  "version": "1.2.0",
6189
6164
  "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -47,7 +47,6 @@
47
47
  "@metrichor/jmespath": "^0.3.1",
48
48
  "@wavemaker.com/nvd3": "1.0.0",
49
49
  "@wavemaker/focus-trap": "^1.0.0",
50
- "@wavemaker/variables": "11.2.0-next.141451",
51
50
  "angular-imask": "6.0.4",
52
51
  "angular2-websocket": "0.9.7",
53
52
  "core-js": "2.5.4",
@@ -71,7 +70,7 @@
71
70
  "tslib": "^2.0.0",
72
71
  "x2js": "3.2.6",
73
72
  "zone.js": "~0.11.4",
74
- "@wavemaker/app-ng-runtime": "11.2.0-next.141451"
73
+ "@wavemaker/app-ng-runtime": "11.2.0-next.141561"
75
74
  },
76
75
  "devDependencies": {
77
76
  "@ampproject/rollup-plugin-closure-compiler": "0.8.5",
@@ -37,9 +37,6 @@
37
37
  "@wm/core": [
38
38
  "node_modules/@wavemaker/app-ng-runtime/core"
39
39
  ],
40
- "@wavemaker/variables": [
41
- "node_modules/@wavemaker/variables/"
42
- ],
43
40
  "@wm/components/base": [
44
41
  "node_modules/@wavemaker/app-ng-runtime/components/base"
45
42
  ],
@@ -46638,42 +46638,41 @@ const validateDataSourceCtx = (ds, ctx) => {
46638
46638
  * @param name name of the variable
46639
46639
  * @param context scope of the variable
46640
46640
  */
46641
- const processFilterExpBindNode = (context, filterExpressions, variable) => {
46641
+ const processFilterExpBindNode = (context, filterExpressions) => {
46642
46642
  const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : _.noop;
46643
46643
  const filter$ = new Subject();
46644
46644
  const bindFilExpObj = (obj, targetNodeKey) => {
46645
- const listener = (newVal, oldVal) => {
46646
- if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
46647
- return;
46648
- }
46649
- // Skip cloning for blob column
46650
- if (!_.includes(['blob', 'file'], obj.type)) {
46651
- newVal = getClonedObject(newVal);
46652
- }
46653
- // backward compatibility: where we are allowing the user to bind complete object
46654
- if (obj.target === 'dataBinding') {
46655
- // remove the existing databinding element
46656
- filterExpressions.rules = [];
46657
- // now add all the returned values
46658
- _.forEach(newVal, function (value, target) {
46659
- filterExpressions.rules.push({
46660
- 'target': target,
46661
- 'value': value,
46662
- 'matchMode': obj.matchMode || 'startignorecase',
46663
- 'required': false,
46664
- 'type': ''
46665
- });
46666
- });
46667
- }
46668
- else {
46669
- // setting value to the root node
46670
- obj[targetNodeKey] = newVal;
46671
- }
46672
- filter$.next({ filterExpressions, newVal });
46673
- };
46674
46645
  if (stringStartsWith(obj[targetNodeKey], 'bind:')) {
46675
46646
  // [Todo-CSP]: needs a check, where is this used
46676
- destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, variable ? variable.invokeOnFiltertExpressionChange.bind(variable, obj, targetNodeKey) : listener, undefined, false, { arrayType: _.includes(['in', 'notin'], obj.matchMode) }));
46647
+ destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, (newVal, oldVal) => {
46648
+ if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
46649
+ return;
46650
+ }
46651
+ // Skip cloning for blob column
46652
+ if (!_.includes(['blob', 'file'], obj.type)) {
46653
+ newVal = getClonedObject(newVal);
46654
+ }
46655
+ // backward compatibility: where we are allowing the user to bind complete object
46656
+ if (obj.target === 'dataBinding') {
46657
+ // remove the existing databinding element
46658
+ filterExpressions.rules = [];
46659
+ // now add all the returned values
46660
+ _.forEach(newVal, function (value, target) {
46661
+ filterExpressions.rules.push({
46662
+ 'target': target,
46663
+ 'value': value,
46664
+ 'matchMode': obj.matchMode || 'startignorecase',
46665
+ 'required': false,
46666
+ 'type': ''
46667
+ });
46668
+ });
46669
+ }
46670
+ else {
46671
+ // setting value to the root node
46672
+ obj[targetNodeKey] = newVal;
46673
+ }
46674
+ filter$.next({ filterExpressions, newVal });
46675
+ }, undefined, false, { arrayType: _.includes(['in', 'notin'], obj.matchMode) }));
46677
46676
  }
46678
46677
  };
46679
46678
  const traverseFilterExpressions = expressions => {
@@ -46782,6 +46781,13 @@ const addForIdAttributes = (element) => {
46782
46781
  setAttr(labelEl[0], 'for', widgetId);
46783
46782
  }
46784
46783
  }
46784
+ /*Adding aria-labelledby to radioset, checkboxset widgets*/
46785
+ const ulEl = element.querySelectorAll('ul');
46786
+ if (labelEl.length && ulEl.length && (ulEl[0].getAttribute('role') === 'radiogroup' || ulEl[0].getAttribute('role') === 'group')) {
46787
+ const widgetId = 'wm-group-label-' + generateGUId();
46788
+ setAttr(ulEl[0], 'aria-labelledby', widgetId);
46789
+ setAttr(labelEl[0], 'id', widgetId);
46790
+ }
46785
46791
  };
46786
46792
  /**
46787
46793
  * This method is used to adjust the container position
@@ -40714,7 +40714,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40714
40714
  tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
40715
40715
  break;
40716
40716
  case FormWidgetType.CHECKBOXSET:
40717
- tmpl = `<ul wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
40717
+ tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
40718
40718
  break;
40719
40719
  case FormWidgetType.CHIPS:
40720
40720
  tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
@@ -40738,7 +40738,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40738
40738
  tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
40739
40739
  break;
40740
40740
  case FormWidgetType.RADIOSET:
40741
- tmpl = `<ul wmRadioset ${innerTmpl}></ul>`;
40741
+ tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
40742
40742
  break;
40743
40743
  case FormWidgetType.RATING:
40744
40744
  tmpl = `<div wmRating ${innerTmpl}></div>`;
@@ -40760,10 +40760,10 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40760
40760
  break;
40761
40761
  case FormWidgetType.TEXT:
40762
40762
  const inputType = options.inputType || 'inputtype';
40763
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" aria-describedby="Enter text" ${updateOnTmpl}></wm-input>`;
40763
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
40764
40764
  break;
40765
40765
  case FormWidgetType.TEXTAREA:
40766
- tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" aria-describedby="Place your text" ${updateOnTmpl}></wm-textarea>`;
40766
+ tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
40767
40767
  break;
40768
40768
  case FormWidgetType.TIME:
40769
40769
  tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
@@ -40792,7 +40792,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40792
40792
  }
40793
40793
  break;
40794
40794
  default:
40795
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} aria-describedby="Enter text" type="text" ${updateOnTmpl}></wm-input>`;
40795
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
40796
40796
  break;
40797
40797
  }
40798
40798
  return tmpl;
@@ -42716,42 +42716,41 @@ const validateDataSourceCtx = (ds, ctx) => {
42716
42716
  * @param name name of the variable
42717
42717
  * @param context scope of the variable
42718
42718
  */
42719
- const processFilterExpBindNode = (context, filterExpressions, variable) => {
42719
+ const processFilterExpBindNode = (context, filterExpressions) => {
42720
42720
  const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : _.noop;
42721
42721
  const filter$ = new Subject();
42722
42722
  const bindFilExpObj = (obj, targetNodeKey) => {
42723
- const listener = (newVal, oldVal) => {
42724
- if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
42725
- return;
42726
- }
42727
- // Skip cloning for blob column
42728
- if (!_.includes(['blob', 'file'], obj.type)) {
42729
- newVal = getClonedObject(newVal);
42730
- }
42731
- // backward compatibility: where we are allowing the user to bind complete object
42732
- if (obj.target === 'dataBinding') {
42733
- // remove the existing databinding element
42734
- filterExpressions.rules = [];
42735
- // now add all the returned values
42736
- _.forEach(newVal, function (value, target) {
42737
- filterExpressions.rules.push({
42738
- 'target': target,
42739
- 'value': value,
42740
- 'matchMode': obj.matchMode || 'startignorecase',
42741
- 'required': false,
42742
- 'type': ''
42743
- });
42744
- });
42745
- }
42746
- else {
42747
- // setting value to the root node
42748
- obj[targetNodeKey] = newVal;
42749
- }
42750
- filter$.next({ filterExpressions, newVal });
42751
- };
42752
42723
  if (stringStartsWith(obj[targetNodeKey], 'bind:')) {
42753
42724
  // [Todo-CSP]: needs a check, where is this used
42754
- destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, variable ? variable.invokeOnFiltertExpressionChange.bind(variable, obj, targetNodeKey) : listener, undefined, false, { arrayType: _.includes(['in', 'notin'], obj.matchMode) }));
42725
+ destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, (newVal, oldVal) => {
42726
+ if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
42727
+ return;
42728
+ }
42729
+ // Skip cloning for blob column
42730
+ if (!_.includes(['blob', 'file'], obj.type)) {
42731
+ newVal = getClonedObject(newVal);
42732
+ }
42733
+ // backward compatibility: where we are allowing the user to bind complete object
42734
+ if (obj.target === 'dataBinding') {
42735
+ // remove the existing databinding element
42736
+ filterExpressions.rules = [];
42737
+ // now add all the returned values
42738
+ _.forEach(newVal, function (value, target) {
42739
+ filterExpressions.rules.push({
42740
+ 'target': target,
42741
+ 'value': value,
42742
+ 'matchMode': obj.matchMode || 'startignorecase',
42743
+ 'required': false,
42744
+ 'type': ''
42745
+ });
42746
+ });
42747
+ }
42748
+ else {
42749
+ // setting value to the root node
42750
+ obj[targetNodeKey] = newVal;
42751
+ }
42752
+ filter$.next({ filterExpressions, newVal });
42753
+ }, undefined, false, { arrayType: _.includes(['in', 'notin'], obj.matchMode) }));
42755
42754
  }
42756
42755
  };
42757
42756
  const traverseFilterExpressions = expressions => {
@@ -42860,6 +42859,13 @@ const addForIdAttributes = (element) => {
42860
42859
  setAttr(labelEl[0], 'for', widgetId);
42861
42860
  }
42862
42861
  }
42862
+ /*Adding aria-labelledby to radioset, checkboxset widgets*/
42863
+ const ulEl = element.querySelectorAll('ul');
42864
+ if (labelEl.length && ulEl.length && (ulEl[0].getAttribute('role') === 'radiogroup' || ulEl[0].getAttribute('role') === 'group')) {
42865
+ const widgetId = 'wm-group-label-' + generateGUId();
42866
+ setAttr(ulEl[0], 'aria-labelledby', widgetId);
42867
+ setAttr(labelEl[0], 'id', widgetId);
42868
+ }
42863
42869
  };
42864
42870
  /**
42865
42871
  * This method is used to adjust the container position
@@ -45515,7 +45521,7 @@ register('wm-panel', () => {
45515
45521
  return {
45516
45522
  pre: (attrs) => {
45517
45523
  const counter = idGen$j.nextUid();
45518
- return `<${tagName$1c} wmPanel #${counter}="wmPanel" partialContainer [attr.aria-label]="${counter}.hint || 'Panel'" wm-navigable-element="true" ${getAttrMarkup(attrs)}>`;
45524
+ return `<${tagName$1c} wmPanel #${counter}="wmPanel" partialContainer wm-navigable-element="true" ${getAttrMarkup(attrs)}>`;
45519
45525
  },
45520
45526
  post: () => `</${tagName$1c}>`
45521
45527
  };
@@ -46044,7 +46050,7 @@ const registerFormField = (isFormField) => {
46044
46050
  const widgetType = attrs.get('widget') || FormWidgetType.TEXT;
46045
46051
  const dataRole = isFormField ? 'form-field' : 'filter-field';
46046
46052
  const validationMsg = isFormField ? `<p *ngIf="${counter}._control?.invalid && ${counter}._control?.touched && ${pCounter}.isUpdateMode"
46047
- class="help-block text-danger" aria-hidden="false" [attr.aria-label]="${counter}.validationmessage" role="alert"
46053
+ class="help-block text-danger" aria-hidden="false" role="alert"
46048
46054
  aria-live="assertive" [textContent]="${counter}.validationmessage"></p>` : '';
46049
46055
  const eventsTmpl = widgetType === FormWidgetType.UPLOAD ? '' : getEventsTemplate(attrs);
46050
46056
  const controlLayout = isMobileApp() ? 'col-xs-12' : 'col-sm-12';
@@ -46065,7 +46071,7 @@ const registerFormField = (isFormField) => {
46065
46071
  [ngStyle]="{width: ${pCounter}.captionsize}" [ngClass]="{'text-danger': ${counter}._control?.invalid && ${counter}._control?.touched && ${pCounter}.isUpdateMode,
46066
46072
  required: ${pCounter}.isUpdateMode && ${counter}.required}" [textContent]="${counter}.displayname"> </label>
46067
46073
  <div [ngClass]="${counter}.displayname ? ${pCounter}._widgetClass : '${controlLayout}'">
46068
- <label class="form-control-static app-label"
46074
+ <label class="form-control-static app-label" *ngIf="!(${pCounter}.isUpdateMode || ${counter}.viewmodewidget === 'default' || ${counter}.widgettype === 'upload')"
46069
46075
  [hidden]="${pCounter}.isUpdateMode || ${counter}.viewmodewidget === 'default' || ${counter}.widgettype === 'upload'" [innerHTML]="${getCaptionByWidget(attrs, widgetType, counter)}"></label>
46070
46076
  ${getTemplate(attrs, widgetType, eventsTmpl, counter, pCounter, isInList)}
46071
46077
  <span aria-hidden="true" *ngIf="${counter}.showPendingSpinner" class="form-field-spinner fa fa-circle-o-notch fa-spin form-control-feedback"></span>
@@ -46380,7 +46386,7 @@ var checkbox_build$1 = /*#__PURE__*/Object.freeze({
46380
46386
  const tagName$N = 'ul';
46381
46387
  register('wm-checkboxset', () => {
46382
46388
  return {
46383
- pre: attrs => `<${tagName$N} wmCheckboxset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46389
+ pre: attrs => `<${tagName$N} role="group" wmCheckboxset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46384
46390
  post: () => `</${tagName$N}>`
46385
46391
  };
46386
46392
  });
@@ -46422,7 +46428,7 @@ var number_build$1 = /*#__PURE__*/Object.freeze({
46422
46428
  const tagName$K = 'ul';
46423
46429
  register('wm-radioset', () => {
46424
46430
  return {
46425
- pre: attrs => `<${tagName$K} wmRadioset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46431
+ pre: attrs => `<${tagName$K} role="radiogroup" wmRadioset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46426
46432
  post: () => `</${tagName$K}>`
46427
46433
  };
46428
46434
  });
@@ -46865,7 +46871,7 @@ register('wm-popover', () => {
46865
46871
  }
46866
46872
  let markup = `<${tagName$q} wmPopover ${getAttrMarkup(attrs)}>`;
46867
46873
  const contextAttrs = table ? `let-row="row"` : ``;
46868
- markup += `<ng-template ${contextAttrs}><button aria-label="popover start" class="popover-start"></button>`;
46874
+ markup += `<ng-template ${contextAttrs}><button class="popover-start"></button>`;
46869
46875
  // todo keyboard navigation - tab
46870
46876
  if (popoverTemplate) {
46871
46877
  markup += `${popoverTemplate ? popoverTemplate : ''}`;
@@ -46877,7 +46883,7 @@ register('wm-popover', () => {
46877
46883
  if (shared.get('hasPopoverContent')) {
46878
46884
  markup += `</div>`;
46879
46885
  }
46880
- return `${markup}<button aria-label="popover end" class="popover-end"></button></ng-template></${tagName$q}>`;
46886
+ return `${markup}<button class="popover-end"></button></ng-template></${tagName$q}>`;
46881
46887
  }
46882
46888
  };
46883
46889
  });
@@ -47065,7 +47071,7 @@ register('wm-left-panel', () => {
47065
47071
  return {
47066
47072
  pre: (attrs) => {
47067
47073
  const counter = idGen$4.nextUid();
47068
- return `<${tagName$i} wmLeftPanel #${counter}="wmLeftPanel" partialContainer data-role="page-left-panel" role="navigation" [attr.aria-label]="${counter}.hint || 'Left navigation panel'" wmSmoothscroll="${attrs.get('smoothscroll') || 'false'}" ${getAttrMarkup(attrs)}>`;
47074
+ return `<${tagName$i} wmLeftPanel #${counter}="wmLeftPanel" partialContainer data-role="page-left-panel" [attr.aria-label]="${counter}.hint || 'Left navigation panel'" wmSmoothscroll="${attrs.get('smoothscroll') || 'false'}" ${getAttrMarkup(attrs)}>`;
47069
47075
  },
47070
47076
  post: () => `</${tagName$i}>`
47071
47077
  };
@@ -40714,7 +40714,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40714
40714
  tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
40715
40715
  break;
40716
40716
  case FormWidgetType.CHECKBOXSET:
40717
- tmpl = `<ul wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
40717
+ tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
40718
40718
  break;
40719
40719
  case FormWidgetType.CHIPS:
40720
40720
  tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
@@ -40738,7 +40738,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40738
40738
  tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
40739
40739
  break;
40740
40740
  case FormWidgetType.RADIOSET:
40741
- tmpl = `<ul wmRadioset ${innerTmpl}></ul>`;
40741
+ tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
40742
40742
  break;
40743
40743
  case FormWidgetType.RATING:
40744
40744
  tmpl = `<div wmRating ${innerTmpl}></div>`;
@@ -40760,10 +40760,10 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40760
40760
  break;
40761
40761
  case FormWidgetType.TEXT:
40762
40762
  const inputType = options.inputType || 'inputtype';
40763
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" aria-describedby="Enter text" ${updateOnTmpl}></wm-input>`;
40763
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
40764
40764
  break;
40765
40765
  case FormWidgetType.TEXTAREA:
40766
- tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" aria-describedby="Place your text" ${updateOnTmpl}></wm-textarea>`;
40766
+ tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
40767
40767
  break;
40768
40768
  case FormWidgetType.TIME:
40769
40769
  tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
@@ -40792,7 +40792,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
40792
40792
  }
40793
40793
  break;
40794
40794
  default:
40795
- tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} aria-describedby="Enter text" type="text" ${updateOnTmpl}></wm-input>`;
40795
+ tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
40796
40796
  break;
40797
40797
  }
40798
40798
  return tmpl;
@@ -42716,42 +42716,41 @@ const validateDataSourceCtx = (ds, ctx) => {
42716
42716
  * @param name name of the variable
42717
42717
  * @param context scope of the variable
42718
42718
  */
42719
- const processFilterExpBindNode = (context, filterExpressions, variable) => {
42719
+ const processFilterExpBindNode = (context, filterExpressions) => {
42720
42720
  const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : _.noop;
42721
42721
  const filter$ = new Subject();
42722
42722
  const bindFilExpObj = (obj, targetNodeKey) => {
42723
- const listener = (newVal, oldVal) => {
42724
- if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
42725
- return;
42726
- }
42727
- // Skip cloning for blob column
42728
- if (!_.includes(['blob', 'file'], obj.type)) {
42729
- newVal = getClonedObject(newVal);
42730
- }
42731
- // backward compatibility: where we are allowing the user to bind complete object
42732
- if (obj.target === 'dataBinding') {
42733
- // remove the existing databinding element
42734
- filterExpressions.rules = [];
42735
- // now add all the returned values
42736
- _.forEach(newVal, function (value, target) {
42737
- filterExpressions.rules.push({
42738
- 'target': target,
42739
- 'value': value,
42740
- 'matchMode': obj.matchMode || 'startignorecase',
42741
- 'required': false,
42742
- 'type': ''
42743
- });
42744
- });
42745
- }
42746
- else {
42747
- // setting value to the root node
42748
- obj[targetNodeKey] = newVal;
42749
- }
42750
- filter$.next({ filterExpressions, newVal });
42751
- };
42752
42723
  if (stringStartsWith(obj[targetNodeKey], 'bind:')) {
42753
42724
  // [Todo-CSP]: needs a check, where is this used
42754
- destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, variable ? variable.invokeOnFiltertExpressionChange.bind(variable, obj, targetNodeKey) : listener, undefined, false, { arrayType: _.includes(['in', 'notin'], obj.matchMode) }));
42725
+ destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, (newVal, oldVal) => {
42726
+ if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
42727
+ return;
42728
+ }
42729
+ // Skip cloning for blob column
42730
+ if (!_.includes(['blob', 'file'], obj.type)) {
42731
+ newVal = getClonedObject(newVal);
42732
+ }
42733
+ // backward compatibility: where we are allowing the user to bind complete object
42734
+ if (obj.target === 'dataBinding') {
42735
+ // remove the existing databinding element
42736
+ filterExpressions.rules = [];
42737
+ // now add all the returned values
42738
+ _.forEach(newVal, function (value, target) {
42739
+ filterExpressions.rules.push({
42740
+ 'target': target,
42741
+ 'value': value,
42742
+ 'matchMode': obj.matchMode || 'startignorecase',
42743
+ 'required': false,
42744
+ 'type': ''
42745
+ });
42746
+ });
42747
+ }
42748
+ else {
42749
+ // setting value to the root node
42750
+ obj[targetNodeKey] = newVal;
42751
+ }
42752
+ filter$.next({ filterExpressions, newVal });
42753
+ }, undefined, false, { arrayType: _.includes(['in', 'notin'], obj.matchMode) }));
42755
42754
  }
42756
42755
  };
42757
42756
  const traverseFilterExpressions = expressions => {
@@ -42860,6 +42859,13 @@ const addForIdAttributes = (element) => {
42860
42859
  setAttr(labelEl[0], 'for', widgetId);
42861
42860
  }
42862
42861
  }
42862
+ /*Adding aria-labelledby to radioset, checkboxset widgets*/
42863
+ const ulEl = element.querySelectorAll('ul');
42864
+ if (labelEl.length && ulEl.length && (ulEl[0].getAttribute('role') === 'radiogroup' || ulEl[0].getAttribute('role') === 'group')) {
42865
+ const widgetId = 'wm-group-label-' + generateGUId();
42866
+ setAttr(ulEl[0], 'aria-labelledby', widgetId);
42867
+ setAttr(labelEl[0], 'id', widgetId);
42868
+ }
42863
42869
  };
42864
42870
  /**
42865
42871
  * This method is used to adjust the container position
@@ -45515,7 +45521,7 @@ register('wm-panel', () => {
45515
45521
  return {
45516
45522
  pre: (attrs) => {
45517
45523
  const counter = idGen$j.nextUid();
45518
- return `<${tagName$1c} wmPanel #${counter}="wmPanel" partialContainer [attr.aria-label]="${counter}.hint || 'Panel'" wm-navigable-element="true" ${getAttrMarkup(attrs)}>`;
45524
+ return `<${tagName$1c} wmPanel #${counter}="wmPanel" partialContainer wm-navigable-element="true" ${getAttrMarkup(attrs)}>`;
45519
45525
  },
45520
45526
  post: () => `</${tagName$1c}>`
45521
45527
  };
@@ -46044,7 +46050,7 @@ const registerFormField = (isFormField) => {
46044
46050
  const widgetType = attrs.get('widget') || FormWidgetType.TEXT;
46045
46051
  const dataRole = isFormField ? 'form-field' : 'filter-field';
46046
46052
  const validationMsg = isFormField ? `<p *ngIf="${counter}._control?.invalid && ${counter}._control?.touched && ${pCounter}.isUpdateMode"
46047
- class="help-block text-danger" aria-hidden="false" [attr.aria-label]="${counter}.validationmessage" role="alert"
46053
+ class="help-block text-danger" aria-hidden="false" role="alert"
46048
46054
  aria-live="assertive" [textContent]="${counter}.validationmessage"></p>` : '';
46049
46055
  const eventsTmpl = widgetType === FormWidgetType.UPLOAD ? '' : getEventsTemplate(attrs);
46050
46056
  const controlLayout = isMobileApp() ? 'col-xs-12' : 'col-sm-12';
@@ -46065,7 +46071,7 @@ const registerFormField = (isFormField) => {
46065
46071
  [ngStyle]="{width: ${pCounter}.captionsize}" [ngClass]="{'text-danger': ${counter}._control?.invalid && ${counter}._control?.touched && ${pCounter}.isUpdateMode,
46066
46072
  required: ${pCounter}.isUpdateMode && ${counter}.required}" [textContent]="${counter}.displayname"> </label>
46067
46073
  <div [ngClass]="${counter}.displayname ? ${pCounter}._widgetClass : '${controlLayout}'">
46068
- <label class="form-control-static app-label"
46074
+ <label class="form-control-static app-label" *ngIf="!(${pCounter}.isUpdateMode || ${counter}.viewmodewidget === 'default' || ${counter}.widgettype === 'upload')"
46069
46075
  [hidden]="${pCounter}.isUpdateMode || ${counter}.viewmodewidget === 'default' || ${counter}.widgettype === 'upload'" [innerHTML]="${getCaptionByWidget(attrs, widgetType, counter)}"></label>
46070
46076
  ${getTemplate(attrs, widgetType, eventsTmpl, counter, pCounter, isInList)}
46071
46077
  <span aria-hidden="true" *ngIf="${counter}.showPendingSpinner" class="form-field-spinner fa fa-circle-o-notch fa-spin form-control-feedback"></span>
@@ -46380,7 +46386,7 @@ var checkbox_build$1 = /*#__PURE__*/Object.freeze({
46380
46386
  const tagName$N = 'ul';
46381
46387
  register('wm-checkboxset', () => {
46382
46388
  return {
46383
- pre: attrs => `<${tagName$N} wmCheckboxset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46389
+ pre: attrs => `<${tagName$N} role="group" wmCheckboxset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46384
46390
  post: () => `</${tagName$N}>`
46385
46391
  };
46386
46392
  });
@@ -46422,7 +46428,7 @@ var number_build$1 = /*#__PURE__*/Object.freeze({
46422
46428
  const tagName$K = 'ul';
46423
46429
  register('wm-radioset', () => {
46424
46430
  return {
46425
- pre: attrs => `<${tagName$K} wmRadioset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46431
+ pre: attrs => `<${tagName$K} role="radiogroup" wmRadioset ${getFormMarkupAttr(attrs)} ${getChildAttrs(attrs)} ${getNgModelAttr(attrs)}>`,
46426
46432
  post: () => `</${tagName$K}>`
46427
46433
  };
46428
46434
  });
@@ -46865,7 +46871,7 @@ register('wm-popover', () => {
46865
46871
  }
46866
46872
  let markup = `<${tagName$q} wmPopover ${getAttrMarkup(attrs)}>`;
46867
46873
  const contextAttrs = table ? `let-row="row"` : ``;
46868
- markup += `<ng-template ${contextAttrs}><button aria-label="popover start" class="popover-start"></button>`;
46874
+ markup += `<ng-template ${contextAttrs}><button class="popover-start"></button>`;
46869
46875
  // todo keyboard navigation - tab
46870
46876
  if (popoverTemplate) {
46871
46877
  markup += `${popoverTemplate ? popoverTemplate : ''}`;
@@ -46877,7 +46883,7 @@ register('wm-popover', () => {
46877
46883
  if (shared.get('hasPopoverContent')) {
46878
46884
  markup += `</div>`;
46879
46885
  }
46880
- return `${markup}<button aria-label="popover end" class="popover-end"></button></ng-template></${tagName$q}>`;
46886
+ return `${markup}<button class="popover-end"></button></ng-template></${tagName$q}>`;
46881
46887
  }
46882
46888
  };
46883
46889
  });
@@ -47065,7 +47071,7 @@ register('wm-left-panel', () => {
47065
47071
  return {
47066
47072
  pre: (attrs) => {
47067
47073
  const counter = idGen$4.nextUid();
47068
- return `<${tagName$i} wmLeftPanel #${counter}="wmLeftPanel" partialContainer data-role="page-left-panel" role="navigation" [attr.aria-label]="${counter}.hint || 'Left navigation panel'" wmSmoothscroll="${attrs.get('smoothscroll') || 'false'}" ${getAttrMarkup(attrs)}>`;
47074
+ return `<${tagName$i} wmLeftPanel #${counter}="wmLeftPanel" partialContainer data-role="page-left-panel" [attr.aria-label]="${counter}.hint || 'Left navigation panel'" wmSmoothscroll="${attrs.get('smoothscroll') || 'false'}" ${getAttrMarkup(attrs)}>`;
47069
47075
  },
47070
47076
  post: () => `</${tagName$i}>`
47071
47077
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-codegen",
3
- "version": "11.2.0-next.141451",
3
+ "version": "11.2.0-next.141561",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {