@ui5/webcomponents 0.31.19 → 0.31.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -0
- package/dist/Card.js +44 -19
- package/dist/Dialog.js +7 -7
- package/dist/Icon.js +11 -1
- package/dist/Input.js +1 -1
- package/dist/List.js +51 -7
- package/dist/Popover.js +1 -1
- package/dist/Popup.js +5 -5
- package/dist/api.json +1 -1
- package/dist/features/InputSuggestions.js +7 -18
- package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -2
- package/dist/generated/templates/BusyIndicatorTemplate.lit.js +1 -1
- package/dist/generated/templates/CardTemplate.lit.js +1 -1
- package/dist/generated/templates/ListTemplate.lit.js +2 -2
- package/dist/generated/templates/TableTemplate.lit.js +1 -1
- package/dist/generated/themes/Badge.css.js +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Card.css.js +1 -1
- package/dist/generated/themes/CheckBox.css.js +1 -1
- package/dist/generated/themes/ComboBox.css.js +1 -1
- package/dist/generated/themes/DatePicker.css.js +1 -1
- package/dist/generated/themes/Dialog.css.js +1 -1
- package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
- package/dist/generated/themes/Input.css.js +1 -1
- package/dist/generated/themes/InvisibleTextStyles.css.js +1 -1
- package/dist/generated/themes/Link.css.js +1 -1
- package/dist/generated/themes/List.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/MessageStrip.css.js +1 -1
- package/dist/generated/themes/MultiComboBox.css.js +1 -1
- package/dist/generated/themes/Panel.css.js +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/SegmentedButton.css.js +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/SliderBase.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/Tokenizer.css.js +1 -1
- package/dist/generated/themes/Tree.css.js +1 -1
- package/dist/generated/themes/TreeListItem.css.js +1 -1
- package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
- package/dist/i18n/messagebundle.properties +9 -0
- package/dist/i18n/messagebundle_id.properties +218 -0
- package/package.json +8 -8
- package/src/BusyIndicator.hbs +1 -0
- package/src/Card.hbs +3 -5
- package/src/Card.js +44 -19
- package/src/Dialog.js +7 -7
- package/src/Icon.js +11 -1
- package/src/Input.js +1 -1
- package/src/List.hbs +3 -0
- package/src/List.js +51 -7
- package/src/Popover.js +1 -1
- package/src/Popup.js +5 -5
- package/src/Table.hbs +1 -0
- package/src/features/InputSuggestions.js +7 -18
- package/src/i18n/messagebundle.properties +9 -0
- package/src/i18n/messagebundle_id.properties +218 -0
- package/.port +0 -1
package/src/Card.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
2
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
3
3
|
import { fetchI18nBundle, getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
4
|
-
import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
|
|
5
4
|
import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
6
5
|
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
7
6
|
import CardTemplate from "./generated/templates/CardTemplate.lit.js";
|
|
@@ -114,28 +113,28 @@ const metadata = {
|
|
|
114
113
|
},
|
|
115
114
|
|
|
116
115
|
/**
|
|
117
|
-
* Defines the
|
|
116
|
+
* Defines the accessible name of the component, which is used as the name of the card region and should be unique per card.
|
|
117
|
+
* <b>Note:</b> <code>accessibleName</code> should be always set.
|
|
118
118
|
*
|
|
119
119
|
* @type {String}
|
|
120
|
-
* @since 1.0.0-rc.9
|
|
121
|
-
* @private
|
|
122
120
|
* @defaultvalue ""
|
|
121
|
+
* @public
|
|
122
|
+
* @since 1.0.0-rc.16
|
|
123
123
|
*/
|
|
124
|
-
|
|
124
|
+
accessibleName: {
|
|
125
125
|
type: String,
|
|
126
126
|
},
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
|
-
*
|
|
129
|
+
* Defines the IDs of the elements that label the component.
|
|
130
130
|
*
|
|
131
131
|
* @type {String}
|
|
132
132
|
* @defaultvalue ""
|
|
133
|
-
* @
|
|
134
|
-
* @since 1.0.0-rc.
|
|
133
|
+
* @public
|
|
134
|
+
* @since 1.0.0-rc.16
|
|
135
135
|
*/
|
|
136
|
-
|
|
136
|
+
accessibleNameRef: {
|
|
137
137
|
type: String,
|
|
138
|
-
defaultValue: "",
|
|
139
138
|
},
|
|
140
139
|
|
|
141
140
|
/**
|
|
@@ -255,12 +254,42 @@ class Card extends UI5Element {
|
|
|
255
254
|
return !!(this.heading || this.subheading || this.status || this.hasAction || this.avatar);
|
|
256
255
|
}
|
|
257
256
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
257
|
+
// As in 0.31 we don't have all the accessibleNameRef, accessibleName related changes downported,
|
|
258
|
+
// we manually add getEffectiveAriaLabelText and getAriaLabelledByTexts methods and change them,
|
|
259
|
+
// so they work with accessibleName and accessibleNameRef, isntead of ariaLabel and ariaLabelledby
|
|
260
|
+
getEffectiveAriaLabelText(el) {
|
|
261
|
+
if (!el.accessibleNameRef) {
|
|
262
|
+
if (el.accessibleName) {
|
|
263
|
+
return el.accessibleName;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return this.getAriaLabelledByTexts(el);
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
getAriaLabelledByTexts(el, ownerDocument, readyIds = "") {
|
|
273
|
+
const ids = (readyIds && readyIds.split(" ")) || el.accessibleNameRef.split(" ");
|
|
274
|
+
const owner = ownerDocument || findNodeOwner(el);
|
|
275
|
+
let result = "";
|
|
276
|
+
|
|
277
|
+
ids.forEach((elementId, index) => {
|
|
278
|
+
const element = owner.querySelector(`[id='${elementId}']`);
|
|
279
|
+
result += `${element ? element.textContent : ""}`;
|
|
280
|
+
|
|
281
|
+
if (index < ids.length - 1) {
|
|
282
|
+
result += " ";
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
return result;
|
|
287
|
+
};
|
|
261
288
|
|
|
262
|
-
get
|
|
263
|
-
|
|
289
|
+
get ariaLabelText() {
|
|
290
|
+
const effectiveAriaLabelText = this.getEffectiveAriaLabelText(this),
|
|
291
|
+
effectiveAriaLabel = effectiveAriaLabelText ? ` ${effectiveAriaLabelText}` : "";
|
|
292
|
+
return this.i18nBundle.getText(ARIA_ROLEDESCRIPTION_CARD) + effectiveAriaLabel;
|
|
264
293
|
}
|
|
265
294
|
|
|
266
295
|
get ariaCardHeaderRoleDescription() {
|
|
@@ -293,10 +322,6 @@ class Card extends UI5Element {
|
|
|
293
322
|
return labels.length !== 0 ? labels.join(" ") : undefined;
|
|
294
323
|
}
|
|
295
324
|
|
|
296
|
-
get ariaLabelledByCard() {
|
|
297
|
-
return this.heading ? `${this._id}-heading ${this._id}-desc` : `${this._id}-desc`;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
325
|
get hasAvatar() {
|
|
301
326
|
return !!this.avatar.length;
|
|
302
327
|
}
|
package/src/Dialog.js
CHANGED
|
@@ -211,20 +211,20 @@ class Dialog extends Popup {
|
|
|
211
211
|
get _ariaLabelledBy() { // Required by Popup.js
|
|
212
212
|
let ariaLabelledById;
|
|
213
213
|
|
|
214
|
-
if (this.headerText !== "" && !this.
|
|
214
|
+
if (this.headerText !== "" && !this.accessibleName) {
|
|
215
215
|
ariaLabelledById = "ui5-popup-header-text";
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
return ariaLabelledById;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
+
/**
|
|
222
|
+
* Ensures ariaLabel is never null or empty string
|
|
223
|
+
* @returns {String|undefined}
|
|
224
|
+
* @protected
|
|
225
|
+
*/
|
|
221
226
|
get _ariaLabel() {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
if (this.header.length > 0 && !!this.accessibleName) {
|
|
225
|
-
ariaLabel = this.accessibleName;
|
|
226
|
-
}
|
|
227
|
-
return this.ariaLabel ? this.ariaLabel : ariaLabel;
|
|
227
|
+
return this.accessibleName || undefined;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
get _ariaModal() { // Required by Popup.js
|
package/src/Icon.js
CHANGED
|
@@ -12,6 +12,7 @@ import IconTemplate from "./generated/templates/IconTemplate.lit.js";
|
|
|
12
12
|
import iconCss from "./generated/themes/Icon.css.js";
|
|
13
13
|
|
|
14
14
|
const ICON_NOT_FOUND = "ICON_NOT_FOUND";
|
|
15
|
+
const PRESENTATION_ROLE = "presentation";
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* @public
|
|
@@ -97,6 +98,7 @@ const metadata = {
|
|
|
97
98
|
|
|
98
99
|
/**
|
|
99
100
|
* Defines the aria hidden state of the component.
|
|
101
|
+
* Note: If the role is presentation the default value of aria-hidden will be true.
|
|
100
102
|
* @private
|
|
101
103
|
* @since 1.0.0-rc.15
|
|
102
104
|
*/
|
|
@@ -257,6 +259,10 @@ class Icon extends UI5Element {
|
|
|
257
259
|
|
|
258
260
|
get effectiveAriaHidden() {
|
|
259
261
|
if (this.ariaHidden === "") {
|
|
262
|
+
if (this.isDecorative) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
|
|
260
266
|
return;
|
|
261
267
|
}
|
|
262
268
|
|
|
@@ -267,6 +273,10 @@ class Icon extends UI5Element {
|
|
|
267
273
|
return this.interactive ? "0" : "-1";
|
|
268
274
|
}
|
|
269
275
|
|
|
276
|
+
get isDecorative() {
|
|
277
|
+
return this.effectiveAccessibleRole === PRESENTATION_ROLE;
|
|
278
|
+
}
|
|
279
|
+
|
|
270
280
|
get effectiveAccessibleRole() {
|
|
271
281
|
if (this.role) {
|
|
272
282
|
return this.role;
|
|
@@ -276,7 +286,7 @@ class Icon extends UI5Element {
|
|
|
276
286
|
return "button";
|
|
277
287
|
}
|
|
278
288
|
|
|
279
|
-
return this.effectiveAccessibleName ? "img" :
|
|
289
|
+
return this.effectiveAccessibleName ? "img" : PRESENTATION_ROLE;
|
|
280
290
|
}
|
|
281
291
|
|
|
282
292
|
static createGlobalStyle() {
|
package/src/Input.js
CHANGED
|
@@ -998,7 +998,7 @@ class Input extends UI5Element {
|
|
|
998
998
|
}
|
|
999
999
|
|
|
1000
1000
|
async getInputDOMRef() {
|
|
1001
|
-
if (isPhone() && this.Suggestions
|
|
1001
|
+
if (isPhone() && this.Suggestions) {
|
|
1002
1002
|
await this.Suggestions._respPopover();
|
|
1003
1003
|
return this.Suggestions && this.Suggestions.responsivePopover.querySelector(".ui5-input-inner-phone");
|
|
1004
1004
|
}
|
package/src/List.hbs
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
<div id="{{_id}}-before" tabindex="0" class="ui5-list-focusarea"></div>
|
|
19
19
|
{{/if}}
|
|
20
20
|
|
|
21
|
+
<span id="{{_id}}-modeLabel" class="ui5-hidden-text">{{ariaLabelModeText}}</span>
|
|
22
|
+
|
|
21
23
|
<ul id="{{_id}}-listUl"
|
|
22
24
|
class="ui5-list-ul"
|
|
23
25
|
role="{{accessibleRole}}"
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
active size="Medium"
|
|
59
61
|
class="ui5-list-busy-ind"
|
|
60
62
|
style="{{styles.busyInd}}"
|
|
63
|
+
data-sap-focus-ref
|
|
61
64
|
></ui5-busyindicator>
|
|
62
65
|
</div>
|
|
63
66
|
{{/if}}
|
package/src/List.js
CHANGED
|
@@ -22,7 +22,11 @@ import ListTemplate from "./generated/templates/ListTemplate.lit.js";
|
|
|
22
22
|
import listCss from "./generated/themes/List.css.js";
|
|
23
23
|
|
|
24
24
|
// Texts
|
|
25
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
LOAD_MORE_TEXT, ARIA_LABEL_LIST_SELECTABLE,
|
|
27
|
+
ARIA_LABEL_LIST_MULTISELECTABLE,
|
|
28
|
+
ARIA_LABEL_LIST_DELETABLE,
|
|
29
|
+
} from "./generated/i18n/i18n-defaults.js";
|
|
26
30
|
|
|
27
31
|
const INFINITE_SCROLL_DEBOUNCE_RATE = 250; // ms
|
|
28
32
|
|
|
@@ -167,7 +171,7 @@ const metadata = {
|
|
|
167
171
|
* @since 1.0.0-rc.13
|
|
168
172
|
* @public
|
|
169
173
|
*/
|
|
170
|
-
|
|
174
|
+
growing: {
|
|
171
175
|
type: ListGrowingMode,
|
|
172
176
|
defaultValue: ListGrowingMode.None,
|
|
173
177
|
},
|
|
@@ -218,7 +222,7 @@ const metadata = {
|
|
|
218
222
|
* @defaultvalue "list"
|
|
219
223
|
* @since 1.0.0-rc.15
|
|
220
224
|
*/
|
|
221
|
-
|
|
225
|
+
accessibleRole: {
|
|
222
226
|
type: String,
|
|
223
227
|
defaultValue: "list",
|
|
224
228
|
},
|
|
@@ -227,7 +231,7 @@ const metadata = {
|
|
|
227
231
|
* Defines if the entire list is in view port.
|
|
228
232
|
* @private
|
|
229
233
|
*/
|
|
230
|
-
|
|
234
|
+
_inViewport: {
|
|
231
235
|
type: Boolean,
|
|
232
236
|
},
|
|
233
237
|
|
|
@@ -235,7 +239,7 @@ const metadata = {
|
|
|
235
239
|
* Defines the active state of the <code>More</code> button.
|
|
236
240
|
* @private
|
|
237
241
|
*/
|
|
238
|
-
|
|
242
|
+
_loadMoreActive: {
|
|
239
243
|
type: Boolean,
|
|
240
244
|
},
|
|
241
245
|
},
|
|
@@ -496,6 +500,10 @@ class List extends UI5Element {
|
|
|
496
500
|
return `${this._id}-header`;
|
|
497
501
|
}
|
|
498
502
|
|
|
503
|
+
get modeLabelID() {
|
|
504
|
+
return `${this._id}-modeLabel`;
|
|
505
|
+
}
|
|
506
|
+
|
|
499
507
|
get listEndDOM() {
|
|
500
508
|
return this.shadowRoot.querySelector(".ui5-list-end-marker");
|
|
501
509
|
}
|
|
@@ -508,6 +516,19 @@ class List extends UI5Element {
|
|
|
508
516
|
return !this.hasData && this.noDataText;
|
|
509
517
|
}
|
|
510
518
|
|
|
519
|
+
get isDelete() {
|
|
520
|
+
return this.mode === ListMode.Delete;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
get isSingleSelect() {
|
|
524
|
+
return [
|
|
525
|
+
ListMode.SingleSelect,
|
|
526
|
+
ListMode.SingleSelectBegin,
|
|
527
|
+
ListMode.SingleSelectEnd,
|
|
528
|
+
ListMode.SingleSelectAuto,
|
|
529
|
+
].includes(this.mode);
|
|
530
|
+
}
|
|
531
|
+
|
|
511
532
|
get isMultiSelect() {
|
|
512
533
|
return this.mode === ListMode.MultiSelect;
|
|
513
534
|
}
|
|
@@ -516,14 +537,37 @@ class List extends UI5Element {
|
|
|
516
537
|
if (this.accessibleNameRef || this.accessibleName) {
|
|
517
538
|
return undefined;
|
|
518
539
|
}
|
|
519
|
-
|
|
520
|
-
|
|
540
|
+
const ids = [];
|
|
541
|
+
|
|
542
|
+
if (this.isMultiSelect || this.isSingleSelect || this.isDelete) {
|
|
543
|
+
ids.push(this.modeLabelID);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
if (this.shouldRenderH1) {
|
|
547
|
+
ids.push(this.headerID);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
return ids.length ? ids.join(" ") : undefined;
|
|
521
551
|
}
|
|
522
552
|
|
|
523
553
|
get ariaLabelТxt() {
|
|
524
554
|
return this.getEffectiveAriaLabelText(this);
|
|
525
555
|
}
|
|
526
556
|
|
|
557
|
+
get ariaLabelModeText() {
|
|
558
|
+
if (this.isMultiSelect) {
|
|
559
|
+
return this.i18nBundle.getText(ARIA_LABEL_LIST_MULTISELECTABLE);
|
|
560
|
+
}
|
|
561
|
+
if (this.isSingleSelect) {
|
|
562
|
+
return this.i18nBundle.getText(ARIA_LABEL_LIST_SELECTABLE);
|
|
563
|
+
}
|
|
564
|
+
if (this.isDelete) {
|
|
565
|
+
return this.i18nBundle.getText(ARIA_LABEL_LIST_DELETABLE);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
return undefined;
|
|
569
|
+
}
|
|
570
|
+
|
|
527
571
|
get grows() {
|
|
528
572
|
return this.growing !== ListGrowingMode.None;
|
|
529
573
|
}
|
package/src/Popover.js
CHANGED
|
@@ -666,7 +666,7 @@ class Popover extends Popup {
|
|
|
666
666
|
}
|
|
667
667
|
|
|
668
668
|
get _ariaLabelledBy() { // Required by Popup.js
|
|
669
|
-
return this.
|
|
669
|
+
return this.accessibleName ? undefined : "ui5-popup-header";
|
|
670
670
|
}
|
|
671
671
|
|
|
672
672
|
get _ariaModal() { // Required by Popup.js
|
package/src/Popup.js
CHANGED
|
@@ -67,14 +67,14 @@ const metadata = {
|
|
|
67
67
|
},
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
|
-
*
|
|
70
|
+
* Sets the accessible aria name of the component.
|
|
71
71
|
*
|
|
72
72
|
* @type {String}
|
|
73
73
|
* @defaultvalue ""
|
|
74
|
-
* @
|
|
75
|
-
* @since 1.0.0-rc.
|
|
74
|
+
* @public
|
|
75
|
+
* @since 1.0.0-rc.15
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
accessibleName: {
|
|
78
78
|
type: String,
|
|
79
79
|
defaultValue: undefined,
|
|
80
80
|
},
|
|
@@ -535,7 +535,7 @@ class Popup extends UI5Element {
|
|
|
535
535
|
* @protected
|
|
536
536
|
*/
|
|
537
537
|
get _ariaLabel() {
|
|
538
|
-
return this.
|
|
538
|
+
return this.accessibleName || undefined;
|
|
539
539
|
}
|
|
540
540
|
|
|
541
541
|
get _root() {
|
package/src/Table.hbs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { registerFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
|
|
2
2
|
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
3
|
-
|
|
3
|
+
import encodeXML from "@ui5/webcomponents-base/dist/util/encodeXML.js";
|
|
4
|
+
import generateHighlightedMarkup from "@ui5/webcomponents-base/dist/util/generateHighlightedMarkup.js";
|
|
4
5
|
import List from "../List.js";
|
|
5
6
|
import ResponsivePopover from "../ResponsivePopover.js";
|
|
6
7
|
import SuggestionItem from "../SuggestionItem.js";
|
|
@@ -130,9 +131,7 @@ class Suggestions {
|
|
|
130
131
|
this.responsivePopover = await this._respPopover();
|
|
131
132
|
this._beforeOpen();
|
|
132
133
|
|
|
133
|
-
|
|
134
|
-
this.responsivePopover.open(this._getComponent());
|
|
135
|
-
}
|
|
134
|
+
this.responsivePopover.open(this._getComponent());
|
|
136
135
|
}
|
|
137
136
|
|
|
138
137
|
async close(preventFocusRestore = false) {
|
|
@@ -394,31 +393,21 @@ class Suggestions {
|
|
|
394
393
|
}
|
|
395
394
|
|
|
396
395
|
getHighlightedText(suggestion, input) {
|
|
397
|
-
|
|
398
|
-
text = this.sanitizeText(text);
|
|
399
|
-
|
|
396
|
+
const text = suggestion.text || suggestion.textContent;
|
|
400
397
|
return this.hightlightInput(text, input);
|
|
401
398
|
}
|
|
402
399
|
|
|
403
400
|
getHighlightedDesc(suggestion, input) {
|
|
404
|
-
|
|
405
|
-
text = this.sanitizeText(text);
|
|
406
|
-
|
|
401
|
+
const text = suggestion.description || "";
|
|
407
402
|
return this.hightlightInput(text, input);
|
|
408
403
|
}
|
|
409
404
|
|
|
410
405
|
hightlightInput(text, input) {
|
|
411
|
-
|
|
412
|
-
return text;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
const inputEscaped = input.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
416
|
-
const regEx = new RegExp(inputEscaped, "ig");
|
|
417
|
-
return text.replace(regEx, match => `<b>${match}</b>`);
|
|
406
|
+
return generateHighlightedMarkup(text, input);
|
|
418
407
|
}
|
|
419
408
|
|
|
420
409
|
sanitizeText(text) {
|
|
421
|
-
return text
|
|
410
|
+
return encodeXML(text);
|
|
422
411
|
}
|
|
423
412
|
|
|
424
413
|
static get dependencies() {
|
|
@@ -103,6 +103,15 @@ ARIA_LABEL_LIST_ITEM_CHECKBOX = Multiple Selection mode.
|
|
|
103
103
|
#XBUT: List Single Selection Mode RadioButton aria-label text
|
|
104
104
|
ARIA_LABEL_LIST_ITEM_RADIO_BUTTON=Item Selection.
|
|
105
105
|
|
|
106
|
+
#XACT: ARIA announcement for the list which allows single selections
|
|
107
|
+
ARIA_LABEL_LIST_SELECTABLE=Contains Selectable Items
|
|
108
|
+
|
|
109
|
+
#XACT: ARIA announcement for the list which allows multiple selections
|
|
110
|
+
ARIA_LABEL_LIST_MULTISELECTABLE=Contains Multi-Selectable Items
|
|
111
|
+
|
|
112
|
+
#XACT: ARIA announcement for the list which has deletable items
|
|
113
|
+
ARIA_LABEL_LIST_DELETABLE=Contains Deletable Items
|
|
114
|
+
|
|
106
115
|
#XTOL: Tooltip of messgae strip close button
|
|
107
116
|
MESSAGE_STRIP_CLOSE_BUTTON=Message Strip Close
|
|
108
117
|
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
|
|
2
|
+
ARIA_LABEL_CARD_CONTENT=Konten Kartu
|
|
3
|
+
|
|
4
|
+
ARIA_ROLEDESCRIPTION_CARD=Kartu
|
|
5
|
+
|
|
6
|
+
ARIA_ROLEDESCRIPTION_CARD_HEADER=Header Kartu
|
|
7
|
+
|
|
8
|
+
ARIA_ROLEDESCRIPTION_INTERACTIVE_CARD_HEADER=Header Kartu Interaktif
|
|
9
|
+
|
|
10
|
+
AVATAR_TOOLTIP=Avatar
|
|
11
|
+
|
|
12
|
+
AVATAR_GROUP_DISPLAYED_HIDDEN_LABEL={0} ditampilkan, {1} disembunyikan.
|
|
13
|
+
|
|
14
|
+
AVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL=Aktifkan untuk daftar lengkap.
|
|
15
|
+
|
|
16
|
+
AVATAR_GROUP_ARIA_LABEL_INDIVIDUAL=Avatar individu.
|
|
17
|
+
|
|
18
|
+
AVATAR_GROUP_ARIA_LABEL_GROUP=Avatar tergabung.
|
|
19
|
+
|
|
20
|
+
AVATAR_GROUP_MOVE=Tekan tombol PANAH untuk berpindah.
|
|
21
|
+
|
|
22
|
+
BADGE_DESCRIPTION=Lencana
|
|
23
|
+
|
|
24
|
+
BREADCRUMBS_ARIA_LABEL=Jejak Breadcrumb
|
|
25
|
+
|
|
26
|
+
BREADCRUMBS_OVERFLOW_ARIA_LABEL=Lebih Banyak
|
|
27
|
+
|
|
28
|
+
BREADCRUMBS_CANCEL_BUTTON=Batalkan
|
|
29
|
+
|
|
30
|
+
BUSY_INDICATOR_TITLE=Mohon tunggu
|
|
31
|
+
|
|
32
|
+
BUTTON_ARIA_TYPE_ACCEPT=Tindakan Positif
|
|
33
|
+
|
|
34
|
+
BUTTON_ARIA_TYPE_REJECT=Tindakan Negatif
|
|
35
|
+
|
|
36
|
+
BUTTON_ARIA_TYPE_EMPHASIZED=Ditekankan
|
|
37
|
+
|
|
38
|
+
CAROUSEL_OF_TEXT=dari
|
|
39
|
+
|
|
40
|
+
CAROUSEL_DOT_TEXT=Item {0} dari {1} ditampilkan
|
|
41
|
+
|
|
42
|
+
CAROUSEL_PREVIOUS_ARROW_TEXT=Halaman Sebelumnya
|
|
43
|
+
|
|
44
|
+
CAROUSEL_NEXT_ARROW_TEXT=Halaman Selanjutnya
|
|
45
|
+
|
|
46
|
+
COLORPALETTE_CONTAINER_LABEL=Palet Warna - Warna yang Ditentukan Sebelumnya
|
|
47
|
+
|
|
48
|
+
COLORPALETTE_POPOVER_TITLE=Palet Warna
|
|
49
|
+
|
|
50
|
+
COLORPALETTE_COLOR_LABEL=Warna
|
|
51
|
+
|
|
52
|
+
COLOR_PALETTE_DIALOG_CANCEL_BUTTON=Batalkan
|
|
53
|
+
|
|
54
|
+
COLOR_PALETTE_DIALOG_OK_BUTTON=OKE
|
|
55
|
+
|
|
56
|
+
COLOR_PALETTE_DIALOG_TITLE=Ubah Warna
|
|
57
|
+
|
|
58
|
+
COLOR_PALETTE_MORE_COLORS_TEXT=Lebih Banyak Warna...
|
|
59
|
+
|
|
60
|
+
DATEPICKER_OPEN_ICON_TITLE=Buka Pemilih
|
|
61
|
+
|
|
62
|
+
DATEPICKER_DATE_DESCRIPTION=Input Tanggal
|
|
63
|
+
|
|
64
|
+
DATETIME_DESCRIPTION=Input Tanggal Waktu
|
|
65
|
+
|
|
66
|
+
DATERANGE_DESCRIPTION=Input Rentang Tanggal
|
|
67
|
+
|
|
68
|
+
DELETE=Hapus
|
|
69
|
+
|
|
70
|
+
FILEUPLOAD_BROWSE=Telusuri...
|
|
71
|
+
|
|
72
|
+
FILEUPLOADER_TITLE=Unggah File
|
|
73
|
+
|
|
74
|
+
GROUP_HEADER_TEXT=Header Grup
|
|
75
|
+
|
|
76
|
+
SELECT_OPTIONS=Pilih Opsi
|
|
77
|
+
|
|
78
|
+
INPUT_SUGGESTIONS=Saran yang Tersedia
|
|
79
|
+
|
|
80
|
+
INPUT_SUGGESTIONS_TITLE=Pilih
|
|
81
|
+
|
|
82
|
+
INPUT_SUGGESTIONS_ONE_HIT=1 hasil tersedia
|
|
83
|
+
|
|
84
|
+
INPUT_SUGGESTIONS_MORE_HITS={0} hasil tersedia
|
|
85
|
+
|
|
86
|
+
INPUT_SUGGESTIONS_NO_HIT=Tidak ada hasil
|
|
87
|
+
|
|
88
|
+
LINK_SUBTLE=Halus
|
|
89
|
+
|
|
90
|
+
LINK_EMPHASIZED=Ditekankan
|
|
91
|
+
|
|
92
|
+
LIST_ITEM_POSITION=Cantumkan item {0} dari {1}
|
|
93
|
+
|
|
94
|
+
LIST_ITEM_SELECTED=Dipilih
|
|
95
|
+
|
|
96
|
+
LIST_ITEM_NOT_SELECTED=Tidak Dipilih
|
|
97
|
+
|
|
98
|
+
ARIA_LABEL_LIST_ITEM_CHECKBOX=Mode Banyak Pilihan
|
|
99
|
+
|
|
100
|
+
ARIA_LABEL_LIST_ITEM_RADIO_BUTTON=Pilihan Item.
|
|
101
|
+
|
|
102
|
+
MESSAGE_STRIP_CLOSE_BUTTON=Strip Pesan Tutup
|
|
103
|
+
|
|
104
|
+
MULTICOMBOBOX_DIALOG_OK_BUTTON=OKE
|
|
105
|
+
|
|
106
|
+
VALUE_STATE_ERROR_ALREADY_SELECTED=Nilai ini telah dipilih.
|
|
107
|
+
|
|
108
|
+
MULTIINPUT_ROLEDESCRIPTION_TEXT=Input Banyak Nilai
|
|
109
|
+
|
|
110
|
+
MULTIINPUT_SHOW_MORE_TOKENS={0} Lebih Banyak
|
|
111
|
+
|
|
112
|
+
PANEL_ICON=Perluas/Ciutkan
|
|
113
|
+
|
|
114
|
+
RANGE_SLIDER_ARIA_DESCRIPTION=Rentang
|
|
115
|
+
|
|
116
|
+
RANGE_SLIDER_START_HANDLE_DESCRIPTION=Pegangan kiri
|
|
117
|
+
|
|
118
|
+
RANGE_SLIDER_END_HANDLE_DESCRIPTION=Pegangan kanan
|
|
119
|
+
|
|
120
|
+
RATING_INDICATOR_TOOLTIP_TEXT=Peringkat
|
|
121
|
+
|
|
122
|
+
RATING_INDICATOR_TEXT=Indikator Peringkat
|
|
123
|
+
|
|
124
|
+
RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Tolak
|
|
125
|
+
|
|
126
|
+
SEGMENTEDBUTTON_ARIA_DESCRIPTION=Kelompok tombol tersegmentasi
|
|
127
|
+
|
|
128
|
+
SEGMENTEDBUTTON_ARIA_DESCRIBEDBY=Tekan SPASI atau ENTER untuk memilih suatu item
|
|
129
|
+
|
|
130
|
+
SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION=Tombol tersegmentasi
|
|
131
|
+
|
|
132
|
+
SLIDER_ARIA_DESCRIPTION=Pegangan slider
|
|
133
|
+
|
|
134
|
+
SWITCH_ON=Aktif
|
|
135
|
+
|
|
136
|
+
SWITCH_OFF=Nonaktif
|
|
137
|
+
|
|
138
|
+
LOAD_MORE_TEXT=Lebih Banyak
|
|
139
|
+
|
|
140
|
+
TABLE_HEADER_ROW_TEXT=Baris Header
|
|
141
|
+
|
|
142
|
+
TABLE_ROW_POSITION={0} dari {1}
|
|
143
|
+
|
|
144
|
+
TABLE_GROUP_ROW_ARIA_LABEL=Baris Header Grup
|
|
145
|
+
|
|
146
|
+
ARIA_LABEL_ROW_SELECTION=Pilihan Item
|
|
147
|
+
|
|
148
|
+
ARIA_LABEL_SELECT_ALL_CHECKBOX=Pilih Semua Baris
|
|
149
|
+
|
|
150
|
+
TABCONTAINER_NEXT_ICON_ACC_NAME=Selanjutnya
|
|
151
|
+
|
|
152
|
+
TABCONTAINER_PREVIOUS_ICON_ACC_NAME=Sebelumnya
|
|
153
|
+
|
|
154
|
+
TABCONTAINER_OVERFLOW_MENU_TITLE=Menu Tambahan
|
|
155
|
+
|
|
156
|
+
TEXTAREA_CHARACTERS_LEFT={0} karakter tersisa
|
|
157
|
+
|
|
158
|
+
TEXTAREA_CHARACTERS_EXCEEDED={0} karakter melebihi batas
|
|
159
|
+
|
|
160
|
+
TIMEPICKER_HOURS_LABEL=Jam
|
|
161
|
+
|
|
162
|
+
TIMEPICKER_MINUTES_LABEL=Menit
|
|
163
|
+
|
|
164
|
+
TIMEPICKER_SECONDS_LABEL=Detik
|
|
165
|
+
|
|
166
|
+
TIMEPICKER_PERIODS_LABEL=AM/PM
|
|
167
|
+
|
|
168
|
+
TIMEPICKER_SUBMIT_BUTTON=OKE
|
|
169
|
+
|
|
170
|
+
TIMEPICKER_CANCEL_BUTTON=Batalkan
|
|
171
|
+
|
|
172
|
+
TIMEPICKER_INPUT_DESCRIPTION=Input Waktu
|
|
173
|
+
|
|
174
|
+
DURATION_INPUT_DESCRIPTION=Input Durasi
|
|
175
|
+
|
|
176
|
+
DATETIME_PICKER_DATE_BUTTON=Tanggal
|
|
177
|
+
|
|
178
|
+
DATETIME_PICKER_TIME_BUTTON=Waktu
|
|
179
|
+
|
|
180
|
+
TOKEN_ARIA_DELETABLE=Dapat Dihapus
|
|
181
|
+
|
|
182
|
+
TOKENIZER_ARIA_CONTAIN_TOKEN=Tidak Ada Token
|
|
183
|
+
|
|
184
|
+
TOKENIZER_ARIA_CONTAIN_ONE_TOKEN=Berisi 1 token
|
|
185
|
+
|
|
186
|
+
TOKENIZER_ARIA_CONTAIN_SEVERAL_TOKENS=Berisi {0} token
|
|
187
|
+
|
|
188
|
+
TOKENIZER_ARIA_LABEL=Pembuat Token
|
|
189
|
+
|
|
190
|
+
TOKENIZER_POPOVER_REMOVE=Hapus
|
|
191
|
+
|
|
192
|
+
TREE_ITEM_ARIA_LABEL=Item Pohon
|
|
193
|
+
|
|
194
|
+
TREE_ITEM_EXPAND_NODE=Perluas Node
|
|
195
|
+
|
|
196
|
+
TREE_ITEM_COLLAPSE_NODE=Ciutkan Node
|
|
197
|
+
|
|
198
|
+
VALUE_STATE_ERROR=Entri tidak valid
|
|
199
|
+
|
|
200
|
+
VALUE_STATE_WARNING=Peringatan diterbitkan
|
|
201
|
+
|
|
202
|
+
VALUE_STATE_INFORMATION=Entri informatif
|
|
203
|
+
|
|
204
|
+
VALUE_STATE_SUCCESS=Entri berhasil divalidasi
|
|
205
|
+
|
|
206
|
+
CALENDAR_HEADER_NEXT_BUTTON=Selanjutnya
|
|
207
|
+
|
|
208
|
+
CALENDAR_HEADER_PREVIOUS_BUTTON=Sebelumnya
|
|
209
|
+
|
|
210
|
+
DAY_PICKER_WEEK_NUMBER_TEXT=Jumlah Minggu
|
|
211
|
+
|
|
212
|
+
DAY_PICKER_NON_WORKING_DAY=Non-Hari Kerja
|
|
213
|
+
|
|
214
|
+
DAY_PICKER_TODAY=Hari Ini
|
|
215
|
+
|
|
216
|
+
STEPINPUT_DEC_ICON_TITLE=Turunkan
|
|
217
|
+
|
|
218
|
+
STEPINPUT_INC_ICON_TITLE=Tingkatkan
|
package/.port
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
8080
|