';
}
if (option[fields.image]) {
- html += '
';
}
if (option[fields.icon]) {
html += '
';
diff --git a/src/definitions/modules/dropdown.less b/src/definitions/modules/dropdown.less
index 2912de588d..6dd0f51f64 100755
--- a/src/definitions/modules/dropdown.less
+++ b/src/definitions/modules/dropdown.less
@@ -468,10 +468,10 @@ select.ui.dropdown {
@media only screen and (max-width: @largestMobileScreen) {
& when (@variationDropdownShort) {
- .ui.selection.dropdown.short .menu {
+ .ui.ui.selection.dropdown.short .menu {
max-height: @selectionMobileMaxMenuHeight * 0.75;
}
- .ui.selection.dropdown[class*="very short"] .menu {
+ .ui.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionMobileMaxMenuHeight * 0.5;
}
}
@@ -479,20 +479,20 @@ select.ui.dropdown {
max-height: @selectionMobileMaxMenuHeight;
}
& when (@variationDropdownLong) {
- .ui.selection.dropdown.long .menu {
+ .ui.ui.selection.dropdown.long .menu {
max-height: @selectionMobileMaxMenuHeight * 2;
}
- .ui.selection.dropdown[class*="very long"] .menu {
+ .ui.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionMobileMaxMenuHeight * 3;
}
}
}
@media only screen and (min-width: @tabletBreakpoint) {
& when (@variationDropdownShort) {
- .ui.selection.dropdown.short .menu {
+ .ui.ui.selection.dropdown.short .menu {
max-height: @selectionTabletMaxMenuHeight * 0.75;
}
- .ui.selection.dropdown[class*="very short"] .menu {
+ .ui.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionTabletMaxMenuHeight * 0.5;
}
}
@@ -500,20 +500,20 @@ select.ui.dropdown {
max-height: @selectionTabletMaxMenuHeight;
}
& when (@variationDropdownLong) {
- .ui.selection.dropdown.long .menu {
+ .ui.ui.selection.dropdown.long .menu {
max-height: @selectionTabletMaxMenuHeight * 2;
}
- .ui.selection.dropdown[class*="very long"] .menu {
+ .ui.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionTabletMaxMenuHeight * 3;
}
}
}
@media only screen and (min-width: @computerBreakpoint) {
& when (@variationDropdownShort) {
- .ui.selection.dropdown.short .menu {
+ .ui.ui.selection.dropdown.short .menu {
max-height: @selectionComputerMaxMenuHeight * 0.75;
}
- .ui.selection.dropdown[class*="very short"] .menu {
+ .ui.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionComputerMaxMenuHeight * 0.5;
}
}
@@ -521,20 +521,20 @@ select.ui.dropdown {
max-height: @selectionComputerMaxMenuHeight;
}
& when (@variationDropdownLong) {
- .ui.selection.dropdown.long .menu {
+ .ui.ui.selection.dropdown.long .menu {
max-height: @selectionComputerMaxMenuHeight * 2;
}
- .ui.selection.dropdown[class*="very long"] .menu {
+ .ui.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionComputerMaxMenuHeight * 3;
}
}
}
@media only screen and (min-width: @widescreenMonitorBreakpoint) {
& when (@variationDropdownShort) {
- .ui.selection.dropdown.short .menu {
+ .ui.ui.selection.dropdown.short .menu {
max-height: @selectionWidescreenMaxMenuHeight * 0.75;
}
- .ui.selection.dropdown[class*="very short"] .menu {
+ .ui.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionWidescreenMaxMenuHeight * 0.5;
}
}
@@ -542,10 +542,10 @@ select.ui.dropdown {
max-height: @selectionWidescreenMaxMenuHeight;
}
& when (@variationDropdownLong) {
- .ui.selection.dropdown.long .menu {
+ .ui.ui.selection.dropdown.long .menu {
max-height: @selectionWidescreenMaxMenuHeight * 2;
}
- .ui.selection.dropdown[class*="very long"] .menu {
+ .ui.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionWidescreenMaxMenuHeight * 3;
}
}
@@ -751,7 +751,7 @@ select.ui.dropdown {
opacity: @selectionTextUnderlayIconOpacity;
}
.ui.active.search.dropdown input.search:focus + .text {
- color: @selectionTextUnderlayColor !important;
+ color: @selectionTextUnderlayColor;
}
.ui.search.dropdown.button > span.sizer {
@@ -811,14 +811,14 @@ select.ui.dropdown {
}
}
- .ui.clearable.dropdown .text,
- .ui.clearable.dropdown a:last-of-type {
+ .ui.clearable.dropdown .text:not(.default),
+ .ui.clearable.dropdown:not(.search) > .ui.label:last-of-type {
margin-right: @clearableTextMargin;
}
.ui.dropdown select.noselection ~ .remove.icon,
.ui.dropdown input[value=""] ~ .remove.icon,
- .ui.dropdown input:not([value]) ~ .remove.icon,
+ .ui.dropdown input:not([value]):not(.search) ~ .remove.icon,
.ui.dropdown.loading > .remove.icon {
display: none;
}
@@ -922,6 +922,9 @@ select.ui.dropdown {
padding: inherit;
margin: @multipleSelectionChildMargin;
line-height: @multipleSelectionChildLineHeight;
+ &.default {
+ z-index: -1;
+ }
}
.ui.multiple.search.dropdown > .label ~ .text {
@@ -1853,13 +1856,20 @@ select.ui.dropdown {
& when not (@variationDropdownSizes = false) {
each(@variationDropdownSizes, {
@s: @@value;
- .ui.@{value}.dropdown,
- .ui.@{value}.dropdown .menu > .item {
+ .ui.ui.@{value}.dropdown,
+ .ui.ui.@{value}.dropdown .menu > .item {
font-size: @s;
}
});
}
+& when (@variationDropdownHighlightMatches) {
+ .ui.dropdown .menu > .item mark {
+ background: @highlightMatchesBackground;
+ color: @highlightMatchesColor;
+ }
+}
+
& when (@variationDropdownInverted) {
/* --------------
Inverted
@@ -1969,7 +1979,7 @@ select.ui.dropdown {
opacity: @invertedSelectionTextUnderlayIconOpacity;
}
.ui.inverted.active.search.dropdown input.search:focus + .text {
- color: @invertedSelectionTextUnderlayColor !important;
+ color: @invertedSelectionTextUnderlayColor;
}
.ui.dropdown .inverted.menu > .message:not(.ui),
@@ -2035,18 +2045,22 @@ select.ui.dropdown {
.ui.inverted.dropdown .menu::-webkit-scrollbar-thumb:hover {
background: @thumbInvertedHoverBackground;
}
- .ui.dropdown .inverted.menu,
- .ui.inverted.dropdown .menu {
- & when (@supportIE) {
+ & when (@supportIE) {
+ .ui.dropdown .inverted.menu,
+ .ui.inverted.dropdown .menu {
/* IE11 */
scrollbar-face-color: @thumbInvertedBackgroundHex;
scrollbar-shadow-color: @thumbInvertedBackgroundHex;
scrollbar-track-color: @trackInvertedBackgroundHex;
scrollbar-arrow-color: @trackInvertedBackgroundHex;
}
-
- /* firefox: first color thumb, second track */
- scrollbar-color: @thumbInvertedBackground @trackInvertedBackground;
+ }
+ @supports (-moz-appearance: none) {
+ .ui.dropdown .inverted.menu,
+ .ui.inverted.dropdown .menu {
+ /* firefox: first color thumb, second track */
+ scrollbar-color: @thumbInvertedBackground @trackInvertedBackground;
+ }
}
}
& when (@variationDropdownPointing) {
diff --git a/src/definitions/modules/embed.js b/src/definitions/modules/embed.js
index 18d5438c57..152828140f 100644
--- a/src/definitions/modules/embed.js
+++ b/src/definitions/modules/embed.js
@@ -119,11 +119,12 @@
createPlaceholder: function (placeholder) {
var
- icon = module.get.icon()
+ icon = module.get.icon(),
+ alt = module.get.alt()
;
placeholder = placeholder || module.get.placeholder();
- $module.html(templates.placeholder(placeholder, icon));
- module.debug('Creating placeholder for embed', placeholder, icon);
+ $module.html(templates.placeholder(placeholder, icon, alt));
+ module.debug('Creating placeholder for embed', placeholder, icon, alt);
},
createEmbed: function (url) {
@@ -203,6 +204,9 @@
placeholder: function () {
return settings.placeholder || $module.data(metadata.placeholder);
},
+ alt: function () {
+ return settings.alt || $module.data(metadata.alt);
+ },
icon: function () {
return settings.icon || ($module.data(metadata.icon) !== undefined
? $module.data(metadata.icon)
@@ -288,6 +292,7 @@
.removeData(metadata.id)
.removeData(metadata.icon)
.removeData(metadata.placeholder)
+ .removeData(metadata.alt)
.removeData(metadata.source)
.removeData(metadata.url)
;
@@ -440,7 +445,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
@@ -555,6 +562,8 @@
source: false,
url: false,
id: false,
+ placeholder: false,
+ alt: false,
// standard video settings
autoplay: 'auto',
@@ -577,6 +586,7 @@
id: 'id',
icon: 'icon',
placeholder: 'placeholder',
+ alt: 'alt',
source: 'source',
url: 'url',
},
@@ -652,7 +662,7 @@
+ ' width="100%" height="100%"'
+ ' msallowFullScreen allowFullScreen>';
},
- placeholder: function (image, icon) {
+ placeholder: function (image, icon, alt) {
var
html = '',
deQuote = $.fn.embed.settings.templates.deQuote
@@ -661,7 +671,7 @@
html += '
';
}
if (image) {
- html += '
';
}
return html;
diff --git a/src/definitions/modules/flyout.js b/src/definitions/modules/flyout.js
index c7214bfda1..61f8a431d3 100644
--- a/src/definitions/modules/flyout.js
+++ b/src/definitions/modules/flyout.js
@@ -1219,7 +1219,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/modal.js b/src/definitions/modules/modal.js
index bc2ae995e3..5061c50754 100755
--- a/src/definitions/modules/modal.js
+++ b/src/definitions/modules/modal.js
@@ -527,7 +527,9 @@
},
debounce: function (method, delay) {
clearTimeout(module.timer);
- module.timer = setTimeout(function () { method(); }, delay);
+ module.timer = setTimeout(function () {
+ method();
+ }, delay);
},
keyboard: function (event) {
var
@@ -1273,7 +1275,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/nag.js b/src/definitions/modules/nag.js
index ad77368cf2..7c39daa4c6 100644
--- a/src/definitions/modules/nag.js
+++ b/src/definitions/modules/nag.js
@@ -88,7 +88,9 @@
}
if (settings.displayTime > 0) {
- setTimeout(function () { module.hide(); }, settings.displayTime);
+ setTimeout(function () {
+ module.hide();
+ }, settings.displayTime);
}
module.show();
},
@@ -144,8 +146,10 @@
module.debug('Dismissing nag', settings.storageMethod, settings.key, settings.value, settings.expires);
module.storage.set(settings.key, settings.value);
}
- event.stopImmediatePropagation();
- event.preventDefault();
+ if (event) {
+ event.stopImmediatePropagation();
+ event.preventDefault();
+ }
},
should: {
@@ -377,7 +381,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/popup.js b/src/definitions/modules/popup.js
index 38aaac3dc8..11363a175c 100644
--- a/src/definitions/modules/popup.js
+++ b/src/definitions/modules/popup.js
@@ -194,7 +194,9 @@
;
clearTimeout(module.hideTimer);
if (!openedWithTouch || (openedWithTouch && settings.addTouchEvents)) {
- module.showTimer = setTimeout(function () { module.show(); }, delay);
+ module.showTimer = setTimeout(function () {
+ module.show();
+ }, delay);
}
},
end: function () {
@@ -204,7 +206,9 @@
: settings.delay
;
clearTimeout(module.showTimer);
- module.hideTimer = setTimeout(function () { module.hide(); }, delay);
+ module.hideTimer = setTimeout(function () {
+ module.hide();
+ }, delay);
},
touchstart: function (event) {
openedWithTouch = true;
@@ -1244,7 +1248,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/progress.js b/src/definitions/modules/progress.js
index d03439b380..aea1b4d699 100644
--- a/src/definitions/modules/progress.js
+++ b/src/definitions/modules/progress.js
@@ -791,7 +791,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/progress.less b/src/definitions/modules/progress.less
index a7f5613e60..d29d7e67c5 100755
--- a/src/definitions/modules/progress.less
+++ b/src/definitions/modules/progress.less
@@ -33,6 +33,14 @@
border-radius: @borderRadius;
}
+& when (@variationProgressBasic) {
+ .ui.basic.progress {
+ background: transparent;
+ border: none;
+ box-shadow: none;
+ }
+}
+
.ui.progress:first-child {
margin: @firstMargin;
}
@@ -50,14 +58,16 @@
line-height: 1;
position: @barPosition;
width: @barInitialWidth;
- min-width: @barMinWidth;
background: @barBackground;
border-radius: @barBorderRadius;
transition: @barTransition;
overflow: hidden;
+ &:not(:empty) {
+ min-width: @barMinWidth;
+ }
}
-.ui.ui.ui.progress:not([data-percent]):not(.indeterminate) .bar,
-.ui.ui.ui.progress[data-percent="0"]:not(.indeterminate) .bar {
+.ui.ui.ui.progress:not([data-percent]):not(.indeterminate) .bar:not(:empty),
+.ui.ui.ui.progress[data-percent="0"]:not(.indeterminate) .bar:not(:empty) {
background: transparent;
}
.ui.progress[data-percent="0"] .bar .progress {
@@ -328,7 +338,9 @@
.ui.active.progress .bar {
position: relative;
- min-width: @activeMinWidth;
+ &:not(:empty) {
+ min-width: @activeMinWidth;
+ }
}
.ui.active.progress .bar::after {
content: "";
@@ -384,7 +396,7 @@
Inverted
--------------- */
- .ui.inverted.progress {
+ .ui.inverted.progress:not(.basic) {
background: @invertedBackground;
border: @invertedBorder;
}
diff --git a/src/definitions/modules/rating.js b/src/definitions/modules/rating.js
index ebbb55f8a3..79a954b592 100644
--- a/src/definitions/modules/rating.js
+++ b/src/definitions/modules/rating.js
@@ -368,7 +368,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/search.js b/src/definitions/modules/search.js
index 401f2e1382..309e92bcd7 100644
--- a/src/definitions/modules/search.js
+++ b/src/definitions/modules/search.js
@@ -135,7 +135,10 @@
// this makes sure $.extend does not add specified search fields to default fields
// this is the only setting which should not extend defaults
if (parameters && parameters.searchFields !== undefined) {
- settings.searchFields = parameters.searchFields;
+ settings.searchFields = Array.isArray(parameters.searchFields)
+ ? parameters.searchFields
+ : [parameters.searchFields]
+ ;
}
},
},
@@ -169,7 +172,9 @@
callback = function () {
module.cancel.query();
module.remove.focus();
- module.timer = setTimeout(function () { module.hideResults(); }, settings.hideDelay);
+ module.timer = setTimeout(function () {
+ module.hideResults();
+ }, settings.hideDelay);
}
;
if (pageLostFocus) {
@@ -629,7 +634,7 @@
exactResults = [],
fuzzyResults = [],
searchExp = searchTerm.replace(regExp.escape, '\\$&'),
- matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'),
+ matchRegExp = new RegExp(regExp.beginsWith + searchExp, settings.ignoreSearchCase ? 'i' : ''),
// avoid duplicates when pushing results
addResult = function (array, result) {
@@ -665,13 +670,14 @@
var concatenatedContent = [];
$.each(searchFields, function (index, field) {
var
- fieldExists = (typeof content[field] === 'string') || (typeof content[field] === 'number')
+ fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number'
;
if (fieldExists) {
var text;
text = typeof content[field] === 'string'
? module.remove.diacritics(content[field])
: content[field].toString();
+ text = $('
', { html: text }).text().trim();
if (settings.fullTextSearch === 'all') {
concatenatedContent.push(text);
if (index < lastSearchFieldIndex) {
@@ -702,8 +708,10 @@
},
},
exactSearch: function (query, term) {
- query = query.toLowerCase();
- term = term.toLowerCase();
+ if (settings.ignoreSearchCase) {
+ query = query.toLowerCase();
+ term = term.toLowerCase();
+ }
return term.indexOf(query) > -1;
},
@@ -730,8 +738,10 @@
if (typeof query !== 'string') {
return false;
}
- query = query.toLowerCase();
- term = term.toLowerCase();
+ if (settings.ignoreSearchCase) {
+ query = query.toLowerCase();
+ term = term.toLowerCase();
+ }
if (queryLength > termLength) {
return false;
}
@@ -1086,6 +1096,39 @@
response[fields.results] = response[fields.results].slice(0, settings.maxResults);
}
}
+ if (settings.highlightMatches) {
+ var results = response[fields.results],
+ regExpIgnore = settings.ignoreSearchCase ? 'i' : '',
+ querySplit = module.get.value().split(''),
+ diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '',
+ htmlReg = '(?![^<]*>)',
+ markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore),
+ markedReplacer = function () {
+ var args = [].slice.call(arguments, 1, querySplit.length * 2).map(function (x, i) {
+ return i & 1 ? x : '
'; // eslint-disable-line no-bitwise
+ });
+
+ return args.join('');
+ }
+ ;
+ $.each(results, function (label, content) {
+ $.each(settings.searchFields, function (index, field) {
+ var
+ fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number'
+ ;
+ if (fieldExists) {
+ var markedHTML = typeof content[field] === 'string'
+ ? content[field]
+ : content[field].toString();
+ if (settings.ignoreDiacritics) {
+ markedHTML = markedHTML.normalize('NFD');
+ }
+ markedHTML = markedHTML.replace(/<\/?mark>/g, '');
+ response[fields.results][label][field] = markedHTML.replace(markedRegExp, markedReplacer);
+ }
+ });
+ });
+ }
if (isFunction(template)) {
html = template(response, fields, settings.preserveHTML);
} else {
@@ -1171,7 +1214,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
@@ -1312,9 +1357,15 @@
// search anywhere in value (set to 'exact' to require exact matches
fullTextSearch: 'exact',
+ // Whether search result should highlight matching strings
+ highlightMatches: false,
+
// match results also if they contain diacritics of the same base character (for example searching for "a" will also match "á" or "â" or "à", etc...)
ignoreDiacritics: false,
+ // whether to consider case sensitivity on local searching
+ ignoreSearchCase: true,
+
// whether to add events to prompt automatically
automatic: true,
@@ -1393,6 +1444,7 @@
categoryResults: 'results', // array of results (category view)
description: 'description', // result description
image: 'image', // result image
+ alt: 'alt', // result alt text for image
price: 'price', // result price
results: 'results', // array of results (standard)
title: 'title', // result title
@@ -1432,8 +1484,9 @@
};
if (shouldEscape.test(string)) {
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
-
- return string.replace(badChars, escapedChar);
+ string = string.replace(badChars, escapedChar);
+ // FUI controlled HTML is still allowed
+ string = string.replace(/<(\/)*mark>/g, '<$1mark>');
}
return string;
@@ -1479,7 +1532,7 @@
if (result[fields.image] !== undefined) {
html += ''
+ '
';
@@ -1532,7 +1585,7 @@
if (result[fields.image] !== undefined) {
html += ''
+ '
'
- + '

'
+ + '
![' + result[fields.alt].replace(/](' + result[fields.image].replace(/)
'
+ '
';
}
html += '
';
diff --git a/src/definitions/modules/search.less b/src/definitions/modules/search.less
index 54cdf5b35e..9d4f675359 100755
--- a/src/definitions/modules/search.less
+++ b/src/definitions/modules/search.less
@@ -565,8 +565,8 @@
.ui.search {
font-size: @relativeMedium;
}
-& when not (@variationFeedSizes = false) {
- each(@variationFeedSizes, {
+& when not (@variationSearchSizes = false) {
+ each(@variationSearchSizes, {
@s: @{value}SearchSize;
.ui.@{value}.search {
font-size: @@s;
@@ -574,6 +574,13 @@
});
}
+& when (@variationSearchHighlightMatches) {
+ .ui.search > .results mark {
+ background: @highlightMatchesBackground;
+ color: @highlightMatchesColor;
+ }
+}
+
/* --------------
Mobile
--------------- */
diff --git a/src/definitions/modules/shape.js b/src/definitions/modules/shape.js
index 8a93d70d38..bedeabfea0 100644
--- a/src/definitions/modules/shape.js
+++ b/src/definitions/modules/shape.js
@@ -185,7 +185,7 @@
set: {
defaultSide: function () {
- $activeSide = $side.filter('.' + settings.className.active);
+ $activeSide = $side.filter('.' + className.active);
$nextSide = $activeSide.next(selector.side).length > 0
? $activeSide.next(selector.side)
: $side.first();
@@ -211,7 +211,7 @@
currentStageSize: function () {
var
- $activeSide = $side.filter('.' + settings.className.active),
+ $activeSide = $side.filter('.' + className.active),
width = $activeSide.outerWidth(true),
height = $activeSide.outerHeight(true)
;
@@ -227,7 +227,7 @@
var
$clone = $module.clone().addClass(className.loading),
$side = $clone.find('>' + selector.sides + '>' + selector.side),
- $activeSide = $side.filter('.' + settings.className.active),
+ $activeSide = $side.filter('.' + className.active),
$nextSide = nextIndex
? $side.eq(nextIndex)
: ($activeSide.next(selector.side).length > 0
@@ -623,7 +623,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/sidebar.js b/src/definitions/modules/sidebar.js
index dd74a08e93..909b34a3b3 100644
--- a/src/definitions/modules/sidebar.js
+++ b/src/definitions/modules/sidebar.js
@@ -871,7 +871,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/slider.js b/src/definitions/modules/slider.js
index 114a83f490..7a77a7ce2b 100644
--- a/src/definitions/modules/slider.js
+++ b/src/definitions/modules/slider.js
@@ -32,8 +32,6 @@
methodInvoked = typeof query === 'string',
queryArguments = [].slice.call(arguments, 1),
- alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
-
SINGLE_STEP = 1,
BIG_STEP = 2,
NO_STEP = 0,
@@ -82,7 +80,6 @@
position,
secondPos,
offset,
- precision,
gapRatio = 1,
previousValue,
@@ -125,6 +122,7 @@
clearInterval(instance.interval);
module.unbind.events();
module.unbind.slidingEvents();
+ delete module.cache;
$module.removeData(moduleNamespace);
instance = undefined;
},
@@ -141,7 +139,7 @@
+ '
'
+ '
');
}
- precision = module.get.precision();
+ module.clear.cache();
$thumb = $module.find('.thumb:not(.second)');
if (settings.showThumbTooltip) {
$thumb
@@ -175,8 +173,14 @@
module.setup.autoLabel();
}
+ if (settings.highlightRange) {
+ $labels.addClass(className.active);
+ }
+
if (settings.showLabelTicks) {
$module.addClass(className.ticked);
+ } else if ($module.hasClass(className.ticked)) {
+ settings.showLabelTicks = 'always';
}
}
},
@@ -211,14 +215,20 @@
} else {
$labels = $module.append('
').find('.labels');
}
- for (var i = 0, len = module.get.numLabels(); i <= len; i++) {
+ var step = module.get.step(),
+ precision = module.get.precision(),
+ len = module.get.numLabels(),
+ ignoreLabels = len - (settings.autoAdjustLabels !== 'fixed' ? 0 : module.get.max().toString().length + 4)
+ ;
+ for (var i = 0; i <= len; i++) {
var
- labelText = module.get.label(i),
+ stepValue = Math.round(((i * (step === 0 ? 1 : step)) + module.get.min()) * precision) / precision,
+ labelText = module.get.label(i, stepValue),
showLabel = settings.restrictedLabels.length === 0 || settings.restrictedLabels.indexOf(labelText) >= 0,
$label = labelText !== '' && (showLabel || settings.showLabelTicks === 'always')
- ? (!(i % module.get.gapRatio())
- ? $('
' + (showLabel ? labelText : '') + '')
- : $('
'))
+ ? ((!(i % module.get.gapRatio()) && i < ignoreLabels) || i === len
+ ? $('
', { class: className.label, 'data-value': stepValue, html: showLabel ? labelText : '' })
+ : $('
', { class: 'halftick label', 'data-value': stepValue }))
: null,
ratio = i / len
;
@@ -489,6 +499,12 @@
},
},
+ clear: {
+ cache: function () {
+ module.cache = {};
+ },
+ },
+
resync: function () {
module.verbose('Resyncing thumb position based on value');
if (module.is.range()) {
@@ -538,6 +554,25 @@
},
is: {
+ prime: function (n) {
+ if (module.cache['prime' + n] === undefined) {
+ var p = true;
+ for (var i = 2, s = Math.sqrt(n); i <= s; i++) {
+ if (n % i === 0) {
+ p = false;
+
+ break;
+ }
+ }
+ if (p) {
+ p = n > 1;
+ }
+
+ module.cache['prime' + n] = p;
+ }
+
+ return module.cache['prime' + n];
+ },
range: function () {
var isRange = $module.hasClass(className.range);
if (!isRange && (settings.minRange || settings.maxRange)) {
@@ -652,62 +687,87 @@
return margin || '0px';
},
precision: function () {
- var
- decimalPlaces,
- step = module.get.step()
- ;
- if (step !== 0) {
- var split = String(step).split('.');
- decimalPlaces = split.length === 2 ? split[1].length : 0;
- } else {
- decimalPlaces = settings.decimalPlaces;
+ if (module.cache.precision === undefined) {
+ var
+ decimalPlaces,
+ step = module.get.step()
+ ;
+ if (step !== 0) {
+ var split = String(step).split('.');
+ decimalPlaces = split.length === 2 ? split[1].length : 0;
+ } else {
+ decimalPlaces = settings.decimalPlaces;
+ }
+ var precision = Math.pow(10, decimalPlaces);
+ module.debug('Precision determined', precision);
+ module.cache.precision = precision;
}
- var precision = Math.pow(10, decimalPlaces);
- module.debug('Precision determined', precision);
- return precision;
+ return module.cache.precision;
},
min: function () {
return settings.min;
},
max: function () {
- var
- step = module.get.step(),
- min = module.get.min(),
- precision = module.get.precision(),
- quotient = step === 0 ? 0 : Math.floor(Math.round(((settings.max - min) / step) * precision) / precision),
- remainder = step === 0 ? 0 : (settings.max - min) % step
- ;
+ if (module.cache.max === undefined) {
+ var
+ step = module.get.step(),
+ min = module.get.min(),
+ precision = module.get.precision(),
+ quotient = step === 0 ? 0 : Math.floor(Math.round(((settings.max - min) / step) * precision) / precision),
+ remainder = step === 0 ? 0 : (settings.max - min) % step
+ ;
+ if (remainder > 0) {
+ module.debug('Max value not divisible by given step. Increasing max value.', settings.max, step);
+ }
+ module.cache.max = remainder === 0 ? settings.max : min + quotient * step;
+ }
- return remainder === 0 ? settings.max : min + quotient * step;
+ return module.cache.max;
},
step: function () {
return settings.step;
},
numLabels: function () {
- var step = module.get.step(),
- precision = module.get.precision(),
- value = Math.round(((module.get.max() - module.get.min()) / (step === 0 ? 1 : step)) * precision) / precision;
- module.debug('Determined that there should be ' + value + ' labels');
+ if (module.cache.numLabels === undefined) {
+ var step = module.get.step(),
+ precision = module.get.precision(),
+ value = Math.round(((module.get.max() - module.get.min()) / (step === 0 ? 1 : step)) * precision) / precision;
+ module.debug('Determined that there should be ' + value + ' labels');
+ module.cache.numLabels = value;
+ }
- return value;
+ return module.cache.numLabels;
},
labelType: function () {
return settings.labelType;
},
- label: function (value) {
- if (interpretLabel) {
- return interpretLabel(value);
+ label: function (value, stepValue) {
+ if (isFunction(interpretLabel)) {
+ return interpretLabel(value, stepValue, module);
}
switch (settings.labelType) {
case settings.labelTypes.number: {
- var step = module.get.step();
-
- return Math.round(((value * (step === 0 ? 1 : step)) + module.get.min()) * precision) / precision;
+ return stepValue;
}
case settings.labelTypes.letter: {
- return alphabet[value % 26];
+ if (value < 0 || module.get.precision() > 1) {
+ module.error(error.invalidLetterNumber, value);
+
+ return value;
+ }
+ var letterLabel = '',
+ letters = Array.isArray(settings.letters) ? settings.letters : String(settings.letters).split(''),
+ lettersLen = letters.length
+ ;
+
+ while (stepValue >= 0) {
+ letterLabel = letters[stepValue % lettersLen] + letterLabel;
+ stepValue = Math.floor(stepValue / lettersLen) - 1;
+ }
+
+ return letterLabel;
}
default: {
return value;
@@ -717,6 +777,9 @@
value: function () {
return value;
},
+ settings: function () {
+ return settings;
+ },
currentThumbValue: function () {
return $currThumb !== undefined && $currThumb.hasClass('second') ? module.secondThumbVal : module.thumbVal;
},
@@ -761,6 +824,7 @@
if (settings.autoAdjustLabels) {
var
numLabels = module.get.numLabels(),
+ primePlus = module.is.prime(numLabels) ? 1 : 0,
trackLength = module.get.trackLength(),
gapCounter = 1
;
@@ -770,7 +834,7 @@
// and apply only if the modulo of the operation is an odd number.
if (trackLength > 0) {
while ((trackLength / numLabels) * gapCounter < settings.labelDistance) {
- if (!(numLabels % gapCounter)) {
+ if (!((numLabels + primePlus) % gapCounter) || settings.autoAdjustLabels === 'fixed') {
gapRatio = gapCounter;
}
gapCounter += 1;
@@ -908,6 +972,7 @@
},
value: function (position) {
var
+ precision = module.get.precision(),
startPos = module.is.reversed() ? module.get.trackEndPos() : module.get.trackStartPos(),
endPos = module.is.reversed() ? module.get.trackStartPos() : module.get.trackEndPos(),
ratio = (position - startPos) / (endPos - startPos),
@@ -976,6 +1041,30 @@
},
set: {
+ active: function (thumbVal, secondThumbVal) {
+ if (settings.highlightRange) {
+ if (secondThumbVal < thumbVal) {
+ var tempVal = secondThumbVal;
+ secondThumbVal = thumbVal;
+ thumbVal = tempVal;
+ }
+ var $children = $labels.find('.label');
+ $children.each(function (index) {
+ var
+ $child = $(this),
+ attrValue = $child.attr('data-value')
+ ;
+ if (attrValue) {
+ attrValue = parseInt(attrValue, 10);
+ if (attrValue >= thumbVal && attrValue <= secondThumbVal) {
+ $child.addClass(className.active);
+ } else {
+ $child.removeClass(className.active);
+ }
+ }
+ });
+ }
+ },
value: function (newValue, fireChange) {
fireChange = fireChange !== false;
var toReset = previousValue === undefined;
@@ -1103,6 +1192,7 @@
position = newPos;
thumbVal = newValue;
}
+ module.set.active(thumbVal, secondThumbVal);
var
trackPosValue,
thumbPosValue,
@@ -1210,6 +1300,7 @@
} else {
return settings[name];
}
+ module.clear.cache();
},
internal: function (name, value) {
if ($.isPlainObject(name)) {
@@ -1267,7 +1358,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
@@ -1380,6 +1473,7 @@
method: 'The method you called is not defined.',
notrange: 'This slider is not a range slider',
invalidRanges: 'Invalid range settings (start/end/minRange/maxRange)',
+ invalidLetterNumber: 'Negative values or decimal places for labelType: "letter" are not supported',
},
metadata: {
@@ -1402,6 +1496,7 @@
preventCrossover: true,
fireOnInit: false,
interpretLabel: false,
+ letters: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
// the decimal place to round to if step is undefined
decimalPlaces: 2,
@@ -1419,6 +1514,8 @@
vertical: 'vertical',
range: 'range',
smooth: 'smooth',
+ label: 'label',
+ active: 'active',
},
keys: {
@@ -1431,6 +1528,7 @@
},
restrictedLabels: [],
+ highlightRange: false,
showThumbTooltip: false,
tooltipConfig: {
position: 'top center',
diff --git a/src/definitions/modules/slider.less b/src/definitions/modules/slider.less
index 59e0cfdaeb..6697d28135 100644
--- a/src/definitions/modules/slider.less
+++ b/src/definitions/modules/slider.less
@@ -204,15 +204,18 @@
.ui.labeled.slider > .labels .label {
display: inline-flex;
- padding: @labelPadding;
position: absolute;
transform: translate(-50%, -100%);
white-space: nowrap;
+ &:not(.ui) {
+ padding: @labelPadding;
+ }
}
-
- .ui.bottom.aligned.labeled.slider > .labels .label {
- bottom: 0;
- transform: translate(-50%, 100%);
+ & when (@variationSliderBottomAligned) {
+ .ui.bottom.aligned.labeled.slider > .labels .label {
+ bottom: 0;
+ transform: translate(-50%, 100%);
+ }
}
& when (@variationSliderTicked) {
.ui.labeled.ticked.slider > .labels .label::after {
@@ -224,13 +227,39 @@
top: 100%;
left: 50%;
}
- .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
- top: auto;
- bottom: 100%;
+ & when (@variationSliderBottomAligned) {
+ .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
+ top: auto;
+ bottom: 100%;
+ }
+ & when (@variationSliderUiLabel) {
+ .ui.labeled.slider.bottom.aligned .labels .ui.label {
+ margin-bottom: -@uiLabelMargin;
+ }
+ .ui.labeled.ticked.slider.bottom.aligned .labels .ui.label::after {
+ margin-bottom: @uiLabelMargin;
+ }
+ }
}
.ui.labeled.ticked.slider > .labels .halftick.label::after {
height: (@labelHeight / 2);
}
+ & when (@variationSliderInverted) {
+ .ui.inverted.labeled.ticked.slider > .labels .label::after {
+ background: @invertedLabelColor;
+ }
+ }
+ }
+ & when (@variationSliderUiLabel) {
+ .ui.labeled.slider:not(.vertical):not(.bottom) .labels .ui.label {
+ margin-top: -@uiLabelMargin;
+ }
+ .ui.labeled.ticked.slider:not(.vertical):not(.bottom) .labels .ui.label::after {
+ margin-top: @uiLabelMargin;
+ }
+ .ui.labeled.ticked.slider:not(.vertical) > .labels .ui.label::after {
+ height: @uiLabelTickHeight;
+ }
}
& when (@variationSliderVertical) {
@@ -259,6 +288,9 @@
width: (@labelHeight / 2);
height: @labelWidth;
}
+ .ui.labeled.vertical.slider:not(.right) > .labels .halftick.label::after {
+ margin-left: @verticalTickDistance;
+ }
& when (@variationSliderReversed) {
/* Vertical Reversed Labels */
@@ -266,6 +298,39 @@
transform: translate(-100%, 50%);
}
}
+ & when (@variationSliderUiLabel) {
+ .ui.labeled.ticked.vertical.slider:not(.right) > .labels .ui.label::after {
+ margin-left: @verticalUiLabelMargin;
+ }
+ }
+ & when (@variationSliderRightAligned) {
+ .ui.labeled.vertical.right.aligned.slider > .labels {
+ transform: translateX(50%);
+ left: e(%("calc(100%% + %d)", @verticalTickDistance));
+ }
+ .ui.labeled.vertical.right.aligned.slider > .labels .label {
+ transform: translate(100%, -50%);
+ right: 100%;
+ }
+
+ .ui.labeled.vertical.right.aligned.slider > .labels .label::after {
+ right: 100%;
+ left: auto;
+ }
+ .ui.labeled.vertical.right.aligned.slider > .labels .halftick.label::after {
+ margin-right: @verticalTickDistance;
+ }
+ & when (@variationSliderReversed) {
+ .ui.labeled.vertical.reversed.right.aligned.slider > .labels .label {
+ transform: translate(100%, 50%);
+ }
+ }
+ & when (@variationSliderUiLabel) {
+ .ui.labeled.ticked.vertical.right.aligned.slider > .labels .ui.label::after {
+ margin-right: @verticalUiLabelMargin;
+ }
+ }
+ }
}
}
@@ -296,6 +361,26 @@
background-color: @transparentWhite;
}
}
+& when (@variationSliderHighlight) {
+ .ui.labeled.slider > .active.labels .label {
+ transition: @highlightTransition;
+ }
+ & when (@variationSliderTicked) {
+ .ui.labeled.ticked.slider > .active.labels .active.label::after {
+ background: @trackFillColor;
+ }
+ & when (@variationSliderInverted) {
+ .ui.inverted.labeled.ticked.slider > .active.labels .active.label::after {
+ background: @invertedTrackFillColor;
+ }
+ }
+ }
+
+ .ui.labeled.ticked.slider > .active.labels .active.label::after,
+ .ui.labeled.slider > .active.labels .label:not(.active) {
+ opacity: @highlightOpacity;
+ }
+}
/* --------------
Colors
@@ -338,6 +423,16 @@
}
}
}
+ & when (@variationSliderHighlight) and (@variationSliderTicked) {
+ .ui.@{color}.labeled.ticked.slider > .active.labels .active.label::after {
+ background-color: @c;
+ }
+ & when (@variationSliderInverted) {
+ .ui.@{color}.inverted.labeled.ticked.slider > .active.labels .active.label::after {
+ background-color: @l;
+ }
+ }
+ }
});
}
diff --git a/src/definitions/modules/sticky.js b/src/definitions/modules/sticky.js
index bb2378b037..1318e82b93 100755
--- a/src/definitions/modules/sticky.js
+++ b/src/definitions/modules/sticky.js
@@ -746,7 +746,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 0);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 0);
},
display: function () {
var
diff --git a/src/definitions/modules/tab.js b/src/definitions/modules/tab.js
index 13fe416d6f..b2d14966a3 100644
--- a/src/definitions/modules/tab.js
+++ b/src/definitions/modules/tab.js
@@ -788,7 +788,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/modules/toast.js b/src/definitions/modules/toast.js
index 6577dbdd1e..7dde9bcf6f 100644
--- a/src/definitions/modules/toast.js
+++ b/src/definitions/modules/toast.js
@@ -183,6 +183,7 @@
$toast.append($('
![]()
', {
class: className.image + ' ' + settings.classImage,
src: settings.showImage,
+ alt: settings.alt || '',
}));
}
if (settings.title !== '') {
@@ -228,7 +229,7 @@
$toast.find(selector.icon).attr('class', iconClass + ' ' + className.icon);
}
if (settings.showImage) {
- $toast.find(selector.image).attr('src', settings.showImage);
+ $toast.find(selector.image).attr('src', settings.showImage).attr('alt', settings.alt || '');
}
if (settings.title !== '') {
$toast.find(selector.title).html(module.helpers.escape(settings.title, settings.preserveHTML));
@@ -702,7 +703,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
@@ -839,6 +842,7 @@
actions: false,
preserveHTML: true,
showImage: false,
+ alt: false,
// transition settings
transition: {
diff --git a/src/definitions/modules/transition.js b/src/definitions/modules/transition.js
index 50e9b4cacd..0554e2319a 100644
--- a/src/definitions/modules/transition.js
+++ b/src/definitions/modules/transition.js
@@ -142,7 +142,9 @@
? ($allModules.length - index) * interval
: index * interval;
module.debug('Delaying animation by', delay);
- setTimeout(function () { module.animate(); }, delay);
+ setTimeout(function () {
+ module.animate();
+ }, delay);
},
animate: function (overrideSettings) {
@@ -849,7 +851,9 @@
});
}
clearTimeout(module.performance.timer);
- module.performance.timer = setTimeout(function () { module.performance.display(); }, 500);
+ module.performance.timer = setTimeout(function () {
+ module.performance.display();
+ }, 500);
},
display: function () {
var
diff --git a/src/definitions/views/feed.less b/src/definitions/views/feed.less
index 17f7e4cb6a..38e042b265 100755
--- a/src/definitions/views/feed.less
+++ b/src/definitions/views/feed.less
@@ -459,6 +459,17 @@
color: @invertedLikeActiveColor;
}
}
+
+ /* Action */
+ .ui.inverted.feed > .event > .content .meta a,
+ .ui.inverted.feed > .event > .content .meta > i.icon {
+ color: @invertedMetadataActionColor;
+ }
+ .ui.inverted.feed > .event > .content .meta a:hover,
+ .ui.inverted.feed > .event > .content .meta a:hover i.icon,
+ .ui.inverted.feed > .event > .content .meta > i.icon:hover {
+ color: @invertedMetadataActionHoverColor;
+ }
}
/* --------------
diff --git a/src/themes/basic/assets/fonts/LICENSE.txt b/src/themes/basic/assets/fonts/LICENSE.txt
new file mode 100644
index 0000000000..de3c0b85b4
--- /dev/null
+++ b/src/themes/basic/assets/fonts/LICENSE.txt
@@ -0,0 +1,91 @@
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/src/themes/default/assets/fonts/LICENSE_Lato.txt b/src/themes/default/assets/fonts/LICENSE_Lato.txt
new file mode 100644
index 0000000000..8a7280ecca
--- /dev/null
+++ b/src/themes/default/assets/fonts/LICENSE_Lato.txt
@@ -0,0 +1,94 @@
+Copyright (c) 2010-2015, Łukasz Dziedzic (dziedzic@typoland.com),
+with Reserved Font Name Lato.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/src/themes/default/assets/fonts/LICENSE_icons.txt b/src/themes/default/assets/fonts/LICENSE_icons.txt
new file mode 100644
index 0000000000..39e18e3d30
--- /dev/null
+++ b/src/themes/default/assets/fonts/LICENSE_icons.txt
@@ -0,0 +1,165 @@
+Fonticons, Inc. (https://fontawesome.com)
+
+--------------------------------------------------------------------------------
+
+Font Awesome Free License
+
+Font Awesome Free is free, open source, and GPL friendly. You can use it for
+commercial projects, open source projects, or really almost whatever you want.
+Full Font Awesome Free license: https://fontawesome.com/license/free.
+
+--------------------------------------------------------------------------------
+
+# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
+
+The Font Awesome Free download is licensed under a Creative Commons
+Attribution 4.0 International License and applies to all icons packaged
+as SVG and JS file types.
+
+--------------------------------------------------------------------------------
+
+# Fonts: SIL OFL 1.1 License
+
+In the Font Awesome Free download, the SIL OFL license applies to all icons
+packaged as web and desktop font files.
+
+Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
+with Reserved Font Name: "Font Awesome".
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+SIL OPEN FONT LICENSE
+Version 1.1 - 26 February 2007
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting — in part or in whole — any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+--------------------------------------------------------------------------------
+
+# Code: MIT License (https://opensource.org/licenses/MIT)
+
+In the Font Awesome Free download, the MIT license applies to all non-font and
+non-icon files.
+
+Copyright 2023 Fonticons, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------------------
+
+# Attribution
+
+Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
+Awesome Free files already contain embedded comments with sufficient
+attribution, so you shouldn't need to do anything additional when using these
+files normally.
+
+We've kept attribution comments terse, so we ask that you do not actively work
+to remove them from files, especially code. They're a great way for folks to
+learn about Font Awesome.
+
+--------------------------------------------------------------------------------
+
+# Brand Icons
+
+All brand icons are trademarks of their respective owners. The use of these
+trademarks does not indicate endorsement of the trademark holder by Font
+Awesome, nor vice versa. **Please do not use brand logos for any purpose except
+to represent the company, product, or service to which they refer.**
diff --git a/src/themes/default/elements/button.variables b/src/themes/default/elements/button.variables
index 6b6377d376..2775088c06 100644
--- a/src/themes/default/elements/button.variables
+++ b/src/themes/default/elements/button.variables
@@ -394,6 +394,9 @@
/* Circular */
@circularBorderRadius: 10em;
@circularIconWidth: 1em;
+@circularMinWidth: 2.5em;
+@circularGroupMargin: 0.25em;
+@circularVerticalGroupMargin: @circularGroupMargin;
/* Spaced */
@spacedMargin: 1em;
diff --git a/src/themes/default/elements/emoji.variables b/src/themes/default/elements/emoji.variables
index 0abf240b19..22de352878 100644
--- a/src/themes/default/elements/emoji.variables
+++ b/src/themes/default/elements/emoji.variables
@@ -1,6 +1,6 @@
/*
-* Tweemoji v14.0 by @twitter - https://twemoji.twitter.com/ - @twitter
-* License - CC-BY 4.0 - https://creativecommons.org/licenses/by/4.0/
+* Twemoji v15.1 by @jdecked - https://github.com/jdecked/twemoji
+* License - MIT, CC-BY 4.0 - https://creativecommons.org/licenses/by/4.0/
*/
/*******************************
@@ -10,7 +10,7 @@
/* --------------
Path
--------------- */
-@emojiPath: "https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/";
+@emojiPath: "https://cdn.jsdelivr.net/gh/jdecked/twemoji@latest/assets/svg/";
@emojiFileType: "svg";
/* --------------
@@ -172,6 +172,9 @@
1f610: neutral_face;
1fae4: face_with_diagonal_mouth;
1f611: expressionless;
+ 1fae8: shaking_face;
+ 1f642-200d-2194-fe0f: head_shaking_horizontally;
+ 1f642-200d-2195-fe0f: head_shaking_vertically;
1f62c: grimacing;
1f644: rolling_eyes;
1f62f: hushed;
@@ -309,6 +312,18 @@
1f91c-1f3fd: right_facing_fist_tone3;
1f91c-1f3fe: right_facing_fist_tone4;
1f91c-1f3ff: right_facing_fist_tone5;
+ 1faf7: leftwards_pushing_hand;
+ 1faf7-1f3fb: leftwards_pushing_hand_tone1;
+ 1faf7-1f3fc: leftwards_pushing_hand_tone2;
+ 1faf7-1f3fd: leftwards_pushing_hand_tone3;
+ 1faf7-1f3fe: leftwards_pushing_hand_tone4;
+ 1faf7-1f3ff: leftwards_pushing_hand_tone5;
+ 1faf8: rightwards_pushing_hand;
+ 1faf8-1f3fb: rightwards_pushing_hand_tone1;
+ 1faf8-1f3fc: rightwards_pushing_hand_tone2;
+ 1faf8-1f3fd: rightwards_pushing_hand_tone3;
+ 1faf8-1f3fe: rightwards_pushing_hand_tone4;
+ 1faf8-1f3ff: rightwards_pushing_hand_tone5;
1f91e: fingers_crossed;
1f91e-1f3fb: fingers_crossed_tone1;
1f91e-1f3fc: fingers_crossed_tone2;
@@ -1627,6 +1642,24 @@
1f468-1f3fd-200d-1f9bd: man_in_manual_wheelchair_tone3;
1f468-1f3fe-200d-1f9bd: man_in_manual_wheelchair_tone4;
1f468-1f3ff-200d-1f9bd: man_in_manual_wheelchair_tone5;
+ 1f9d1-200d-1f9bd-200d-27a1-fe0f: person_in_manual_wheelchair_facing_right;
+ 1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f: person_in_manual_wheelchair_facing_right_tone1;
+ 1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f: person_in_manual_wheelchair_facing_right_tone2;
+ 1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f: person_in_manual_wheelchair_facing_right_tone3;
+ 1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f: person_in_manual_wheelchair_facing_right_tone4;
+ 1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f: person_in_manual_wheelchair_facing_right_tone5;
+ 1f468-200d-1f9bd-200d-27a1-fe0f: man_in_manual_wheelchair_facing_right;
+ 1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f: man_in_manual_wheelchair_facing_right_tone2;
+ 1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f: man_in_manual_wheelchair_facing_right_tone1;
+ 1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f: man_in_manual_wheelchair_facing_right_tone3;
+ 1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f: man_in_manual_wheelchair_facing_right_tone4;
+ 1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f: man_in_manual_wheelchair_facing_right_tone5;
+ 1f469-200d-1f9bd-200d-27a1-fe0f: woman_in_manual_wheelchair_facing_right;
+ 1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f: woman_in_manual_wheelchair_facing_right_tone1;
+ 1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f: woman_in_manual_wheelchair_facing_right_tone2;
+ 1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f: woman_in_manual_wheelchair_facing_right_tone3;
+ 1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f: woman_in_manual_wheelchair_facing_right_tone4;
+ 1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f: woman_in_manual_wheelchair_facing_right_tone5;
1f9d1-200d-1f9bc: person_in_motorized_wheelchair;
1f9d1-1f3fb-200d-1f9bc: person_in_motorized_wheelchair_tone1;
1f9d1-1f3fc-200d-1f9bc: person_in_motorized_wheelchair_tone2;
@@ -1645,6 +1678,24 @@
1f468-1f3fd-200d-1f9bc: man_in_motorized_wheelchair_tone3;
1f468-1f3fe-200d-1f9bc: man_in_motorized_wheelchair_tone4;
1f468-1f3ff-200d-1f9bc: man_in_motorized_wheelchair_tone5;
+ 1f9d1-200d-1f9bc-200d-27a1-fe0f: person_in_motorized_wheelchair_facing_right;
+ 1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f: person_in_motorized_wheelchair_facing_right_tone1;
+ 1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f: person_in_motorized_wheelchair_facing_right_tone2;
+ 1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f: person_in_motorized_wheelchair_facing_right_tone3;
+ 1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f: person_in_motorized_wheelchair_facing_right_tone4;
+ 1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f: person_in_motorized_wheelchair_facing_right_tone5;
+ 1f468-200d-1f9bc-200d-27a1-fe0f: man_in_motorized_wheelchair_facing_right;
+ 1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f: man_in_motorized_wheelchair_facing_right_tone1;
+ 1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f: man_in_motorized_wheelchair_facing_right_tone2;
+ 1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f: man_in_motorized_wheelchair_facing_right_tone3;
+ 1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f: man_in_motorized_wheelchair_facing_right_tone4;
+ 1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f: man_in_motorized_wheelchair_facing_right_tone5;
+ 1f469-200d-1f9bc-200d-27a1-fe0f: woman_in_motorized_wheelchair_facing_right;
+ 1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f: woman_in_motorized_wheelchair_facing_right_tone1;
+ 1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f: woman_in_motorized_wheelchair_facing_right_tone2;
+ 1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f: woman_in_motorized_wheelchair_facing_right_tone3;
+ 1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f: woman_in_motorized_wheelchair_facing_right_tone4;
+ 1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f: woman_in_motorized_wheelchair_facing_right_tone5;
1f6b6: person_walking;
1f6b6-1f3fb: person_walking_tone1;
1f6b6-1f3fc: person_walking_tone2;
@@ -1663,6 +1714,24 @@
1f6b6-1f3fd-200d-2642-fe0f: man_walking_tone3;
1f6b6-1f3fe-200d-2642-fe0f: man_walking_tone4;
1f6b6-1f3ff-200d-2642-fe0f: man_walking_tone5;
+ 1f6b6-200d-27a1-fe0f: person_walking_facing_right;
+ 1f6b6-1f3fb-200d-27a1-fe0f: person_walking_facing_right_tone1;
+ 1f6b6-1f3fc-200d-27a1-fe0f: person_walking_facing_right_tone2;
+ 1f6b6-1f3fd-200d-27a1-fe0f: person_walking_facing_right_tone3;
+ 1f6b6-1f3fe-200d-27a1-fe0f: person_walking_facing_right_tone4;
+ 1f6b6-1f3ff-200d-27a1-fe0f: person_walking_facing_right_tone5;
+ 1f6b6-200d-2640-fe0f-200d-27a1-fe0f: woman_walking_facing_right;
+ 1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f: woman_walking_facing_right_tone1;
+ 1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f: woman_walking_facing_right_tone2;
+ 1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f: woman_walking_facing_right_tone3;
+ 1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f: woman_walking_facing_right_tone4;
+ 1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f: woman_walking_facing_right_tone5;
+ 1f6b6-200d-2642-fe0f-200d-27a1-fe0f: man_walking_facing_right;
+ 1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f: man_walking_facing_right_tone1;
+ 1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f: man_walking_facing_right_tone2;
+ 1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f: man_walking_facing_right_tone3;
+ 1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f: man_walking_facing_right_tone4;
+ 1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f: man_walking_facing_right_tone5;
1f9d1-200d-1f9af: person_with_probing_cane;
1f9d1-1f3fb-200d-1f9af: person_with_probing_cane_tone1;
1f9d1-1f3fc-200d-1f9af: person_with_probing_cane_tone2;
@@ -1681,6 +1750,24 @@
1f468-1f3fd-200d-1f9af: man_with_probing_cane_tone3;
1f468-1f3fe-200d-1f9af: man_with_probing_cane_tone4;
1f468-1f3ff-200d-1f9af: man_with_probing_cane_tone5;
+ 1f9d1-200d-1f9af-200d-27a1-fe0f: person_with_white_cane_facing_right;
+ 1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f: person_with_white_cane_facing_right_tone1;
+ 1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f: person_with_white_cane_facing_right_tone2;
+ 1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f: person_with_white_cane_facing_right_tone3;
+ 1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f: person_with_white_cane_facing_right_tone4;
+ 1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f: person_with_white_cane_facing_right_tone5;
+ 1f468-200d-1f9af-200d-27a1-fe0f: man_with_white_cane_facing_right;
+ 1f468-1f3fb-200d-1f9af-200d-27a1-fe0f: man_with_white_cane_facing_right_tone1;
+ 1f468-1f3fc-200d-1f9af-200d-27a1-fe0f: man_with_white_cane_facing_right_tone2;
+ 1f468-1f3fd-200d-1f9af-200d-27a1-fe0f: man_with_white_cane_facing_right_tone3;
+ 1f468-1f3fe-200d-1f9af-200d-27a1-fe0f: man_with_white_cane_facing_right_tone4;
+ 1f468-1f3ff-200d-1f9af-200d-27a1-fe0f: man_with_white_cane_facing_right_tone5;
+ 1f469-200d-1f9af-200d-27a1-fe0f: woman_with_white_cane_facing_right;
+ 1f469-1f3fb-200d-1f9af-200d-27a1-fe0f: woman_with_white_cane_facing_right_tone1;
+ 1f469-1f3fc-200d-1f9af-200d-27a1-fe0f: woman_with_white_cane_facing_right_tone2;
+ 1f469-1f3fd-200d-1f9af-200d-27a1-fe0f: woman_with_white_cane_facing_right_tone3;
+ 1f469-1f3fe-200d-1f9af-200d-27a1-fe0f: woman_with_white_cane_facing_right_tone4;
+ 1f469-1f3ff-200d-1f9af-200d-27a1-fe0f: woman_with_white_cane_facing_right_tone5;
1f9ce: person_kneeling;
1f9ce-1f3fb: person_kneeling_tone1;
1f9ce-1f3fc: person_kneeling_tone2;
@@ -1699,6 +1786,24 @@
1f9ce-1f3fd-200d-2642-fe0f: man_kneeling_tone3;
1f9ce-1f3fe-200d-2642-fe0f: man_kneeling_tone4;
1f9ce-1f3ff-200d-2642-fe0f: man_kneeling_tone5;
+ 1f9ce-200d-27a1-fe0f: person_kneeling_facing_right;
+ 1f9ce-1f3fb-200d-27a1-fe0f: person_kneeling_facing_right_tone1;
+ 1f9ce-1f3fc-200d-27a1-fe0f: person_kneeling_facing_right_tone2;
+ 1f9ce-1f3fd-200d-27a1-fe0f: person_kneeling_facing_right_tone3;
+ 1f9ce-1f3fe-200d-27a1-fe0f: person_kneeling_facing_right_tone4;
+ 1f9ce-1f3ff-200d-27a1-fe0f: person_kneeling_facing_right_tone5;
+ 1f9ce-200d-2640-fe0f-200d-27a1-fe0f: woman_kneeling_facing_right;
+ 1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f: woman_kneeling_facing_right_tone1;
+ 1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f: woman_kneeling_facing_right_tone2;
+ 1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f: woman_kneeling_facing_right_tone3;
+ 1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f: woman_kneeling_facing_right_tone4;
+ 1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f: woman_kneeling_facing_right_tone5;
+ 1f9ce-200d-2642-fe0f-200d-27a1-fe0f: man_kneeling_facing_right;
+ 1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f: man_kneeling_facing_right_tone1;
+ 1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f: man_kneeling_facing_right_tone2;
+ 1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f: man_kneeling_facing_right_tone3;
+ 1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f: man_kneeling_facing_right_tone4;
+ 1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f: man_kneeling_facing_right_tone5;
1f3c3: person_running;
1f3c3-1f3fb: person_running_tone1;
1f3c3-1f3fc: person_running_tone2;
@@ -1717,6 +1822,24 @@
1f3c3-1f3fd-200d-2642-fe0f: man_running_tone3;
1f3c3-1f3fe-200d-2642-fe0f: man_running_tone4;
1f3c3-1f3ff-200d-2642-fe0f: man_running_tone5;
+ 1f3c3-200d-27a1-fe0f: person_running_facing_right;
+ 1f3c3-1f3fb-200d-27a1-fe0f: person_running_facing_right_tone1;
+ 1f3c3-1f3fc-200d-27a1-fe0f: person_running_facing_right_tone2;
+ 1f3c3-1f3fd-200d-27a1-fe0f: person_running_facing_right_tone3;
+ 1f3c3-1f3fe-200d-27a1-fe0f: person_running_facing_right_tone4;
+ 1f3c3-1f3ff-200d-27a1-fe0f: person_running_facing_right_tone5;
+ 1f3c3-200d-2640-fe0f-200d-27a1-fe0f: woman_running_facing_right;
+ 1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f: woman_running_facing_right_tone1;
+ 1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f: woman_running_facing_right_tone2;
+ 1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f: woman_running_facing_right_tone3;
+ 1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f: woman_running_facing_right_tone4;
+ 1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f: woman_running_facing_right_tone5;
+ 1f3c3-200d-2642-fe0f-200d-27a1-fe0f: man_running_facing_right;
+ 1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f: man_running_facing_right_tone1;
+ 1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f: man_running_facing_right_tone2;
+ 1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f: man_running_facing_right_tone3;
+ 1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f: man_running_facing_right_tone4;
+ 1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f: man_running_facing_right_tone5;
1f9cd: person_standing;
1f9cd-1f3fb: person_standing_tone1;
1f9cd-1f3fc: person_standing_tone2;
@@ -2047,6 +2170,10 @@
1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd: kiss_man_man_tone5_tone3;
1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe: kiss_man_man_tone5_tone4;
1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff: kiss_man_man_tone5;
+ 1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2: family_adult_adult_child_child;
+ 1f9d1-200d-1f9d1-200d-1f9d2: family_adult_adult_child;
+ 1f9d1-200d-1f9d2-200d-1f9d2: family_adult_child_child;
+ 1f9d1-200d-1f9d2: family_adult_child;
1f46a: family;
1f468-200d-1f469-200d-1f466: family_man_woman_boy;
1f468-200d-1f469-200d-1f467: family_mwg;
@@ -2151,7 +2278,9 @@
1f424: baby_chick;
1f423: hatching_chick;
1f425: hatched_chick;
+ 1fabf: goose;
1f986: duck;
+ 1f426-200d-2b1b: black_bird;
1f985: eagle;
1f989: owl;
1f987: bat;
@@ -2159,17 +2288,18 @@
1f417: boar;
1f434: horse;
1f984: unicorn;
+ 1face: moose;
1f41d: bee;
+ 1fab1: worm;
1f41b: bug;
1f98b: butterfly;
1f40c: snail;
- 1fab1: worm;
1f41e: lady_beetle;
1f41c: ant;
1fab0: fly;
- 1f99f: mosquito;
- 1fab3: cockroach;
1fab2: beetle;
+ 1fab3: cockroach;
+ 1f99f: mosquito;
1f997: cricket;
1f577: spider;
1f578: spider_web;
@@ -2181,35 +2311,37 @@
1f995: sauropod;
1f419: octopus;
1f991: squid;
+ 1fabc: jellyfish;
1f990: shrimp;
1f99e: lobster;
1f980: crab;
1f421: blowfish;
1f420: tropical_fish;
1f41f: fish;
- 1f9ad: seal;
1f42c: dolphin;
1f433: whale;
1f40b: whale2;
1f988: shark;
+ 1f9ad: seal;
1f40a: crocodile;
1f405: tiger2;
1f406: leopard;
1f993: zebra;
1f98d: gorilla;
1f9a7: orangutan;
- 1f418: elephant;
1f9a3: mammoth;
- 1f9ac: bison;
+ 1f418: elephant;
1f99b: hippopotamus;
1f98f: rhino;
1f42a: dromedary_camel;
1f42b: camel;
1f992: giraffe;
1f998: kangaroo;
+ 1f9ac: bison;
1f403: water_buffalo;
1f402: ox;
1f404: cow2;
+ 1facf: donkey;
1f40e: racehorse;
1f416: pig2;
1f40f: ram;
@@ -2224,6 +2356,7 @@
1f408: cat2;
1f408-200d-2b1b: black_cat;
1fab6: feather;
+ 1fabd: wing;
1f413: rooster;
1f983: turkey;
1f9a4: dodo;
@@ -2246,32 +2379,35 @@
1f43e: feet;
1f409: dragon;
1f432: dragon_face;
+ 1f426-200d-1f525: phoenix;
1f335: cactus;
1f384: christmas_tree;
1f332: evergreen_tree;
1f333: deciduous_tree;
1f334: palm_tree;
+ 1fab5: wood;
1f331: seedling;
1f33f: herb;
1f340: four_leaf_clover;
1f38d: bamboo;
+ 1fab4: potted_plant;
1f38b: tanabata_tree;
1f343: leaves;
1f342: fallen_leaf;
1f341: maple_leaf;
- 1fab9: empty_nest;
1faba: nest_with_eggs;
+ 1fab9: empty_nest;
1f344: mushroom;
+ 1f344-200d-1f7eb: brown_mushroom;
1f41a: shell;
1fab8: coral;
1faa8: rock;
- 1fab5: wood;
1f33e: ear_of_rice;
- 1fab4: potted_plant;
1f490: bouquet;
1f337: tulip;
1f339: rose;
1f940: wilted_rose;
+ 1fabb: hyacinth;
1fab7: lotus;
1f33a: hibiscus;
1f338: cherry_blossom;
@@ -2324,11 +2460,12 @@
1f350: pear;
1f34a: tangerine;
1f34b: lemon;
+ 1f34b-200d-1f7e9: lime;
1f34c: banana;
1f349: watermelon;
1f347: grapes;
- 1fad0: blueberries;
1f353: strawberry;
+ 1fad0: blueberries;
1f348: melon;
1f352: cherries;
1f351: peach;
@@ -2339,23 +2476,24 @@
1f345: tomato;
1f346: eggplant;
1f951: avocado;
- 1fad2: olive;
+ 1fadb: pea_pod;
1f966: broccoli;
1f96c: leafy_green;
- 1fad1: bell_pepper;
1f952: cucumber;
1f336: hot_pepper;
+ 1fad1: bell_pepper;
1f33d: corn;
1f955: carrot;
+ 1fad2: olive;
1f9c4: garlic;
1f9c5: onion;
1f954: potato;
1f360: sweet_potato;
+ 1fada: ginger_root;
1f950: croissant;
1f96f: bagel;
1f35e: bread;
1f956: french_bread;
- 1fad3: flatbread;
1f968: pretzel;
1f9c0: cheese;
1f95a: egg;
@@ -2372,6 +2510,7 @@
1f354: hamburger;
1f35f: fries;
1f355: pizza;
+ 1fad3: flatbread;
1f96a: sandwich;
1f959: stuffed_flatbread;
1f9c6: falafel;
@@ -2767,6 +2906,7 @@
1f3a7: headphones;
1f3bc: musical_score;
1f3b9: musical_keyboard;
+ 1fa87: maracas;
1f941: drum;
1fa98: long_drum;
1f3b7: saxophone;
@@ -2775,6 +2915,7 @@
1f3b8: guitar;
1fa95: banjo;
1f3bb: violin;
+ 1fa88: flute;
1f3b2: game_die;
265f: chess_pawn;
1f3af: dart;
@@ -2786,20 +2927,20 @@
1f695: taxi;
1f699: blue_car;
1f6fb: pickup_truck;
+ 1f690: minibus;
1f68c: bus;
1f68e: trolleybus;
1f3ce: race_car;
1f693: police_car;
1f691: ambulance;
1f692: fire_engine;
- 1f690: minibus;
1f69a: truck;
1f69b: articulated_lorry;
1f69c: tractor;
1f9af: probing_cane;
- 1fa7c: crutch;
1f9bd: manual_wheelchair;
1f9bc: motorized_wheelchair;
+ 1fa7c: crutch;
1f6f4: scooter;
1f6b2: bike;
1f6f5: motor_scooter;
@@ -2980,6 +3121,8 @@
1faa4: mouse_trap;
1f9f1: bricks;
26d3: chains;
+ 1f517: link;
+ 26d3-fe0f-200d-1f4a5: broken_chain;
1f9f2: magnet;
1f52b: gun;
1f4a3: bomb;
@@ -3029,6 +3172,7 @@
1f9fc: soap;
1faa5: toothbrush;
1fa92: razor;
+ 1faae: hair_pick;
1f9fd: sponge;
1faa3: bucket;
1f9f4: squeeze_bottle;
@@ -3061,6 +3205,7 @@
1f38a: confetti_ball;
1f389: tada;
1f38e: dolls;
+ 1faad: folding_hand_fan;
1f3ee: izakaya_lantern;
1f390: wind_chime;
1faa9: mirror_ball;
@@ -3114,7 +3259,6 @@
1f4d6: book;
1f516: bookmark;
1f9f7: safety_pin;
- 1f517: link;
1f4ce: paperclip;
1f587: paperclips;
1f4d0: triangular_ruler;
@@ -3134,14 +3278,17 @@
1f510: closed_lock_with_key;
1f512: lock;
1f513: unlock;
+ 1fa77: pink_heart;
1f9e1: orange_heart;
1f49b: yellow_heart;
1f49a: green_heart;
+ 1fa75: light_blue_heart;
1f499: blue_heart;
1f49c: purple_heart;
1f5a4: black_heart;
- 1f90e: brown_heart;
+ 1fa76: grey_heart;
1f90d: white_heart;
+ 1f90e: brown_heart;
1f494: broken_heart;
1f495: two_hearts;
1f49e: revolving_hearts;
@@ -3157,6 +3304,7 @@
271d: cross;
262a: star_and_crescent;
1f549: om_symbol;
+ 1faaf: khanda;
1f52f: six_pointed_star;
1f54e: menorah;
262f: yin_yang;
@@ -3228,13 +3376,14 @@
1f6be: wc;
267f: wheelchair;
1f17f: parking;
+ 1f6d7: elevator;
1f233: u7a7a;
1f202: sa;
1f6c2: passport_control;
1f6c3: customs;
1f6c4: baggage_claim;
1f6c5: left_luggage;
- 1f6d7: elevator;
+ 1f6dc: wireless;
1f6b9: mens;
1f6ba: womens;
1f6bc: baby_symbol;
@@ -3384,11 +3533,12 @@
26a7: transgender_symbol;
1f3f3: flag_white;
1f3f4: flag_black;
+ 1f3f4-200d-2620-fe0f: pirate_flag;
1f3c1: checkered_flag;
1f6a9: triangular_flag_on_post;
1f3f3-fe0f-200d-1f308: rainbow_flag;
1f3f3-fe0f-200d-26a7-fe0f: transgender_flag;
- 1f3f4-200d-2620-fe0f: pirate_flag;
+ 1f1fa-1f1f3: united_nations;
1f1e6-1f1eb: flag_af;
1f1e6-1f1fd: flag_ax;
1f1e6-1f1f1: flag_al;
@@ -3650,7 +3800,6 @@
1f1f8-1f1ef: flag_sj;
1f1f9-1f1e6: flag_ta;
1f1fa-1f1f2: flag_um;
- 1f1fa-1f1f3: united_nations;
1f3fb: tone1;
1f3fc: tone2;
1f3fd: tone3;
diff --git a/src/themes/default/elements/flag.variables b/src/themes/default/elements/flag.variables
index 84c2b58b51..932d06c924 100644
--- a/src/themes/default/elements/flag.variables
+++ b/src/themes/default/elements/flag.variables
@@ -815,9 +815,9 @@
};
@1f1f2-1f1f0: {
countrycode: mk;
- class: macedonia;
- aliasClass: false;
- aliasClass2: false;
+ class: republic_of_north_macedonia;
+ aliasClass: north_macedonia;
+ aliasClass2: macedonia;
};
@1f1f2-1f1ec: {
countrycode: mg;
diff --git a/src/themes/default/globals/site.variables b/src/themes/default/globals/site.variables
index e017be88fd..c6f4bef107 100755
--- a/src/themes/default/globals/site.variables
+++ b/src/themes/default/globals/site.variables
@@ -1538,3 +1538,6 @@
@inputWarningPlaceholderColor: if(iscolor(@formWarningColor), lighten(@formWarningColor, 40), @formWarningColor);
@inputWarningPlaceholderFocusColor: if(iscolor(@formWarningColor), lighten(@formWarningColor, 30), @formWarningColor);
+
+@defaultHighlightMatchesBackground: revert;
+@defaultHighlightMatchesColor: revert;
diff --git a/src/themes/default/globals/variation.variables b/src/themes/default/globals/variation.variables
index 75321ab750..f9d430299d 100644
--- a/src/themes/default/globals/variation.variables
+++ b/src/themes/default/globals/variation.variables
@@ -575,6 +575,7 @@
@variationDropdownPointing: true;
@variationDropdownColumnar: true;
@variationDropdownScrollhint: true;
+@variationDropdownHighlightMatches: false;
@variationDropdownSizes: @variationAllSizes;
/* Embed */
@@ -644,6 +645,7 @@
/* Progress */
@variationProgressInverted: true;
@variationProgressDisabled: true;
+@variationProgressBasic: true;
@variationProgressIndicating: true;
@variationProgressIndeterminate: true;
@variationProgressSliding: true;
@@ -680,6 +682,7 @@
@variationSearchVeryLong: true;
@variationSearchResizable: true;
@variationSearchScrolling: true;
+@variationSearchHighlightMatches: false;
@variationSearchSizes: @variationAllSizes;
/* Shape */
@@ -712,6 +715,10 @@
@variationSliderTicked: true;
@variationSliderVertical: true;
@variationSliderBasic: true;
+@variationSliderHighlight: true;
+@variationSliderBottomAligned: true;
+@variationSliderRightAligned: true;
+@variationSliderUiLabel: true;
@variationSliderSizes: small, large, big;
@variationSliderColors: @variationAllColors;
diff --git a/src/themes/default/modules/dropdown.variables b/src/themes/default/modules/dropdown.variables
index 139d6d645a..c48e12f4df 100755
--- a/src/themes/default/modules/dropdown.variables
+++ b/src/themes/default/modules/dropdown.variables
@@ -480,3 +480,6 @@
/* Resizable */
@resizableDirection: vertical;
+
+@highlightMatchesBackground: @defaultHighlightMatchesBackground;
+@highlightMatchesColor: @defaultHighlightMatchesColor;
diff --git a/src/themes/default/modules/progress.variables b/src/themes/default/modules/progress.variables
index b65cd16c7a..2a5237eb8e 100644
--- a/src/themes/default/modules/progress.variables
+++ b/src/themes/default/modules/progress.variables
@@ -28,7 +28,7 @@
width @barTransitionDuration @barTransitionEasing,
background-color @barTransitionDuration @barTransitionEasing;
@barInitialWidth: 0;
-@barMinWidth: 2em;
+@barMinWidth: 2.5em;
/* Progress Bar Label */
@progressWidth: auto;
diff --git a/src/themes/default/modules/search.variables b/src/themes/default/modules/search.variables
index 7e35550134..f471d659c5 100644
--- a/src/themes/default/modules/search.variables
+++ b/src/themes/default/modules/search.variables
@@ -177,3 +177,6 @@
/* Resizable */
@resizableDirection: vertical;
+
+@highlightMatchesBackground: @defaultHighlightMatchesBackground;
+@highlightMatchesColor: @defaultHighlightMatchesColor;
diff --git a/src/themes/default/modules/slider.variables b/src/themes/default/modules/slider.variables
index 67a2b7bb21..523863ee4f 100644
--- a/src/themes/default/modules/slider.variables
+++ b/src/themes/default/modules/slider.variables
@@ -14,6 +14,7 @@
@trackHeight: 0.4em;
@trackPositionTop: (@height / 2) - (@trackHeight / 2);
@background: #ccc;
+@invertedBackground: #333;
@trackBorderRadius: 4px;
@trackColor: @transparentBlack;
@@ -52,14 +53,23 @@
Variations
-------------------- */
+/* Highlight */
+@highlightOpacity: 0.6;
+@highlightTransition: all 0.2s @defaultEasing;
+
/* Vertical */
@verticalPadding: 0.5em 1em;
+@verticalTickDistance: 0.6em;
+@verticalUiLabelMargin: 0.3em;
/* Labeled */
@labelHeight: @height;
@labelWidth: 1px;
@labelColor: @background;
@labelPadding: 0.2em 0;
+@invertedLabelColor: @invertedBackground;
+@uiLabelMargin: 0.5em;
+@uiLabelTickHeight: 2em;
/* Hover */
@hoverVarOpacity: 0;
diff --git a/src/themes/default/views/feed.variables b/src/themes/default/views/feed.variables
index c316a5ec46..bb3613061d 100644
--- a/src/themes/default/views/feed.variables
+++ b/src/themes/default/views/feed.variables
@@ -190,6 +190,9 @@
@invertedLikeHoverColor: @invertedSelectedTextColor;
@invertedLikeActiveColor: @invertedLikeColor;
+@invertedMetadataActionColor: @invertedLightTextColor;
+@invertedMetadataActionHoverColor: @invertedSelectedTextColor;
+
@invertedConnectedBorderColor: @whiteBorderColor;
@invertedDividedBorderColor: @whiteBorderColor;
@invertedTextLabelColor: @white;
diff --git a/src/themes/github/assets/fonts/LICENSE.txt b/src/themes/github/assets/fonts/LICENSE.txt
new file mode 100644
index 0000000000..79350f0e46
--- /dev/null
+++ b/src/themes/github/assets/fonts/LICENSE.txt
@@ -0,0 +1,94 @@
+(c) 2012-2015 GitHub
+with Reserved Font Name Opticons.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/src/themes/joypixels/elements/emoji.variables b/src/themes/joypixels/elements/emoji.variables
index c2f8711a52..15968cebd1 100644
--- a/src/themes/joypixels/elements/emoji.variables
+++ b/src/themes/joypixels/elements/emoji.variables
@@ -1,5 +1,5 @@
/*
- * JoyPixels 7.0 by @joypixels - https://www.joypixels.com - @joypixels
+ * JoyPixels 9.0 by @joypixels - https://www.joypixels.com - @joypixels
* License - https://www.joypixels.com/licenses/free
*/
@@ -13,7 +13,7 @@
Downloading and hosting the joxpixels assets locally may require an additional license depending on the usage
Find joypixels licenses at https://www.joypixels.com/licenses
*/
-@emojiPath: "https://cdn.jsdelivr.net/joypixels/assets/7.0/png/unicode/128/";
+@emojiPath: "https://cdn.jsdelivr.net/joypixels/assets/9.0/png/unicode/128/";
@emojiFileType: "png";
/* --------------
@@ -170,6 +170,9 @@
1f610: neutral_face;
1fae4: face_with_diagonal_mouth;
1f611: expressionless;
+ 1fae8: shaking_face;
+ 1f642-2194: head_shaking_horizontally;
+ 1f642-2195: head_shaking_vertically;
1f62c: grimacing;
1f644: rolling_eyes;
1f62f: hushed;
@@ -307,6 +310,18 @@
1f91c-1f3fd: right_facing_fist_tone3;
1f91c-1f3fe: right_facing_fist_tone4;
1f91c-1f3ff: right_facing_fist_tone5;
+ 1faf7: leftwards_pushing_hand;
+ 1faf7-1f3fb: leftwards_pushing_hand_tone1;
+ 1faf7-1f3fc: leftwards_pushing_hand_tone2;
+ 1faf7-1f3fd: leftwards_pushing_hand_tone3;
+ 1faf7-1f3fe: leftwards_pushing_hand_tone4;
+ 1faf7-1f3ff: leftwards_pushing_hand_tone5;
+ 1faf8: rightwards_pushing_hand;
+ 1faf8-1f3fb: rightwards_pushing_hand_tone1;
+ 1faf8-1f3fc: rightwards_pushing_hand_tone2;
+ 1faf8-1f3fd: rightwards_pushing_hand_tone3;
+ 1faf8-1f3fe: rightwards_pushing_hand_tone4;
+ 1faf8-1f3ff: rightwards_pushing_hand_tone5;
1f91e: fingers_crossed;
1f91e-1f3fb: fingers_crossed_tone1;
1f91e-1f3fc: fingers_crossed_tone2;
@@ -1625,6 +1640,24 @@
1f468-1f3fd-1f9bd: man_in_manual_wheelchair_tone3;
1f468-1f3fe-1f9bd: man_in_manual_wheelchair_tone4;
1f468-1f3ff-1f9bd: man_in_manual_wheelchair_tone5;
+ 1f9d1-1f9bd-27a1: person_in_manual_wheelchair_facing_right;
+ 1f9d1-1f3fb-1f9bd-27a1: person_in_manual_wheelchair_facing_right_tone1;
+ 1f9d1-1f3fc-1f9bd-27a1: person_in_manual_wheelchair_facing_right_tone2;
+ 1f9d1-1f3fd-1f9bd-27a1: person_in_manual_wheelchair_facing_right_tone3;
+ 1f9d1-1f3fe-1f9bd-27a1: person_in_manual_wheelchair_facing_right_tone4;
+ 1f9d1-1f3ff-1f9bd-27a1: person_in_manual_wheelchair_facing_right_tone5;
+ 1f468-1f9bd-27a1: man_in_manual_wheelchair_facing_right;
+ 1f468-1f3fc-1f9bd-27a1: man_in_manual_wheelchair_facing_right_tone2;
+ 1f468-1f3fb-1f9bd-27a1: man_in_manual_wheelchair_facing_right_tone1;
+ 1f468-1f3fd-1f9bd-27a1: man_in_manual_wheelchair_facing_right_tone3;
+ 1f468-1f3fe-1f9bd-27a1: man_in_manual_wheelchair_facing_right_tone4;
+ 1f468-1f3ff-1f9bd-27a1: man_in_manual_wheelchair_facing_right_tone5;
+ 1f469-1f9bd-27a1: woman_in_manual_wheelchair_facing_right;
+ 1f469-1f3fb-1f9bd-27a1: woman_in_manual_wheelchair_facing_right_tone1;
+ 1f469-1f3fc-1f9bd-27a1: woman_in_manual_wheelchair_facing_right_tone2;
+ 1f469-1f3fd-1f9bd-27a1: woman_in_manual_wheelchair_facing_right_tone3;
+ 1f469-1f3fe-1f9bd-27a1: woman_in_manual_wheelchair_facing_right_tone4;
+ 1f469-1f3ff-1f9bd-27a1: woman_in_manual_wheelchair_facing_right_tone5;
1f9d1-1f9bc: person_in_motorized_wheelchair;
1f9d1-1f3fb-1f9bc: person_in_motorized_wheelchair_tone1;
1f9d1-1f3fc-1f9bc: person_in_motorized_wheelchair_tone2;
@@ -1643,6 +1676,24 @@
1f468-1f3fd-1f9bc: man_in_motorized_wheelchair_tone3;
1f468-1f3fe-1f9bc: man_in_motorized_wheelchair_tone4;
1f468-1f3ff-1f9bc: man_in_motorized_wheelchair_tone5;
+ 1f9d1-1f9bc-27a1: person_in_motorized_wheelchair_facing_right;
+ 1f9d1-1f3fb-1f9bc-27a1: person_in_motorized_wheelchair_facing_right_tone1;
+ 1f9d1-1f3fc-1f9bc-27a1: person_in_motorized_wheelchair_facing_right_tone2;
+ 1f9d1-1f3fd-1f9bc-27a1: person_in_motorized_wheelchair_facing_right_tone3;
+ 1f9d1-1f3fe-1f9bc-27a1: person_in_motorized_wheelchair_facing_right_tone4;
+ 1f9d1-1f3ff-1f9bc-27a1: person_in_motorized_wheelchair_facing_right_tone5;
+ 1f468-1f9bc-27a1: man_in_motorized_wheelchair_facing_right;
+ 1f468-1f3fb-1f9bc-27a1: man_in_motorized_wheelchair_facing_right_tone1;
+ 1f468-1f3fc-1f9bc-27a1: man_in_motorized_wheelchair_facing_right_tone2;
+ 1f468-1f3fd-1f9bc-27a1: man_in_motorized_wheelchair_facing_right_tone3;
+ 1f468-1f3fe-1f9bc-27a1: man_in_motorized_wheelchair_facing_right_tone4;
+ 1f468-1f3ff-1f9bc-27a1: man_in_motorized_wheelchair_facing_right_tone5;
+ 1f469-1f9bc-27a1: woman_in_motorized_wheelchair_facing_right;
+ 1f469-1f3fb-1f9bc-27a1: woman_in_motorized_wheelchair_facing_right_tone1;
+ 1f469-1f3fc-1f9bc-27a1: woman_in_motorized_wheelchair_facing_right_tone2;
+ 1f469-1f3fd-1f9bc-27a1: woman_in_motorized_wheelchair_facing_right_tone3;
+ 1f469-1f3fe-1f9bc-27a1: woman_in_motorized_wheelchair_facing_right_tone4;
+ 1f469-1f3ff-1f9bc-27a1: woman_in_motorized_wheelchair_facing_right_tone5;
1f6b6: person_walking;
1f6b6-1f3fb: person_walking_tone1;
1f6b6-1f3fc: person_walking_tone2;
@@ -1661,6 +1712,24 @@
1f6b6-1f3fd-2642: man_walking_tone3;
1f6b6-1f3fe-2642: man_walking_tone4;
1f6b6-1f3ff-2642: man_walking_tone5;
+ 1f6b6-27a1: person_walking_facing_right;
+ 1f6b6-1f3fb-27a1: person_walking_facing_right_tone1;
+ 1f6b6-1f3fc-27a1: person_walking_facing_right_tone2;
+ 1f6b6-1f3fd-27a1: person_walking_facing_right_tone3;
+ 1f6b6-1f3fe-27a1: person_walking_facing_right_tone4;
+ 1f6b6-1f3ff-27a1: person_walking_facing_right_tone5;
+ 1f6b6-2640-27a1: woman_walking_facing_right;
+ 1f6b6-1f3fb-2640-27a1: woman_walking_facing_right_tone1;
+ 1f6b6-1f3fc-2640-27a1: woman_walking_facing_right_tone2;
+ 1f6b6-1f3fd-2640-27a1: woman_walking_facing_right_tone3;
+ 1f6b6-1f3fe-2640-27a1: woman_walking_facing_right_tone4;
+ 1f6b6-1f3ff-2640-27a1: woman_walking_facing_right_tone5;
+ 1f6b6-2642-27a1: man_walking_facing_right;
+ 1f6b6-1f3fb-2642-27a1: man_walking_facing_right_tone1;
+ 1f6b6-1f3fc-2642-27a1: man_walking_facing_right_tone2;
+ 1f6b6-1f3fd-2642-27a1: man_walking_facing_right_tone3;
+ 1f6b6-1f3fe-2642-27a1: man_walking_facing_right_tone4;
+ 1f6b6-1f3ff-2642-27a1: man_walking_facing_right_tone5;
1f9d1-1f9af: person_with_probing_cane;
1f9d1-1f3fb-1f9af: person_with_probing_cane_tone1;
1f9d1-1f3fc-1f9af: person_with_probing_cane_tone2;
@@ -1679,6 +1748,24 @@
1f468-1f3fd-1f9af: man_with_probing_cane_tone3;
1f468-1f3fe-1f9af: man_with_probing_cane_tone4;
1f468-1f3ff-1f9af: man_with_probing_cane_tone5;
+ 1f9d1-1f9af-27a1: person_with_white_cane_facing_right;
+ 1f9d1-1f3fb-1f9af-27a1: person_with_white_cane_facing_right_tone1;
+ 1f9d1-1f3fc-1f9af-27a1: person_with_white_cane_facing_right_tone2;
+ 1f9d1-1f3fd-1f9af-27a1: person_with_white_cane_facing_right_tone3;
+ 1f9d1-1f3fe-1f9af-27a1: person_with_white_cane_facing_right_tone4;
+ 1f9d1-1f3ff-1f9af-27a1: person_with_white_cane_facing_right_tone5;
+ 1f468-1f9af-27a1: man_with_white_cane_facing_right;
+ 1f468-1f3fb-1f9af-27a1: man_with_white_cane_facing_right_tone1;
+ 1f468-1f3fc-1f9af-27a1: man_with_white_cane_facing_right_tone2;
+ 1f468-1f3fd-1f9af-27a1: man_with_white_cane_facing_right_tone3;
+ 1f468-1f3fe-1f9af-27a1: man_with_white_cane_facing_right_tone4;
+ 1f468-1f3ff-1f9af-27a1: man_with_white_cane_facing_right_tone5;
+ 1f469-1f9af-27a1: woman_with_white_cane_facing_right;
+ 1f469-1f3fb-1f9af-27a1: woman_with_white_cane_facing_right_tone1;
+ 1f469-1f3fc-1f9af-27a1: woman_with_white_cane_facing_right_tone2;
+ 1f469-1f3fd-1f9af-27a1: woman_with_white_cane_facing_right_tone3;
+ 1f469-1f3fe-1f9af-27a1: woman_with_white_cane_facing_right_tone4;
+ 1f469-1f3ff-1f9af-27a1: woman_with_white_cane_facing_right_tone5;
1f9ce: person_kneeling;
1f9ce-1f3fb: person_kneeling_tone1;
1f9ce-1f3fc: person_kneeling_tone2;
@@ -1697,6 +1784,24 @@
1f9ce-1f3fd-2642: man_kneeling_tone3;
1f9ce-1f3fe-2642: man_kneeling_tone4;
1f9ce-1f3ff-2642: man_kneeling_tone5;
+ 1f9ce-27a1: person_kneeling_facing_right;
+ 1f9ce-1f3fb-27a1: person_kneeling_facing_right_tone1;
+ 1f9ce-1f3fc-27a1: person_kneeling_facing_right_tone2;
+ 1f9ce-1f3fd-27a1: person_kneeling_facing_right_tone3;
+ 1f9ce-1f3fe-27a1: person_kneeling_facing_right_tone4;
+ 1f9ce-1f3ff-27a1: person_kneeling_facing_right_tone5;
+ 1f9ce-2640-27a1: woman_kneeling_facing_right;
+ 1f9ce-1f3fb-2640-27a1: woman_kneeling_facing_right_tone1;
+ 1f9ce-1f3fc-2640-27a1: woman_kneeling_facing_right_tone2;
+ 1f9ce-1f3fd-2640-27a1: woman_kneeling_facing_right_tone3;
+ 1f9ce-1f3fe-2640-27a1: woman_kneeling_facing_right_tone4;
+ 1f9ce-1f3ff-2640-27a1: woman_kneeling_facing_right_tone5;
+ 1f9ce-2642-27a1: man_kneeling_facing_right;
+ 1f9ce-1f3fb-2642-27a1: man_kneeling_facing_right_tone1;
+ 1f9ce-1f3fc-2642-27a1: man_kneeling_facing_right_tone2;
+ 1f9ce-1f3fd-2642-27a1: man_kneeling_facing_right_tone3;
+ 1f9ce-1f3fe-2642-27a1: man_kneeling_facing_right_tone4;
+ 1f9ce-1f3ff-2642-27a1: man_kneeling_facing_right_tone5;
1f3c3: person_running;
1f3c3-1f3fb: person_running_tone1;
1f3c3-1f3fc: person_running_tone2;
@@ -1715,6 +1820,24 @@
1f3c3-1f3fd-2642: man_running_tone3;
1f3c3-1f3fe-2642: man_running_tone4;
1f3c3-1f3ff-2642: man_running_tone5;
+ 1f3c3-27a1: person_running_facing_right;
+ 1f3c3-1f3fb-27a1: person_running_facing_right_tone1;
+ 1f3c3-1f3fc-27a1: person_running_facing_right_tone2;
+ 1f3c3-1f3fd-27a1: person_running_facing_right_tone3;
+ 1f3c3-1f3fe-27a1: person_running_facing_right_tone4;
+ 1f3c3-1f3ff-27a1: person_running_facing_right_tone5;
+ 1f3c3-2640-27a1: woman_running_facing_right;
+ 1f3c3-1f3fb-2640-27a1: woman_running_facing_right_tone1;
+ 1f3c3-1f3fc-2640-27a1: woman_running_facing_right_tone2;
+ 1f3c3-1f3fd-2640-27a1: woman_running_facing_right_tone3;
+ 1f3c3-1f3fe-2640-27a1: woman_running_facing_right_tone4;
+ 1f3c3-1f3ff-2640-27a1: woman_running_facing_right_tone5;
+ 1f3c3-2642-27a1: man_running_facing_right;
+ 1f3c3-1f3fb-2642-27a1: man_running_facing_right_tone1;
+ 1f3c3-1f3fc-2642-27a1: man_running_facing_right_tone2;
+ 1f3c3-1f3fd-2642-27a1: man_running_facing_right_tone3;
+ 1f3c3-1f3fe-2642-27a1: man_running_facing_right_tone4;
+ 1f3c3-1f3ff-2642-27a1: man_running_facing_right_tone5;
1f9cd: person_standing;
1f9cd-1f3fb: person_standing_tone1;
1f9cd-1f3fc: person_standing_tone2;
@@ -2045,6 +2168,10 @@
1f468-1f3ff-2764-1f48b-1f468-1f3fd: kiss_man_man_tone5_tone3;
1f468-1f3ff-2764-1f48b-1f468-1f3fe: kiss_man_man_tone5_tone4;
1f468-1f3ff-2764-1f48b-1f468-1f3ff: kiss_man_man_tone5;
+ 1f9d1-1f9d1-1f9d2-1f9d2: family_adult_adult_child_child;
+ 1f9d1-1f9d1-1f9d2: family_adult_adult_child;
+ 1f9d1-1f9d2-1f9d2: family_adult_child_child;
+ 1f9d1-1f9d2: family_adult_child;
1f46a: family;
1f468-1f469-1f466: family_man_woman_boy;
1f468-1f469-1f467: family_mwg;
@@ -2149,7 +2276,9 @@
1f424: baby_chick;
1f423: hatching_chick;
1f425: hatched_chick;
+ 1fabf: goose;
1f986: duck;
+ 1f426-2b1b: black_bird;
1f985: eagle;
1f989: owl;
1f987: bat;
@@ -2157,17 +2286,18 @@
1f417: boar;
1f434: horse;
1f984: unicorn;
+ 1face: moose;
1f41d: bee;
+ 1fab1: worm;
1f41b: bug;
1f98b: butterfly;
1f40c: snail;
- 1fab1: worm;
1f41e: lady_beetle;
1f41c: ant;
1fab0: fly;
- 1f99f: mosquito;
- 1fab3: cockroach;
1fab2: beetle;
+ 1fab3: cockroach;
+ 1f99f: mosquito;
1f997: cricket;
1f577: spider;
1f578: spider_web;
@@ -2179,35 +2309,37 @@
1f995: sauropod;
1f419: octopus;
1f991: squid;
+ 1fabc: jellyfish;
1f990: shrimp;
1f99e: lobster;
1f980: crab;
1f421: blowfish;
1f420: tropical_fish;
1f41f: fish;
- 1f9ad: seal;
1f42c: dolphin;
1f433: whale;
1f40b: whale2;
1f988: shark;
+ 1f9ad: seal;
1f40a: crocodile;
1f405: tiger2;
1f406: leopard;
1f993: zebra;
1f98d: gorilla;
1f9a7: orangutan;
- 1f418: elephant;
1f9a3: mammoth;
- 1f9ac: bison;
+ 1f418: elephant;
1f99b: hippopotamus;
1f98f: rhino;
1f42a: dromedary_camel;
1f42b: camel;
1f992: giraffe;
1f998: kangaroo;
+ 1f9ac: bison;
1f403: water_buffalo;
1f402: ox;
1f404: cow2;
+ 1facf: donkey;
1f40e: racehorse;
1f416: pig2;
1f40f: ram;
@@ -2222,6 +2354,7 @@
1f408: cat2;
1f408-2b1b: black_cat;
1fab6: feather;
+ 1fabd: wing;
1f413: rooster;
1f983: turkey;
1f9a4: dodo;
@@ -2244,32 +2377,35 @@
1f43e: feet;
1f409: dragon;
1f432: dragon_face;
+ 1f426-1f525: phoenix;
1f335: cactus;
1f384: christmas_tree;
1f332: evergreen_tree;
1f333: deciduous_tree;
1f334: palm_tree;
+ 1fab5: wood;
1f331: seedling;
1f33f: herb;
1f340: four_leaf_clover;
1f38d: bamboo;
+ 1fab4: potted_plant;
1f38b: tanabata_tree;
1f343: leaves;
1f342: fallen_leaf;
1f341: maple_leaf;
- 1fab9: empty_nest;
1faba: nest_with_eggs;
+ 1fab9: empty_nest;
1f344: mushroom;
+ 1f344-1f7eb: brown_mushroom;
1f41a: shell;
1fab8: coral;
1faa8: rock;
- 1fab5: wood;
1f33e: ear_of_rice;
- 1fab4: potted_plant;
1f490: bouquet;
1f337: tulip;
1f339: rose;
1f940: wilted_rose;
+ 1fabb: hyacinth;
1fab7: lotus;
1f33a: hibiscus;
1f338: cherry_blossom;
@@ -2322,11 +2458,12 @@
1f350: pear;
1f34a: tangerine;
1f34b: lemon;
+ 1f34b-1f7e9: lime;
1f34c: banana;
1f349: watermelon;
1f347: grapes;
- 1fad0: blueberries;
1f353: strawberry;
+ 1fad0: blueberries;
1f348: melon;
1f352: cherries;
1f351: peach;
@@ -2337,23 +2474,24 @@
1f345: tomato;
1f346: eggplant;
1f951: avocado;
- 1fad2: olive;
+ 1fadb: pea_pod;
1f966: broccoli;
1f96c: leafy_green;
- 1fad1: bell_pepper;
1f952: cucumber;
1f336: hot_pepper;
+ 1fad1: bell_pepper;
1f33d: corn;
1f955: carrot;
+ 1fad2: olive;
1f9c4: garlic;
1f9c5: onion;
1f954: potato;
1f360: sweet_potato;
+ 1fada: ginger_root;
1f950: croissant;
1f96f: bagel;
1f35e: bread;
1f956: french_bread;
- 1fad3: flatbread;
1f968: pretzel;
1f9c0: cheese;
1f95a: egg;
@@ -2370,6 +2508,7 @@
1f354: hamburger;
1f35f: fries;
1f355: pizza;
+ 1fad3: flatbread;
1f96a: sandwich;
1f959: stuffed_flatbread;
1f9c6: falafel;
@@ -2765,6 +2904,7 @@
1f3a7: headphones;
1f3bc: musical_score;
1f3b9: musical_keyboard;
+ 1fa87: maracas;
1f941: drum;
1fa98: long_drum;
1f3b7: saxophone;
@@ -2773,6 +2913,7 @@
1f3b8: guitar;
1fa95: banjo;
1f3bb: violin;
+ 1fa88: flute;
1f3b2: game_die;
265f: chess_pawn;
1f3af: dart;
@@ -2784,20 +2925,20 @@
1f695: taxi;
1f699: blue_car;
1f6fb: pickup_truck;
+ 1f690: minibus;
1f68c: bus;
1f68e: trolleybus;
1f3ce: race_car;
1f693: police_car;
1f691: ambulance;
1f692: fire_engine;
- 1f690: minibus;
1f69a: truck;
1f69b: articulated_lorry;
1f69c: tractor;
1f9af: probing_cane;
- 1fa7c: crutch;
1f9bd: manual_wheelchair;
1f9bc: motorized_wheelchair;
+ 1fa7c: crutch;
1f6f4: scooter;
1f6b2: bike;
1f6f5: motor_scooter;
@@ -2978,6 +3119,8 @@
1faa4: mouse_trap;
1f9f1: bricks;
26d3: chains;
+ 1f517: link;
+ 26d3-1f4a5: broken_chain;
1f9f2: magnet;
1f52b: gun;
1f4a3: bomb;
@@ -3027,6 +3170,7 @@
1f9fc: soap;
1faa5: toothbrush;
1fa92: razor;
+ 1faae: hair_pick;
1f9fd: sponge;
1faa3: bucket;
1f9f4: squeeze_bottle;
@@ -3059,6 +3203,7 @@
1f38a: confetti_ball;
1f389: tada;
1f38e: dolls;
+ 1faad: folding_hand_fan;
1f3ee: izakaya_lantern;
1f390: wind_chime;
1faa9: mirror_ball;
@@ -3112,7 +3257,6 @@
1f4d6: book;
1f516: bookmark;
1f9f7: safety_pin;
- 1f517: link;
1f4ce: paperclip;
1f587: paperclips;
1f4d0: triangular_ruler;
@@ -3132,14 +3276,17 @@
1f510: closed_lock_with_key;
1f512: lock;
1f513: unlock;
+ 1fa77: pink_heart;
1f9e1: orange_heart;
1f49b: yellow_heart;
1f49a: green_heart;
+ 1fa75: light_blue_heart;
1f499: blue_heart;
1f49c: purple_heart;
1f5a4: black_heart;
- 1f90e: brown_heart;
+ 1fa76: grey_heart;
1f90d: white_heart;
+ 1f90e: brown_heart;
1f494: broken_heart;
1f495: two_hearts;
1f49e: revolving_hearts;
@@ -3155,6 +3302,7 @@
271d: cross;
262a: star_and_crescent;
1f549: om_symbol;
+ 1faaf: khanda;
1f52f: six_pointed_star;
1f54e: menorah;
262f: yin_yang;
@@ -3226,13 +3374,14 @@
1f6be: wc;
267f: wheelchair;
1f17f: parking;
+ 1f6d7: elevator;
1f233: u7a7a;
1f202: sa;
1f6c2: passport_control;
1f6c3: customs;
1f6c4: baggage_claim;
1f6c5: left_luggage;
- 1f6d7: elevator;
+ 1f6dc: wireless;
1f6b9: mens;
1f6ba: womens;
1f6bc: baby_symbol;
@@ -3379,14 +3528,27 @@
1f565: clock1030;
1f566: clock1130;
1f567: clock1230;
+ 0030: digit_zero;
+ 0031: digit_one;
+ 0032: digit_two;
+ 0033: digit_three;
+ 0034: digit_four;
+ 0035: digit_five;
+ 0036: digit_six;
+ 0037: digit_seven;
+ 0038: digit_eight;
+ 0039: digit_nine;
+ 0023: pound_symbol;
+ 002a: asterisk_symbol;
26a7: transgender_symbol;
1f3f3: flag_white;
1f3f4: flag_black;
+ 1f3f4-2620: pirate_flag;
1f3c1: checkered_flag;
1f6a9: triangular_flag_on_post;
1f3f3-1f308: rainbow_flag;
1f3f3-26a7: transgender_flag;
- 1f3f4-2620: pirate_flag;
+ 1f1fa-1f1f3: united_nations;
1f1e6-1f1eb: flag_af;
1f1e6-1f1fd: flag_ax;
1f1e6-1f1f1: flag_al;
@@ -3648,7 +3810,6 @@
1f1f8-1f1ef: flag_sj;
1f1f9-1f1e6: flag_ta;
1f1fa-1f1f2: flag_um;
- 1f1fa-1f1f3: united_nations;
1f3fb: tone1;
1f3fc: tone2;
1f3fd: tone3;
diff --git a/src/themes/material/assets/fonts/LICENSE.txt b/src/themes/material/assets/fonts/LICENSE.txt
new file mode 100644
index 0000000000..d645695673
--- /dev/null
+++ b/src/themes/material/assets/fonts/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/tasks/admin/components/create.js b/tasks/admin/components/create.js
index 6047cad7ef..5c98d7b333 100644
--- a/tasks/admin/components/create.js
+++ b/tasks/admin/components/create.js
@@ -21,10 +21,10 @@ const
gulp = require('gulp'),
// admin dependencies
- concatFileNames = require('gulp-concat-filenames'),
+ concatFileNames = require('@fomantic/gulp-concat-filenames'),
flatten = require('gulp-flatten'),
jsonEditor = require('gulp-json-editor'),
- plumber = require('gulp-plumber'),
+ plumber = require('@fomantic/gulp-plumber'),
rename = require('gulp-rename'),
replace = require('gulp-replace'),
tap = require('gulp-tap'),
@@ -127,7 +127,7 @@ module.exports = function (callback) {
// copy dist files into output folder adjusting asset paths
function copyDist() {
- return gulp.src(release.source + component + '.*')
+ return gulp.src(release.source + component + '.*', { encoding: false })
.pipe(plumber())
.pipe(flatten())
.pipe(replace(release.paths.source, release.paths.output))
@@ -268,7 +268,7 @@ module.exports = function (callback) {
filenames += file.contents;
}))
.on('end', function () {
- gulp.src(manifest.assets)
+ gulp.src(manifest.assets, { encoding: false })
.pipe(concatFileNames('empty.txt', concatSettings))
.pipe(tap(function (file) {
filenames += file.contents;
diff --git a/tasks/admin/components/init.js b/tasks/admin/components/init.js
index 4deb6f1d35..2121c79e51 100644
--- a/tasks/admin/components/init.js
+++ b/tasks/admin/components/init.js
@@ -17,9 +17,9 @@ const
fs = require('fs'),
path = require('path'),
del = require('del'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
- git = require('gulp-git'),
+ git = require('@fomantic/gulp-git'),
mkdirp = require('mkdirp'),
// admin files
diff --git a/tasks/admin/components/update.js b/tasks/admin/components/update.js
index 7021001ca4..6d037be0f4 100644
--- a/tasks/admin/components/update.js
+++ b/tasks/admin/components/update.js
@@ -16,9 +16,9 @@ const
// node dependencies
fs = require('fs'),
path = require('path'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
- git = require('gulp-git'),
+ git = require('@fomantic/gulp-git'),
// admin files
release = require('../../config/admin/release'),
@@ -113,7 +113,7 @@ module.exports = function (callback) {
console.info('Committing ' + component + ' files', commitArgs);
gulp.src('./', gitOptions)
.pipe(git.add(gitOptions))
- .pipe(git.commit(commitMessage, commitOptions))
+ .pipe(git.commit(commitMessage, commitOptions), function () {})
.on('error', function (error) {
// canProceed = false; bug in git commit
})
diff --git a/tasks/admin/distributions/create.js b/tasks/admin/distributions/create.js
index 0714f001cb..4703c6e12f 100644
--- a/tasks/admin/distributions/create.js
+++ b/tasks/admin/distributions/create.js
@@ -19,7 +19,7 @@ const
// admin dependencies
flatten = require('gulp-flatten'),
jsonEditor = require('gulp-json-editor'),
- plumber = require('gulp-plumber'),
+ plumber = require('@fomantic/gulp-plumber'),
rename = require('gulp-rename'),
replace = require('gulp-replace'),
@@ -136,7 +136,7 @@ module.exports = function (callback) {
components,
releases
;
- themes = gulp.src('dist/themes/default/**/*', { base: 'dist/' })
+ themes = gulp.src('dist/themes/default/**/*', { base: 'dist/', encoding: false })
.pipe(gulp.dest(outputDirectory))
;
components = gulp.src('dist/components/*', { base: 'dist/' })
@@ -177,7 +177,7 @@ module.exports = function (callback) {
siteTheme = gulp.src('src/_site/**/*', { base: 'src/' })
.pipe(gulp.dest(outputDirectory))
;
- themes = gulp.src('src/themes/**/*', { base: 'src/' })
+ themes = gulp.src('src/themes/**/*', { base: 'src/', encoding: false })
.pipe(gulp.dest(outputDirectory))
;
diff --git a/tasks/admin/distributions/init.js b/tasks/admin/distributions/init.js
index ea3b11da5c..164258f301 100644
--- a/tasks/admin/distributions/init.js
+++ b/tasks/admin/distributions/init.js
@@ -17,9 +17,9 @@ const
fs = require('fs'),
path = require('path'),
del = require('del'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
- git = require('gulp-git'),
+ git = require('@fomantic/gulp-git'),
mkdirp = require('mkdirp'),
// admin files
diff --git a/tasks/admin/distributions/update.js b/tasks/admin/distributions/update.js
index 9137f05889..9670d1ef6c 100644
--- a/tasks/admin/distributions/update.js
+++ b/tasks/admin/distributions/update.js
@@ -16,9 +16,9 @@ const
// node dependencies
fs = require('fs'),
path = require('path'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
- git = require('gulp-git'),
+ git = require('@fomantic/gulp-git'),
// admin files
release = require('../../config/admin/release'),
@@ -78,7 +78,7 @@ module.exports = function (callback) {
? 'Updated distribution to version ' + version
: 'Updated files from main repo',
- gitOptions = { cwd: outputDirectory },
+ gitOptions = { cwd: outputDirectory, encoding: false },
commitOptions = { args: commitArgs, cwd: outputDirectory },
releaseOptions = { tag_name: version, owner: release.org, repo: repoName },
@@ -109,7 +109,7 @@ module.exports = function (callback) {
console.info('Committing ' + distribution + ' files', commitArgs);
gulp.src('./', gitOptions)
.pipe(git.add(gitOptions))
- .pipe(git.commit(commitMessage, commitOptions))
+ .pipe(git.commit(commitMessage, commitOptions), function () {})
.on('error', function (error) {
// canProceed = false; bug in git commit
})
diff --git a/tasks/build/assets.js b/tasks/build/assets.js
index 87c31134d6..c19a100cb8 100644
--- a/tasks/build/assets.js
+++ b/tasks/build/assets.js
@@ -20,7 +20,7 @@ const
;
function build(src, config) {
- return gulp.src(src, { base: config.paths.source.themes })
+ return gulp.src(src, { base: config.paths.source.themes, encoding: false })
.pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions)))
.pipe(gulp.dest(config.paths.output.themes))
.pipe(print(log.created))
diff --git a/tasks/build/css.js b/tasks/build/css.js
index 60def8cd77..3bb65ab6fc 100644
--- a/tasks/build/css.js
+++ b/tasks/build/css.js
@@ -6,20 +6,21 @@ const
gulp = require('gulp'),
// node dependencies
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
// gulp dependencies
autoprefixer = require('gulp-autoprefixer'),
chmod = require('gulp-chmod'),
- concatCSS = require('gulp-concat-css'),
- dedupe = require('gulp-dedupe'),
+ concatCSS = require('@fomantic/gulp-concat-css'),
+ dedupe = require('@fomantic/gulp-dedupe'),
flatten = require('gulp-flatten'),
gulpif = require('gulp-if'),
- header = require('gulp-header'),
+ header = require('@fomantic/gulp-header'),
less = require('gulp-less'),
minifyCSS = require('gulp-clean-css'),
normalize = require('normalize-path'),
- plumber = require('gulp-plumber'),
+ ordered = require('ordered-read-streams'),
+ plumber = require('@fomantic/gulp-plumber'),
print = require('gulp-print').default,
rename = require('gulp-rename'),
replace = require('gulp-replace'),
@@ -101,12 +102,20 @@ function pack(type, compress) {
concatenatedCSS = compress ? filenames.concatenatedMinifiedCSS : filenames.concatenatedCSS;
}
- let src = output.uncompressed + '/**/' + globs.components + ignoredGlobs;
- if (globs.components.indexOf('table') < 0 && globs.components.indexOf('tab') > 0) {
- src = [src, '!' + output.uncompressed + '/**/table.css'];
- }
+ let src = globs.components
+ .replace(/[{}]/g, '')
+ .split(',')
+ .map((c) => {
+ let srcSingle = output.uncompressed + '/**/' + c + ignoredGlobs;
+ if (c === 'tab' && globs.components.indexOf('table') < 0) {
+ srcSingle = [srcSingle, '!' + output.uncompressed + '/**/table.css'];
+ }
+
+ return gulp.src(srcSingle);
+ })
+ ;
- return gulp.src(src)
+ return ordered(src)
.pipe(plumber())
.pipe(dedupe())
.pipe(replace(assets.uncompressed, assets.packaged))
diff --git a/tasks/build/javascript.js b/tasks/build/javascript.js
index d7415a170a..047d4807e2 100644
--- a/tasks/build/javascript.js
+++ b/tasks/build/javascript.js
@@ -6,17 +6,18 @@ const
gulp = require('gulp'),
// node dependencies
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
// gulp dependencies
chmod = require('gulp-chmod'),
concat = require('gulp-concat'),
- dedupe = require('gulp-dedupe'),
+ dedupe = require('@fomantic/gulp-dedupe'),
flatten = require('gulp-flatten'),
gulpif = require('gulp-if'),
- header = require('gulp-header'),
+ header = require('@fomantic/gulp-header'),
normalize = require('normalize-path'),
- plumber = require('gulp-plumber'),
+ ordered = require('ordered-read-streams'),
+ plumber = require('@fomantic/gulp-plumber'),
print = require('gulp-print').default,
rename = require('gulp-rename'),
replace = require('gulp-replace'),
@@ -72,7 +73,13 @@ function pack(type, compress) {
const output = type === 'docs' ? docsConfig.paths.output : config.paths.output;
const concatenatedJS = compress ? filenames.concatenatedMinifiedJS : filenames.concatenatedJS;
- return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js')
+ let src = globs.components
+ .replace(/[{}]/g, '')
+ .split(',')
+ .map((c) => gulp.src(output.uncompressed + '/**/' + c + globs.ignored + '.js'))
+ ;
+
+ return ordered(src)
.pipe(plumber())
.pipe(dedupe())
.pipe(replace(assets.uncompressed, assets.packaged))
diff --git a/tasks/check-install.js b/tasks/check-install.js
index 7df43f819d..177ad5f385 100644
--- a/tasks/check-install.js
+++ b/tasks/check-install.js
@@ -5,7 +5,7 @@
const
// node dependencies
gulp = require('gulp'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
isSetup = require('./config/project/install').isSetup,
install = require('./install'),
diff --git a/tasks/config/defaults.js b/tasks/config/defaults.js
index b4af2b792c..41844c7baf 100644
--- a/tasks/config/defaults.js
+++ b/tasks/config/defaults.js
@@ -115,6 +115,8 @@ module.exports = {
// whether to load admin tasks
admin: false,
+ stripHeaders: false,
+
header: {},
// globs used for matching file patterns
diff --git a/tasks/config/tasks.js b/tasks/config/tasks.js
index f69028a2f1..561b7d197e 100644
--- a/tasks/config/tasks.js
+++ b/tasks/config/tasks.js
@@ -1,6 +1,6 @@
const
browserslist = require('browserslist'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
config = require('./user'),
release = require('./project/release')
;
diff --git a/tasks/docs/build.js b/tasks/docs/build.js
index afbc65ce06..8b43710bc0 100644
--- a/tasks/docs/build.js
+++ b/tasks/docs/build.js
@@ -7,7 +7,7 @@ const
extend = require('extend'),
// node dependencies
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
map = require('map-stream'),
@@ -71,7 +71,7 @@ module.exports = function (callback) {
// copy src/ to server
console.info('Copying examples');
- return gulp.src('examples/**/*.*')
+ return gulp.src('examples/**/*.*', { encoding: false })
.pipe(gulp.dest(output.examples))
.pipe(print(log.created))
;
@@ -85,7 +85,7 @@ module.exports = function (callback) {
// copy src/ to server
console.info('Copying LESS source');
- return gulp.src('src/**/*.*')
+ return gulp.src('src/**/*.*', { encoding: false })
.pipe(gulp.dest(output.less))
.pipe(print(log.created))
;
diff --git a/tasks/docs/metadata.js b/tasks/docs/metadata.js
index b8b2cd205f..8d803f52a2 100644
--- a/tasks/docs/metadata.js
+++ b/tasks/docs/metadata.js
@@ -5,7 +5,7 @@
const
// node dependencies
fs = require('fs'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
YAML = require('yamljs')
;
diff --git a/tasks/docs/serve.js b/tasks/docs/serve.js
index 4757d36c94..9882c5ef4b 100644
--- a/tasks/docs/serve.js
+++ b/tasks/docs/serve.js
@@ -6,7 +6,7 @@ const
extend = require('extend'),
// node dependencies
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
// gulp dependencies
@@ -49,6 +49,7 @@ module.exports = function () {
return gulp.src(path, {
base: 'src/',
+ encoding: false,
})
.pipe(gulp.dest(config.paths.output.less))
.pipe(print(log.created))
@@ -70,6 +71,7 @@ module.exports = function () {
return gulp.src(path, {
base: 'examples/',
+ encoding: false,
})
.pipe(gulp.dest(config.paths.output.examples))
.pipe(print(log.created))
diff --git a/tasks/install.js b/tasks/install.js
index 93d09beb97..1f67e1ade5 100644
--- a/tasks/install.js
+++ b/tasks/install.js
@@ -18,14 +18,14 @@ const
path = require('path'),
mkdirp = require('mkdirp'),
extend = require('extend'),
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
// gulp dependencies
chmod = require('gulp-chmod'),
del = require('del'),
jsonEditor = require('gulp-json-editor'),
- plumber = require('gulp-plumber'),
+ plumber = require('@fomantic/gulp-plumber'),
inquirer = require('inquirer'),
rename = require('gulp-rename'),
replace = require('gulp-replace'),
diff --git a/tasks/watch.js b/tasks/watch.js
index 0648ab464b..d1d9c1b0aa 100644
--- a/tasks/watch.js
+++ b/tasks/watch.js
@@ -4,7 +4,7 @@
const
// node dependencies
- console = require('better-console'),
+ console = require('@fomantic/better-console'),
gulp = require('gulp'),
// user config
diff --git a/types/fomantic-ui-accordion.d.ts b/types/fomantic-ui-accordion.d.ts
index 5db11c9a62..939e32298a 100644
--- a/types/fomantic-ui-accordion.d.ts
+++ b/types/fomantic-ui-accordion.d.ts
@@ -28,7 +28,7 @@ declare namespace FomanticUI {
(behavior: 'toggle', index: number): JQuery;
(behavior: 'destroy'): JQuery;
- (behavior: 'setting', name: K, value?: undefined, ): Partial>;
+ (behavior: 'setting', name: K, value?: undefined,): Partial>;
(behavior: 'setting', name: K, value: AccordionSettings[K]): JQuery;
(behavior: 'setting', value: Partial>): JQuery;
(settings?: Partial>): JQuery;
diff --git a/types/fomantic-ui-api.d.ts b/types/fomantic-ui-api.d.ts
index 37171236ab..1a8ee6de73 100644
--- a/types/fomantic-ui-api.d.ts
+++ b/types/fomantic-ui-api.d.ts
@@ -107,7 +107,7 @@ declare namespace FomanticUI {
*/
(behavior: 'destroy'): JQuery;
- (behavior: 'setting', name: K, value?: undefined, ): Partial> | Partial>;
+ (behavior: 'setting', name: K, value?: undefined,): Partial> | Partial>;
(behavior: 'setting', name: K, value: APISettings[K]): JQuery;
(behavior: 'setting', value: Partial> | Partial>): JQuery;
(settings?: Partial> | Partial>): JQuery;
diff --git a/types/fomantic-ui-calendar.d.ts b/types/fomantic-ui-calendar.d.ts
index 9eaa351a6e..594c97572f 100644
--- a/types/fomantic-ui-calendar.d.ts
+++ b/types/fomantic-ui-calendar.d.ts
@@ -327,7 +327,23 @@ declare namespace FomanticUI {
formatter: Calendar.FormatterSettings;
- // endregion
+ /**
+ * Customizable methods to parse a given date
+ * Has to return a date object
+ */
+ parser: {
+ date: (text: string, settings: CalendarSettings) => Date;
+ }
+
+ /**
+ * DOM selector where the calendar popup should be attached to. By default (false) the calendar popup
+ * is attached as direct child of the triggering element.
+ *
+ * @default false
+ */
+ context: string | JQuery | false
+
+ // end region
// region Callbacks
@@ -522,7 +538,7 @@ declare namespace FomanticUI {
interface Formatters {
/**
- *
+ *
*/
yearHeader(date: Date, settings?: CalendarSettings): string;
@@ -580,14 +596,14 @@ declare namespace FomanticUI {
* @default 'YYYY'
*/
year: string;
-
+
/**
- *
+ *
*/
today(settings: CalendarSettings): string;
/**
- *
+ *
*/
cell(cell: string, date: Date, cellOptions: any): any
}
diff --git a/types/fomantic-ui-dimmer.d.ts b/types/fomantic-ui-dimmer.d.ts
index c42a6a5be2..db4b0cb3eb 100644
--- a/types/fomantic-ui-dimmer.d.ts
+++ b/types/fomantic-ui-dimmer.d.ts
@@ -113,7 +113,7 @@ declare namespace FomanticUI {
(behavior: 'set disabled'): JQuery;
(behavior: 'destroy'): JQuery;
- (behavior: 'setting', name: K, value?: undefined, ): Partial>;
+ (behavior: 'setting', name: K, value?: undefined,): Partial>;
(behavior: 'setting', name: K, value: DimmerSettings[K]): JQuery;
(behavior: 'setting', value: Partial>): JQuery;
(settings?: Partial>): JQuery;
diff --git a/types/fomantic-ui-dropdown.d.ts b/types/fomantic-ui-dropdown.d.ts
index 7df6b05451..0dca229d79 100644
--- a/types/fomantic-ui-dropdown.d.ts
+++ b/types/fomantic-ui-dropdown.d.ts
@@ -29,14 +29,14 @@ declare namespace FomanticUI {
* If a function is provided to callback, it's called after the dropdown-menu is shown.
* Set preventFocus to true if you don't want the dropdown field to focus after the menu is shown
*/
- (behavior: 'show', callback?: Function, preventFocus?: boolean): void;
+ (behavior: 'show', callback?: () => void, preventFocus?: boolean): void;
/**
* Hides dropdown.
* If a function is provided to callback, it's called after the dropdown-menu is hidden.
* Set preventBlur to true if you don't want the dropdown field to blur after the menu is hidden
*/
- (behavior: 'hide', callback?: Function, preventBlur?: boolean): void;
+ (behavior: 'hide', callback?: () => void, preventBlur?: boolean): void;
/**
* Clears dropdown of selection.
@@ -210,7 +210,7 @@ declare namespace FomanticUI {
(behavior: 'get placeholder text'): string;
(behavior: 'destroy'): JQuery;
- (behavior: 'setting', name: K, value?: undefined, ): Partial>;
+ (behavior: 'setting', name: K, value?: undefined,): Partial>;
(behavior: 'setting', name: K, value: DropdownSettings[K]): JQuery;
(behavior: 'setting', value: Partial>): JQuery;
(settings?: Partial>): JQuery;
@@ -345,7 +345,7 @@ declare namespace FomanticUI {
*
* @default 'auto'
*/
- placeholder: 'auto' | String | false;
+ placeholder: 'auto' | string | false;
/**
* Whether HTML included in dropdown values should be preserved.
@@ -358,7 +358,7 @@ declare namespace FomanticUI {
* Whether to sort values when creating a dropdown automatically from a select element.
* @default false
*/
- sortSelect: boolean | 'natural' | Function;
+ sortSelect: boolean | 'natural' | ((a: any, b: any) => number);
/**
* Whether search selection will force currently selected choice when element is blurred.
@@ -385,6 +385,12 @@ declare namespace FomanticUI {
*/
ignoreSearchCase: boolean;
+ /**
+ * Whether search result should highlight matching strings
+ * @default false
+ */
+ highlightMatches: boolean;
+
/**
* If disabled user additions will appear in the dropdown's menu using a specially formatted selection item formatted by 'templates.addition'.
* @default true
@@ -447,7 +453,7 @@ declare namespace FomanticUI {
* Alternatively you can provide an 'object' to set individual values for hide/show transitions as well as hide/show duration.
* @default 'auto'
*/
- transition: boolean | object;
+ transition: string | Dropdown.TransitionSettings;
/**
* Duration of animation events.
@@ -462,13 +468,6 @@ declare namespace FomanticUI {
*/
displayType: false | string;
- /**
- * Maximum glyph width, used to calculate search size.
- * This is usually size of a "W" in your font in 'em'.
- * @default 1.037
- */
- glyphWidth: number;
-
/**
* Whether option headers should have an additional divider line underneath when converted from '