fomantic-ui 2.10.0-beta.5 → 2.10.0-beta.7
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/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +1 -1
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +1 -1
- package/dist/components/api.min.js +1 -1
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +1 -1
- package/dist/components/button.min.css +1 -1
- package/dist/components/calendar.css +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.min.css +1 -1
- package/dist/components/calendar.min.js +1 -1
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +1 -1
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +1 -1
- package/dist/components/dimmer.js +1 -1
- package/dist/components/dimmer.min.css +1 -1
- package/dist/components/dimmer.min.js +1 -1
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +1 -1
- package/dist/components/dropdown.js +46 -73
- package/dist/components/dropdown.min.css +1 -1
- package/dist/components/dropdown.min.js +2 -2
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +17 -8
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +2 -2
- package/dist/components/emoji.css +1 -1
- package/dist/components/emoji.min.css +1 -1
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +1 -1
- package/dist/components/flag.min.css +1 -1
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +18 -31
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +1 -1
- package/dist/components/form.js +1 -1
- package/dist/components/form.min.css +1 -1
- package/dist/components/form.min.js +1 -1
- package/dist/components/grid.css +1 -1
- package/dist/components/grid.min.css +1 -1
- package/dist/components/header.css +1 -1
- package/dist/components/header.min.css +1 -1
- package/dist/components/icon.css +1 -1
- package/dist/components/icon.min.css +1 -1
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +1 -1
- package/dist/components/input.min.css +1 -1
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +1 -1
- package/dist/components/label.min.css +1 -1
- package/dist/components/list.css +1 -1
- package/dist/components/list.min.css +1 -1
- package/dist/components/loader.css +1 -1
- package/dist/components/loader.min.css +1 -1
- package/dist/components/menu.css +1 -1
- package/dist/components/menu.min.css +1 -1
- package/dist/components/message.css +1 -1
- package/dist/components/message.min.css +1 -1
- package/dist/components/modal.css +1 -1
- package/dist/components/modal.js +18 -31
- package/dist/components/modal.min.css +1 -1
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +1 -1
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +1 -1
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +1 -1
- package/dist/components/popup.js +11 -22
- package/dist/components/popup.min.css +1 -1
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +1 -1
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +14 -5
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +2 -2
- package/dist/components/reset.css +1 -1
- package/dist/components/reset.min.css +1 -1
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +1 -1
- package/dist/components/search.js +18 -28
- package/dist/components/search.min.css +1 -1
- package/dist/components/search.min.js +2 -2
- package/dist/components/segment.css +1 -1
- package/dist/components/segment.min.css +1 -1
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +1 -1
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +1 -1
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +1 -1
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +1 -1
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +1 -1
- package/dist/components/slider.css +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +1 -1
- package/dist/components/state.js +1 -1
- package/dist/components/state.min.js +1 -1
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +1 -1
- package/dist/components/step.min.css +1 -1
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +1 -1
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +1 -1
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +1 -1
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +1 -1
- package/dist/components/table.css +1 -1
- package/dist/components/table.min.css +1 -1
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +19 -32
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +1 -1
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +1 -1
- package/dist/components/visibility.js +1 -1
- package/dist/components/visibility.min.js +1 -1
- package/dist/semantic.css +53 -53
- package/dist/semantic.js +178 -247
- package/dist/semantic.min.css +1 -1
- package/dist/semantic.min.js +2 -2
- package/package.json +1 -2
- package/src/definitions/modules/dropdown.js +45 -72
- package/src/definitions/modules/embed.js +16 -7
- package/src/definitions/modules/flyout.js +17 -30
- package/src/definitions/modules/modal.js +17 -30
- package/src/definitions/modules/popup.js +10 -21
- package/src/definitions/modules/rating.js +13 -4
- package/src/definitions/modules/search.js +17 -27
- package/src/definitions/modules/toast.js +18 -31
- package/tasks/config/defaults.js +0 -1
- package/tasks/config/project/install.js +5 -8
- package/tasks/install.js +10 -11
- package/types/fomantic-ui-dropdown.d.ts +1 -6
- package/types/fomantic-ui-embed.d.ts +1 -1
- package/types/fomantic-ui-search.d.ts +1 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "fomantic-ui",
|
3
|
-
"version": "2.10.0-beta.
|
3
|
+
"version": "2.10.0-beta.7+13b1bae",
|
4
4
|
"description": "Fomantic empowers designers and developers by creating a shared vocabulary for UI.",
|
5
5
|
"keywords": [
|
6
6
|
"fomantic-ui",
|
@@ -69,7 +69,6 @@
|
|
69
69
|
"ordered-read-streams": "^1.0.1",
|
70
70
|
"replace-ext": "^1.0.0",
|
71
71
|
"require-dot-file": "^0.4.0",
|
72
|
-
"wrench-sui": "^0.0.3",
|
73
72
|
"js-yaml": "^4.1.0"
|
74
73
|
},
|
75
74
|
"devDependencies": {
|
@@ -114,11 +114,6 @@
|
|
114
114
|
if (module.is.alreadySetup()) {
|
115
115
|
module.setup.reference();
|
116
116
|
} else {
|
117
|
-
if (settings.ignoreDiacritics && !String.prototype.normalize) {
|
118
|
-
settings.ignoreDiacritics = false;
|
119
|
-
module.error(error.noNormalize, element);
|
120
|
-
}
|
121
|
-
|
122
117
|
module.create.id();
|
123
118
|
module.setup.layout();
|
124
119
|
|
@@ -1110,7 +1105,7 @@
|
|
1110
1105
|
$input.append('<option disabled selected value></option>');
|
1111
1106
|
$.each(values, function (index, item) {
|
1112
1107
|
var
|
1113
|
-
value = settings.templates.
|
1108
|
+
value = settings.templates.escape(item[fields.value]),
|
1114
1109
|
name = settings.templates.escape(
|
1115
1110
|
item[fields.name] || '',
|
1116
1111
|
settings
|
@@ -1762,6 +1757,7 @@
|
|
1762
1757
|
}
|
1763
1758
|
// down arrow (open menu)
|
1764
1759
|
if (pressedKey === keys.downArrow && !module.is.visible()) {
|
1760
|
+
focused = true;
|
1765
1761
|
module.verbose('Down key pressed, showing dropdown');
|
1766
1762
|
module.show();
|
1767
1763
|
event.preventDefault();
|
@@ -3840,26 +3836,19 @@
|
|
3840
3836
|
},
|
3841
3837
|
htmlEntities: function (string, forceAmpersand) {
|
3842
3838
|
forceAmpersand = typeof forceAmpersand === 'number' ? false : forceAmpersand;
|
3843
|
-
var
|
3844
|
-
badChars = /["'<>`]/g,
|
3845
|
-
shouldEscape = /["&'<>`]/,
|
3846
|
-
escape = {
|
3847
|
-
'<': '<',
|
3848
|
-
'>': '>',
|
3849
|
-
'"': '"',
|
3850
|
-
"'": ''',
|
3851
|
-
'`': '`',
|
3852
|
-
},
|
3853
|
-
escapedChar = function (chr) {
|
3854
|
-
return escape[chr];
|
3855
|
-
}
|
3856
|
-
;
|
3857
|
-
if (shouldEscape.test(string)) {
|
3858
|
-
string = string.replace(forceAmpersand ? /&/g : /&(?![\d#a-z]{1,12};)/gi, '&');
|
3859
|
-
string = string.replace(badChars, escapedChar);
|
3860
|
-
}
|
3861
3839
|
|
3862
|
-
|
3840
|
+
const badChars = forceAmpersand
|
3841
|
+
? /["&'<>]/g
|
3842
|
+
: /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
3843
|
+
const escape = {
|
3844
|
+
'"': '"',
|
3845
|
+
'&': '&',
|
3846
|
+
"'": ''',
|
3847
|
+
'<': '<',
|
3848
|
+
'>': '>',
|
3849
|
+
};
|
3850
|
+
|
3851
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
3863
3852
|
},
|
3864
3853
|
},
|
3865
3854
|
|
@@ -4152,7 +4141,6 @@
|
|
4152
4141
|
noAPI: 'The API module is required to load resources remotely',
|
4153
4142
|
noStorage: 'Saving remote data requires session storage',
|
4154
4143
|
noElement: 'This module requires ui {element}',
|
4155
|
-
noNormalize: '"ignoreDiacritics" setting will be ignored. Browser does not support String().normalize(). You may consider including <https://cdn.jsdelivr.net/npm/unorm@1.4.1/lib/unorm.min.js> as a polyfill.',
|
4156
4144
|
},
|
4157
4145
|
|
4158
4146
|
regExp: {
|
@@ -4266,33 +4254,21 @@
|
|
4266
4254
|
|
4267
4255
|
/* Templates */
|
4268
4256
|
$.fn.dropdown.settings.templates = {
|
4269
|
-
deQuote: function (string, encode) {
|
4270
|
-
return String(string).replace(/"/g, encode ? '"' : '');
|
4271
|
-
},
|
4272
4257
|
escape: function (string, settings) {
|
4273
|
-
if (settings.preserveHTML) {
|
4258
|
+
if (settings !== undefined && settings.preserveHTML) {
|
4274
4259
|
return string;
|
4275
4260
|
}
|
4276
|
-
var
|
4277
|
-
badChars = /["'<>`]/g,
|
4278
|
-
shouldEscape = /["&'<>`]/,
|
4279
|
-
escape = {
|
4280
|
-
'<': '<',
|
4281
|
-
'>': '>',
|
4282
|
-
'"': '"',
|
4283
|
-
"'": ''',
|
4284
|
-
'`': '`',
|
4285
|
-
},
|
4286
|
-
escapedChar = function (chr) {
|
4287
|
-
return escape[chr];
|
4288
|
-
}
|
4289
|
-
;
|
4290
|
-
if (shouldEscape.test(string)) {
|
4291
|
-
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
4292
|
-
string = string.replace(badChars, escapedChar);
|
4293
|
-
}
|
4294
4261
|
|
4295
|
-
|
4262
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
4263
|
+
const escape = {
|
4264
|
+
'"': '"',
|
4265
|
+
'&': '&',
|
4266
|
+
"'": ''',
|
4267
|
+
'<': '<',
|
4268
|
+
'>': '>',
|
4269
|
+
};
|
4270
|
+
|
4271
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
4296
4272
|
},
|
4297
4273
|
// generates dropdown from select values
|
4298
4274
|
dropdown: function (select, settings) {
|
@@ -4300,14 +4276,13 @@
|
|
4300
4276
|
placeholder = select.placeholder || false,
|
4301
4277
|
html = '',
|
4302
4278
|
className = settings.className,
|
4303
|
-
escape = settings.templates.escape
|
4304
|
-
deQuote = settings.templates.deQuote
|
4279
|
+
escape = settings.templates.escape
|
4305
4280
|
;
|
4306
4281
|
html += '<i class="dropdown icon"></i>';
|
4307
4282
|
html += placeholder
|
4308
4283
|
? '<div class="default text">' + escape(placeholder, settings) + '</div>'
|
4309
4284
|
: '<div class="text"></div>';
|
4310
|
-
html += '<div class="' +
|
4285
|
+
html += '<div class="' + escape(className.menu) + '">';
|
4311
4286
|
html += settings.templates.menu(select, settings);
|
4312
4287
|
html += '</div>';
|
4313
4288
|
|
@@ -4321,8 +4296,7 @@
|
|
4321
4296
|
values = response[fields.values] || [],
|
4322
4297
|
html = '',
|
4323
4298
|
className = settings.className,
|
4324
|
-
escape = settings.templates.escape
|
4325
|
-
deQuote = settings.templates.deQuote
|
4299
|
+
escape = settings.templates.escape
|
4326
4300
|
;
|
4327
4301
|
$.each(values, function (index, option) {
|
4328
4302
|
var
|
@@ -4338,14 +4312,14 @@
|
|
4338
4312
|
for (dataKey in dataObject) {
|
4339
4313
|
dataKeyEscaped = String(dataKey).replace(/\W/g, '');
|
4340
4314
|
if (Object.prototype.hasOwnProperty.call(dataObject, dataKey) && ['text', 'value'].indexOf(dataKeyEscaped.toLowerCase()) === -1) {
|
4341
|
-
maybeData += ' data-' + dataKeyEscaped + '="' +
|
4315
|
+
maybeData += ' data-' + dataKeyEscaped + '="' + escape(String(dataObject[dataKey])) + '"';
|
4342
4316
|
}
|
4343
4317
|
}
|
4344
4318
|
}
|
4345
4319
|
if (itemType === 'item' || isMenu) {
|
4346
4320
|
var
|
4347
4321
|
maybeText = option[fields.text]
|
4348
|
-
? ' data-text="' +
|
4322
|
+
? ' data-text="' + escape(option[fields.text]) + '"'
|
4349
4323
|
: '',
|
4350
4324
|
maybeActionable = option[fields.actionable]
|
4351
4325
|
? className.actionable + ' '
|
@@ -4358,27 +4332,27 @@
|
|
4358
4332
|
: '',
|
4359
4333
|
hasDescription = escape(option[fields.description] || '', settings) !== ''
|
4360
4334
|
;
|
4361
|
-
html += '<div class="' +
|
4335
|
+
html += '<div class="' + escape(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] || className.item)) + '" data-value="' + escape(option[fields.value]) + '"' + maybeText + maybeData + '>';
|
4362
4336
|
if (isMenu) {
|
4363
4337
|
html += '<i class="' + (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
|
4364
4338
|
}
|
4365
4339
|
if (option[fields.image]) {
|
4366
|
-
html += '<img class="' +
|
4340
|
+
html += '<img class="' + escape(option[fields.imageClass] || className.image) + '" src="' + escape(option[fields.image]) + '"' + (option[fields.alt] ? ' alt="' + escape(option[fields.alt]) + '"' : '') + '>';
|
4367
4341
|
}
|
4368
4342
|
if (option[fields.icon]) {
|
4369
|
-
html += '<i class="' +
|
4343
|
+
html += '<i class="' + escape(option[fields.icon] + ' ' + (option[fields.iconClass] || className.icon)) + '"></i>';
|
4370
4344
|
}
|
4371
4345
|
if (hasDescription) {
|
4372
|
-
html += '<span class="' +
|
4373
|
-
html += !isMenu ? '<span class="' +
|
4346
|
+
html += '<span class="' + escape(className.description) + '">' + escape(option[fields.description] || '', settings) + '</span>';
|
4347
|
+
html += !isMenu ? '<span class="' + escape(className.text) + '">' : '';
|
4374
4348
|
}
|
4375
4349
|
if (isMenu) {
|
4376
|
-
html += '<span class="' +
|
4350
|
+
html += '<span class="' + escape(className.text) + '">';
|
4377
4351
|
}
|
4378
4352
|
html += escape(option[fields.name] || '', settings);
|
4379
4353
|
if (isMenu) {
|
4380
4354
|
html += '</span>';
|
4381
|
-
html += '<div class="' +
|
4355
|
+
html += '<div class="' + escape(itemType) + '">';
|
4382
4356
|
html += settings.templates.menu(option, settings);
|
4383
4357
|
html += '</div>';
|
4384
4358
|
} else if (hasDescription) {
|
@@ -4387,19 +4361,19 @@
|
|
4387
4361
|
html += '</div>';
|
4388
4362
|
} else if (itemType === 'header') {
|
4389
4363
|
var
|
4390
|
-
groupName =
|
4391
|
-
groupIcon =
|
4364
|
+
groupName = option[fields.name] || '',
|
4365
|
+
groupIcon = option[fields.icon] || className.groupIcon
|
4392
4366
|
;
|
4393
4367
|
if (groupName !== '' || groupIcon !== '') {
|
4394
|
-
html += '<div class="' +
|
4368
|
+
html += '<div class="' + escape(option[fields.class] || className.header) + '">';
|
4395
4369
|
if (groupIcon !== '') {
|
4396
|
-
html += '<i class="' +
|
4370
|
+
html += '<i class="' + escape(groupIcon + ' ' + (option[fields.iconClass] || className.icon)) + '"></i>';
|
4397
4371
|
}
|
4398
|
-
html += groupName;
|
4372
|
+
html += escape(groupName, settings);
|
4399
4373
|
html += '</div>';
|
4400
4374
|
}
|
4401
4375
|
if (option[fields.divider]) {
|
4402
|
-
html += '<div class="' +
|
4376
|
+
html += '<div class="' + escape(className.divider) + '"></div>';
|
4403
4377
|
}
|
4404
4378
|
}
|
4405
4379
|
});
|
@@ -4411,11 +4385,10 @@
|
|
4411
4385
|
label: function (value, text, settings) {
|
4412
4386
|
var
|
4413
4387
|
className = settings.className,
|
4414
|
-
escape = settings.templates.escape
|
4415
|
-
deQuote = settings.templates.deQuote
|
4388
|
+
escape = settings.templates.escape
|
4416
4389
|
;
|
4417
4390
|
|
4418
|
-
return escape(text, settings) + '<i class="' +
|
4391
|
+
return escape(text, settings) + '<i class="' + escape(className.delete) + ' icon"></i>';
|
4419
4392
|
},
|
4420
4393
|
|
4421
4394
|
// generates messages like "No results"
|
@@ -645,33 +645,42 @@
|
|
645
645
|
},
|
646
646
|
|
647
647
|
templates: {
|
648
|
-
|
649
|
-
|
648
|
+
escape: function (string) {
|
649
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
650
|
+
const escape = {
|
651
|
+
'"': '"',
|
652
|
+
'&': '&',
|
653
|
+
"'": ''',
|
654
|
+
'<': '<',
|
655
|
+
'>': '>',
|
656
|
+
};
|
657
|
+
|
658
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
650
659
|
},
|
651
660
|
iframe: function (url, parameters) {
|
652
661
|
var
|
653
662
|
src = url,
|
654
|
-
|
663
|
+
escape = $.fn.embed.settings.templates.escape
|
655
664
|
;
|
656
665
|
if (parameters) {
|
657
666
|
src += '?' + parameters;
|
658
667
|
}
|
659
668
|
|
660
669
|
return ''
|
661
|
-
+ '<iframe src="' +
|
670
|
+
+ '<iframe src="' + escape(src) + '"'
|
662
671
|
+ ' width="100%" height="100%"'
|
663
672
|
+ ' msallowFullScreen allowFullScreen></iframe>';
|
664
673
|
},
|
665
674
|
placeholder: function (image, icon, alt) {
|
666
675
|
var
|
667
676
|
html = '',
|
668
|
-
|
677
|
+
escape = $.fn.embed.settings.templates.escape
|
669
678
|
;
|
670
679
|
if (icon) {
|
671
|
-
html += '<i class="' +
|
680
|
+
html += '<i class="' + escape(icon) + ' icon"></i>';
|
672
681
|
}
|
673
682
|
if (image) {
|
674
|
-
html += '<img class="placeholder" src="' +
|
683
|
+
html += '<img class="placeholder" src="' + escape(image) + '"' + (alt ? ' alt="' + escape(alt) + '"' : '') + '>';
|
675
684
|
}
|
676
685
|
|
677
686
|
return html;
|
@@ -117,10 +117,10 @@
|
|
117
117
|
}
|
118
118
|
$module.addClass(settings.class);
|
119
119
|
if (settings.title !== '') {
|
120
|
-
$module.find(selector.header).html(module.helpers.escape(settings.title)).addClass(settings.classTitle);
|
120
|
+
$module.find(selector.header).html(module.helpers.escape(settings.title, settings)).addClass(settings.classTitle);
|
121
121
|
}
|
122
122
|
if (settings.content !== '') {
|
123
|
-
$module.find(selector.content).html(module.helpers.escape(settings.content)).addClass(settings.classContent);
|
123
|
+
$module.find(selector.content).html(module.helpers.escape(settings.content, settings)).addClass(settings.classContent);
|
124
124
|
}
|
125
125
|
if (module.has.configActions()) {
|
126
126
|
var $actions = $module.find(selector.actions).addClass(settings.classActions);
|
@@ -132,10 +132,10 @@
|
|
132
132
|
settings.actions.forEach(function (el) {
|
133
133
|
var
|
134
134
|
icon = el[fields.icon]
|
135
|
-
? '<i ' + (el[fields.text] ? 'aria-hidden="true"' : '') + ' class="' + module.helpers.
|
135
|
+
? '<i ' + (el[fields.text] ? 'aria-hidden="true"' : '') + ' class="' + module.helpers.escape(el[fields.icon]) + ' icon"></i>'
|
136
136
|
: '',
|
137
|
-
text = module.helpers.escape(el[fields.text] || ''),
|
138
|
-
cls = module.helpers.
|
137
|
+
text = module.helpers.escape(el[fields.text] || '', settings),
|
138
|
+
cls = module.helpers.escape(el[fields.class] || ''),
|
139
139
|
click = el[fields.click] && isFunction(el[fields.click])
|
140
140
|
? el[fields.click]
|
141
141
|
: function () {}
|
@@ -1079,34 +1079,21 @@
|
|
1079
1079
|
},
|
1080
1080
|
|
1081
1081
|
helpers: {
|
1082
|
-
|
1083
|
-
|
1084
|
-
},
|
1085
|
-
escape: function (string) {
|
1086
|
-
if (settings.preserveHTML) {
|
1082
|
+
escape: function (string, settings) {
|
1083
|
+
if (settings !== undefined && settings.preserveHTML) {
|
1087
1084
|
return string;
|
1088
1085
|
}
|
1089
|
-
var
|
1090
|
-
badChars = /["'<>`]/g,
|
1091
|
-
shouldEscape = /["&'<>`]/,
|
1092
|
-
escape = {
|
1093
|
-
'<': '<',
|
1094
|
-
'>': '>',
|
1095
|
-
'"': '"',
|
1096
|
-
"'": ''',
|
1097
|
-
'`': '`',
|
1098
|
-
},
|
1099
|
-
escapedChar = function (chr) {
|
1100
|
-
return escape[chr];
|
1101
|
-
}
|
1102
|
-
;
|
1103
|
-
if (shouldEscape.test(string)) {
|
1104
|
-
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
1105
1086
|
|
1106
|
-
|
1107
|
-
|
1087
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
1088
|
+
const escape = {
|
1089
|
+
'"': '"',
|
1090
|
+
'&': '&',
|
1091
|
+
"'": ''',
|
1092
|
+
'<': '<',
|
1093
|
+
'>': '>',
|
1094
|
+
};
|
1108
1095
|
|
1109
|
-
return string;
|
1096
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
1110
1097
|
},
|
1111
1098
|
},
|
1112
1099
|
|
@@ -1482,7 +1469,7 @@
|
|
1482
1469
|
input = $($.parseHTML(args.content)).filter('.ui.input')
|
1483
1470
|
;
|
1484
1471
|
if (input.length === 0) {
|
1485
|
-
args.content += '<p><div class="' + settings.className.prompt + '"><input placeholder="' + this.helpers.
|
1472
|
+
args.content += '<p><div class="' + settings.className.prompt + '"><input placeholder="' + this.helpers.escape(args.placeholder || '') + '" type="text" value="' + this.helpers.escape(args.defaultValue || '') + '"></div></p>';
|
1486
1473
|
}
|
1487
1474
|
|
1488
1475
|
return {
|
@@ -111,10 +111,10 @@
|
|
111
111
|
}
|
112
112
|
$module.addClass(settings.class);
|
113
113
|
if (settings.title !== '') {
|
114
|
-
$module.find(selector.title).html(module.helpers.escape(settings.title)).addClass(settings.classTitle);
|
114
|
+
$module.find(selector.title).html(module.helpers.escape(settings.title, settings)).addClass(settings.classTitle);
|
115
115
|
}
|
116
116
|
if (settings.content !== '') {
|
117
|
-
$module.find(selector.content).html(module.helpers.escape(settings.content)).addClass(settings.classContent);
|
117
|
+
$module.find(selector.content).html(module.helpers.escape(settings.content, settings)).addClass(settings.classContent);
|
118
118
|
}
|
119
119
|
if (module.has.configActions()) {
|
120
120
|
var $actions = $module.find(selector.actions).addClass(settings.classActions);
|
@@ -126,10 +126,10 @@
|
|
126
126
|
settings.actions.forEach(function (el) {
|
127
127
|
var
|
128
128
|
icon = el[fields.icon]
|
129
|
-
? '<i ' + (el[fields.text] ? 'aria-hidden="true"' : '') + ' class="' + module.helpers.
|
129
|
+
? '<i ' + (el[fields.text] ? 'aria-hidden="true"' : '') + ' class="' + module.helpers.escape(el[fields.icon]) + ' icon"></i>'
|
130
130
|
: '',
|
131
|
-
text = module.helpers.escape(el[fields.text] || ''),
|
132
|
-
cls = module.helpers.
|
131
|
+
text = module.helpers.escape(el[fields.text] || '', settings),
|
132
|
+
cls = module.helpers.escape(el[fields.class] || ''),
|
133
133
|
click = el[fields.click] && isFunction(el[fields.click])
|
134
134
|
? el[fields.click]
|
135
135
|
: function () {}
|
@@ -927,34 +927,21 @@
|
|
927
927
|
module.debug('Caching modal and container sizes', module.cache);
|
928
928
|
},
|
929
929
|
helpers: {
|
930
|
-
|
931
|
-
|
932
|
-
},
|
933
|
-
escape: function (string) {
|
934
|
-
if (settings.preserveHTML) {
|
930
|
+
escape: function (string, settings) {
|
931
|
+
if (settings !== undefined && settings.preserveHTML) {
|
935
932
|
return string;
|
936
933
|
}
|
937
|
-
var
|
938
|
-
badChars = /["'<>`]/g,
|
939
|
-
shouldEscape = /["&'<>`]/,
|
940
|
-
escape = {
|
941
|
-
'<': '<',
|
942
|
-
'>': '>',
|
943
|
-
'"': '"',
|
944
|
-
"'": ''',
|
945
|
-
'`': '`',
|
946
|
-
},
|
947
|
-
escapedChar = function (chr) {
|
948
|
-
return escape[chr];
|
949
|
-
}
|
950
|
-
;
|
951
|
-
if (shouldEscape.test(string)) {
|
952
|
-
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
953
934
|
|
954
|
-
|
955
|
-
|
935
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
936
|
+
const escape = {
|
937
|
+
'"': '"',
|
938
|
+
'&': '&',
|
939
|
+
"'": ''',
|
940
|
+
'<': '<',
|
941
|
+
'>': '>',
|
942
|
+
};
|
956
943
|
|
957
|
-
return string;
|
944
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
958
945
|
},
|
959
946
|
},
|
960
947
|
can: {
|
@@ -1590,7 +1577,7 @@
|
|
1590
1577
|
}
|
1591
1578
|
;
|
1592
1579
|
if (input.length === 0) {
|
1593
|
-
args.content += '<p><div class="' + this.helpers.
|
1580
|
+
args.content += '<p><div class="' + this.helpers.escape(settings.className.prompt) + '"><input placeholder="' + this.helpers.escape(args.placeholder || '') + '" type="text" value="' + this.helpers.escape(args.defaultValue || '') + '"></div></p>';
|
1594
1581
|
}
|
1595
1582
|
|
1596
1583
|
return {
|
@@ -1515,27 +1515,16 @@
|
|
1515
1515
|
|
1516
1516
|
templates: {
|
1517
1517
|
escape: function (string) {
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
escapedChar = function (chr) {
|
1529
|
-
return escape[chr];
|
1530
|
-
}
|
1531
|
-
;
|
1532
|
-
if (shouldEscape.test(string)) {
|
1533
|
-
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
1534
|
-
|
1535
|
-
return string.replace(badChars, escapedChar);
|
1536
|
-
}
|
1537
|
-
|
1538
|
-
return string;
|
1518
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
1519
|
+
const escape = {
|
1520
|
+
'"': '"',
|
1521
|
+
'&': '&',
|
1522
|
+
"'": ''',
|
1523
|
+
'<': '<',
|
1524
|
+
'>': '>',
|
1525
|
+
};
|
1526
|
+
|
1527
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
1539
1528
|
},
|
1540
1529
|
popup: function (text) {
|
1541
1530
|
var
|
@@ -518,17 +518,26 @@
|
|
518
518
|
},
|
519
519
|
|
520
520
|
templates: {
|
521
|
-
|
522
|
-
|
521
|
+
escape: function (string) {
|
522
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
523
|
+
const escape = {
|
524
|
+
'"': '"',
|
525
|
+
'&': '&',
|
526
|
+
"'": ''',
|
527
|
+
'<': '<',
|
528
|
+
'>': '>',
|
529
|
+
};
|
530
|
+
|
531
|
+
return string.replace(badChars, (chr) => escape[chr]);
|
523
532
|
},
|
524
533
|
icon: function (maxRating, iconClass) {
|
525
534
|
var
|
526
535
|
icon = 1,
|
527
536
|
html = '',
|
528
|
-
|
537
|
+
escape = $.fn.rating.settings.templates.escape
|
529
538
|
;
|
530
539
|
while (icon <= maxRating) {
|
531
|
-
html += '<i class="' +
|
540
|
+
html += '<i class="' + escape(iconClass) + ' icon"></i>';
|
532
541
|
icon++;
|
533
542
|
}
|
534
543
|
|
@@ -461,10 +461,6 @@
|
|
461
461
|
settings.fullTextSearch = parameters.searchFullText;
|
462
462
|
module.error(settings.error.oldSearchSyntax, element);
|
463
463
|
}
|
464
|
-
if (settings.ignoreDiacritics && !String.prototype.normalize) {
|
465
|
-
settings.ignoreDiacritics = false;
|
466
|
-
module.error(error.noNormalize, element);
|
467
|
-
}
|
468
464
|
},
|
469
465
|
inputEvent: function () {
|
470
466
|
var
|
@@ -1433,7 +1429,6 @@
|
|
1433
1429
|
serverError: 'There was an issue querying the server.',
|
1434
1430
|
maxResults: 'Results must be an array to use maxResults setting',
|
1435
1431
|
method: 'The method you called is not defined.',
|
1436
|
-
noNormalize: '"ignoreDiacritics" setting will be ignored. Browser does not support String().normalize(). You may consider including <https://cdn.jsdelivr.net/npm/unorm@1.4.1/lib/unorm.min.js> as a polyfill.',
|
1437
1432
|
},
|
1438
1433
|
|
1439
1434
|
metadata: {
|
@@ -1477,28 +1472,23 @@
|
|
1477
1472
|
|
1478
1473
|
templates: {
|
1479
1474
|
escape: function (string, settings) {
|
1480
|
-
if (settings.preserveHTML) {
|
1475
|
+
if (settings !== undefined && settings.preserveHTML) {
|
1481
1476
|
return string;
|
1482
1477
|
}
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
|
1490
|
-
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1496
|
-
|
1497
|
-
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
1498
|
-
string = string.replace(badChars, escapedChar);
|
1499
|
-
// FUI controlled HTML is still allowed
|
1500
|
-
string = string.replace(/<(\/)*mark>/g, '<$1mark>');
|
1501
|
-
}
|
1478
|
+
|
1479
|
+
const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
|
1480
|
+
const escape = {
|
1481
|
+
'"': '"',
|
1482
|
+
'&': '&',
|
1483
|
+
"'": ''',
|
1484
|
+
'<': '<',
|
1485
|
+
'>': '>',
|
1486
|
+
};
|
1487
|
+
|
1488
|
+
string = string.replace(badChars, (chr) => escape[chr]);
|
1489
|
+
|
1490
|
+
// FUI controlled HTML is still allowed
|
1491
|
+
string = string.replace(/<(\/)*mark>/g, '<$1mark>');
|
1502
1492
|
|
1503
1493
|
return string;
|
1504
1494
|
},
|
@@ -1544,7 +1534,7 @@
|
|
1544
1534
|
if (result[fields.image] !== undefined) {
|
1545
1535
|
html += ''
|
1546
1536
|
+ '<div class="image">'
|
1547
|
-
+ ' <img src="' + result[fields.image].replace(/"/g, '') + (result[fields.alt] ? '
|
1537
|
+
+ ' <img src="' + result[fields.image].replace(/"/g, '') + '"' + (result[fields.alt] ? ' alt="' + result[fields.alt].replace(/"/g, '') + '"' : '') + '>'
|
1548
1538
|
+ '</div>';
|
1549
1539
|
}
|
1550
1540
|
html += '<div class="content">';
|
@@ -1598,7 +1588,7 @@
|
|
1598
1588
|
if (result[fields.image] !== undefined) {
|
1599
1589
|
html += ''
|
1600
1590
|
+ '<div class="image">'
|
1601
|
-
+ ' <img src="' + result[fields.image].replace(/"/g, '') + (result[fields.alt] ? '
|
1591
|
+
+ ' <img src="' + result[fields.image].replace(/"/g, '') + '"' + (result[fields.alt] ? ' alt="' + result[fields.alt].replace(/"/g, '') + '"' : '') + '>'
|
1602
1592
|
+ '</div>';
|
1603
1593
|
}
|
1604
1594
|
html += '<div class="content">';
|