@wavemaker/angular-codegen 11.2.0-next.141451 → 11.2.0-next.141561
Sign up to get free protection for your applications and to get access to all the features.
- angular-codegen/angular-app/package-lock.json +0 -25
- angular-codegen/angular-app/package.json +1 -2
- angular-codegen/angular-app/tsconfig.json +0 -3
- angular-codegen/dependencies/pipe-provider.cjs.js +37 -31
- angular-codegen/dependencies/transpilation-mobile.cjs.js +50 -44
- angular-codegen/dependencies/transpilation-web.cjs.js +50 -44
- angular-codegen/package.json +1 -1
@@ -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.
|
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",
|
@@ -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
|
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, {},
|
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'}"
|
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"
|
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' : ''}
|
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
|
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, {},
|
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
|
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"
|
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
|
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
|
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"
|
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'}"
|
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"
|
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' : ''}
|
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
|
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, {},
|
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
|
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"
|
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
|
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
|
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"
|
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
|
};
|