mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 07:35:55 +08:00
Again replaced some jQuery to native and cleaned up normalize.css without IE
This commit is contained in:
parent
4977494f6b
commit
645831368d
22
README.md
22
README.md
|
@ -82,29 +82,29 @@ Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill
|
|||
|
||||
|js/* |1.14.0 |native |
|
||||
|----------- |--------: |--------: |
|
||||
|admin.js |2.130.942 | 971.538 |
|
||||
|app.js |4.184.455 |2.635.592 |
|
||||
|admin.js |2.130.942 | 967.065 |
|
||||
|app.js |4.184.455 |2.630.967 |
|
||||
|boot.js | 671.522 | 43.824 |
|
||||
|libs.js | 647.614 | 315.749 |
|
||||
|libs.js | 647.614 | 315.759 |
|
||||
|polyfills.js | 325.834 | 0 |
|
||||
|TOTAL |7.960.367 |3.966.789 |
|
||||
|TOTAL |7.960.367 |3.957.615 |
|
||||
|
||||
|js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli |
|
||||
|--------------- |--------: |--------: |--------: |--------: |--------: |
|
||||
|admin.min.js | 252.147 | 132.110 | 73.657 | 38.198 | 32.764 |
|
||||
|app.min.js | 511.202 | 355.996 |140.462 | 93.741 | 75.209 |
|
||||
|admin.min.js | 252.147 | 131.409 | 73.657 | 38.016 | 32.576 |
|
||||
|app.min.js | 511.202 | 355.295 |140.462 | 93.568 | 75.036 |
|
||||
|boot.min.js | 66.007 | 5.560 | 22.567 | 2.341 | 2.004 |
|
||||
|libs.min.js | 572.545 | 299.213 |176.720 | 92.512 | 81.723 |
|
||||
|libs.min.js | 572.545 | 299.223 |176.720 | 92.519 | 81.725 |
|
||||
|polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 |
|
||||
|TOTAL |1.434.353 | 792.879 |424.718 |226.792 |191.700 |
|
||||
|TOTAL |1.434.353 | 791.487 |424.718 |226.444 |191.341 |
|
||||
|
||||
641.474 bytes (197.926 gzip) is not much, but it feels faster.
|
||||
641.922 bytes (197.980 gzip) is not much, but it feels faster.
|
||||
|
||||
|
||||
|css/* |1.14.0 |native |
|
||||
|-------------- |--------: |--------: |
|
||||
|app.css | 340.334 | 266.793 |
|
||||
|app.min.css | 274.791 | 211.620 |
|
||||
|app.css | 340.334 | 265.864 |
|
||||
|app.min.css | 274.791 | 211.468 |
|
||||
|
||||
|
||||
### PHP73 branch
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import { pInt } from 'Common/Utils';
|
||||
import { SaveSettingsStep } from 'Common/Enums';
|
||||
import { AbstractComponent, componentExportHelper } from 'Component/Abstract';
|
||||
|
||||
|
@ -9,68 +8,32 @@ class SaveTriggerComponent extends AbstractComponent {
|
|||
constructor(params) {
|
||||
super();
|
||||
|
||||
this.element = jQuery(params.element) || null;
|
||||
const el = params.element;
|
||||
this.element = el || null;
|
||||
this.value = params.value && params.value.subscribe ? params.value : null;
|
||||
|
||||
if (this.element) {
|
||||
if (el) {
|
||||
if (this.value) {
|
||||
this.element.css('display', 'inline-block');
|
||||
el.style.display = 'inline-block';
|
||||
|
||||
if (params.verticalAlign) {
|
||||
this.element.css('vertical-align', params.verticalAlign);
|
||||
el.style.verticalAlign = params.verticalAlign;
|
||||
}
|
||||
|
||||
this.setState(this.value());
|
||||
|
||||
this.disposable.push(this.value.subscribe(this.setState, this));
|
||||
} else {
|
||||
this.element.hide();
|
||||
el.style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setState(value) {
|
||||
switch (pInt(value)) {
|
||||
case SaveSettingsStep.TrueResult:
|
||||
this.element
|
||||
.find('.animated,.error')
|
||||
.hide()
|
||||
.removeClass('visible')
|
||||
.end()
|
||||
.find('.success')
|
||||
.show()
|
||||
.addClass('visible');
|
||||
break;
|
||||
case SaveSettingsStep.FalseResult:
|
||||
this.element
|
||||
.find('.animated,.success')
|
||||
.hide()
|
||||
.removeClass('visible')
|
||||
.end()
|
||||
.find('.error')
|
||||
.show()
|
||||
.addClass('visible');
|
||||
break;
|
||||
case SaveSettingsStep.Animate:
|
||||
this.element
|
||||
.find('.error,.success')
|
||||
.hide()
|
||||
.removeClass('visible')
|
||||
.end()
|
||||
.find('.animated')
|
||||
.show()
|
||||
.addClass('visible');
|
||||
break;
|
||||
case SaveSettingsStep.Idle:
|
||||
default:
|
||||
this.element
|
||||
.find('.animated')
|
||||
.hide()
|
||||
.end()
|
||||
.find('.error,.success')
|
||||
.removeClass('visible');
|
||||
break;
|
||||
}
|
||||
value = parseInt(value,10);
|
||||
this.element.querySelector('.animated').hidden = value !== SaveSettingsStep.Animate;
|
||||
this.element.querySelector('.success').hidden = value !== SaveSettingsStep.TrueResult;
|
||||
this.element.querySelector('.error').hidden = value !== SaveSettingsStep.FalseResult;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,24 +10,19 @@ class ScriptComponent extends AbstractComponent {
|
|||
if (
|
||||
params.component &&
|
||||
params.component.templateNodes &&
|
||||
params.element &&
|
||||
params.element[0] &&
|
||||
params.element[0].outerHTML
|
||||
params.element
|
||||
) {
|
||||
let script = params.element[0].outerHTML;
|
||||
script = !script ? '' : script.replace(/<x-script/i, '<script').replace(/<b><\/b><\/x-script>/i, '</script>');
|
||||
let el = params.element, script = el.outerHTML;
|
||||
script = script ? script.replace(/<x-script/i, '<script').replace(/<b><\/b><\/x-script>/i, '</script>') : '';
|
||||
|
||||
if (script) {
|
||||
params.element.text('');
|
||||
params.element.replaceWith(
|
||||
jQuery(script).text(
|
||||
params.component.templateNodes[0] && params.component.templateNodes[0].nodeValue
|
||||
? params.component.templateNodes[0].nodeValue
|
||||
: ''
|
||||
)
|
||||
const koNodes = params.component.templateNodes[0];
|
||||
el.textContent = '';
|
||||
el.replaceWith(
|
||||
Element.fromHTML(script).textContent = koNodes && koNodes.nodeValue ? koNodes.nodeValue : ''
|
||||
);
|
||||
} else {
|
||||
params.element.remove();
|
||||
el.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
107
dev/External/ko.js
vendored
107
dev/External/ko.js
vendored
|
@ -341,85 +341,30 @@ ko.bindingHandlers.droppable = {
|
|||
|
||||
ko.bindingHandlers.saveTrigger = {
|
||||
init: (element) => {
|
||||
const $el = $(element);
|
||||
element.saveTriggerType = element.matches('input[type=text],input[type=email],input[type=password],select,textarea')
|
||||
? 'input' : 'custom';
|
||||
|
||||
$el.data(
|
||||
'save-trigger-type',
|
||||
element.matches('input[type=text],input[type=email],input[type=password],select,textarea') ? 'input' : 'custom'
|
||||
);
|
||||
|
||||
if ('custom' === $el.data('save-trigger-type')) {
|
||||
$el
|
||||
.append(
|
||||
' ' +
|
||||
'<i class="icon-spinner animated"></i>' +
|
||||
'<i class="icon-remove error"></i>' +
|
||||
'<i class="icon-ok success"></i>'
|
||||
)
|
||||
.addClass('settings-saved-trigger');
|
||||
if ('custom' === element.saveTriggerType) {
|
||||
element.append(
|
||||
' ',
|
||||
Element.fromHTML('<i class="icon-spinner animated"></i>'),
|
||||
Element.fromHTML('<i class="icon-remove error"></i>'),
|
||||
Element.fromHTML('<i class="icon-ok success"></i>')
|
||||
);
|
||||
element.classList.add('settings-saved-trigger');
|
||||
} else {
|
||||
$el.addClass('settings-saved-trigger-input');
|
||||
element.classList.add('settings-saved-trigger-input');
|
||||
}
|
||||
},
|
||||
update: (element, fValueAccessor) => {
|
||||
const value = ko.unwrap(fValueAccessor()),
|
||||
$el = $(element);
|
||||
|
||||
if ('custom' === $el.data('save-trigger-type')) {
|
||||
switch (value.toString()) {
|
||||
case '1':
|
||||
$el
|
||||
.find('.animated,.error')
|
||||
.hide()
|
||||
.removeClass('visible')
|
||||
.end()
|
||||
.find('.success')
|
||||
.show()
|
||||
.addClass('visible');
|
||||
break;
|
||||
case '0':
|
||||
$el
|
||||
.find('.animated,.success')
|
||||
.hide()
|
||||
.removeClass('visible')
|
||||
.end()
|
||||
.find('.error')
|
||||
.show()
|
||||
.addClass('visible');
|
||||
break;
|
||||
case '-2':
|
||||
$el
|
||||
.find('.error,.success')
|
||||
.hide()
|
||||
.removeClass('visible')
|
||||
.end()
|
||||
.find('.animated')
|
||||
.show()
|
||||
.addClass('visible');
|
||||
break;
|
||||
default:
|
||||
$el
|
||||
.find('.animated')
|
||||
.hide()
|
||||
.end()
|
||||
.find('.error,.success')
|
||||
.removeClass('visible');
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (value.toString()) {
|
||||
case '1':
|
||||
$el.addClass('success').removeClass('error');
|
||||
break;
|
||||
case '0':
|
||||
$el.addClass('error').removeClass('success');
|
||||
break;
|
||||
case '-2':
|
||||
break;
|
||||
default:
|
||||
$el.removeClass('error success');
|
||||
break;
|
||||
}
|
||||
const value = parseInt(ko.unwrap(fValueAccessor()),10);
|
||||
if ('custom' === element.saveTriggerType) {
|
||||
element.querySelector('.animated').hidden = value !== SaveSettingsStep.Animate;
|
||||
element.querySelector('.success').hidden = value !== SaveSettingsStep.TrueResult;
|
||||
element.querySelector('.error').hidden = value !== SaveSettingsStep.FalseResult;
|
||||
} else if (value !== SaveSettingsStep.Animate) {
|
||||
element.classList.toggle('success', value === SaveSettingsStep.TrueResult);
|
||||
element.classList.toggle('error', value === SaveSettingsStep.FalseResult);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -457,7 +402,7 @@ ko.bindingHandlers.emailsTags = {
|
|||
item => (item.toLine ? [item.toLine(false), item] : [item, null])
|
||||
),
|
||||
change: event => {
|
||||
$el.data('EmailsTagsValue', event.target.value);
|
||||
element.EmailsTagsValue = event.target.value;
|
||||
fValue(event.target.value);
|
||||
}
|
||||
});
|
||||
|
@ -469,14 +414,12 @@ ko.bindingHandlers.emailsTags = {
|
|||
}
|
||||
},
|
||||
update: (element, fValueAccessor) => {
|
||||
const $oEl = $(element),
|
||||
fValue = fValueAccessor(),
|
||||
value = ko.unwrap(fValue);
|
||||
const value = ko.unwrap(fValueAccessor());
|
||||
|
||||
if ($oEl.data('EmailsTagsValue') !== value) {
|
||||
$oEl.val(value);
|
||||
$oEl.data('EmailsTagsValue', value);
|
||||
$oEl.inputosaurus('refresh');
|
||||
if (element.EmailsTagsValue !== value) {
|
||||
element.value = value;
|
||||
element.EmailsTagsValue = value;
|
||||
$(element).inputosaurus('refresh');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -129,28 +129,34 @@
|
|||
.settings-saved-trigger {
|
||||
|
||||
display: inline-block;
|
||||
height: 17px;
|
||||
line-height: 17px;
|
||||
font-size: 16px;
|
||||
position: relative;
|
||||
|
||||
.animated {
|
||||
color: green;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.success {
|
||||
color: green;
|
||||
transition: opacity 0.5s linear;
|
||||
opacity: 0;
|
||||
color: #080;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: red;
|
||||
transition: opacity 0.5s linear;
|
||||
opacity: 0;
|
||||
color: #F00;
|
||||
}
|
||||
|
||||
.visible {
|
||||
i {
|
||||
transition: opacity 2s linear;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
i:not([hidden]) {
|
||||
opacity: 1;
|
||||
}
|
||||
i[hidden] {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.settings-saved-trigger-input {
|
||||
|
|
|
@ -89,7 +89,6 @@
|
|||
"knockout-sortable": "1.2.0",
|
||||
"moment": "2.24.0",
|
||||
"node-fs": "0.1.7",
|
||||
"normalize.css": "8.0.1",
|
||||
"openpgp": "2.6.2",
|
||||
"prettier": "1.19.1",
|
||||
"raw-loader": "4.0.0",
|
||||
|
|
|
@ -50,7 +50,7 @@ config.paths.css = {
|
|||
main: {
|
||||
name: 'app.css',
|
||||
src: [
|
||||
'node_modules/normalize.css/normalize.css',
|
||||
'vendors/normalize.css/normalize.css',
|
||||
'vendors/jquery-ui/css/smoothness/jquery-ui-1.12.1.custom.css',
|
||||
'vendors/fontastic/styles.css',
|
||||
'vendors/inputosaurus/inputosaurus.css',
|
||||
|
|
150
vendors/bootstrap/less/sprites.less
vendored
150
vendors/bootstrap/less/sprites.less
vendored
|
@ -19,7 +19,6 @@
|
|||
display: inline-block;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
.ie7-restore-right-whitespace();
|
||||
line-height: 14px;
|
||||
vertical-align: text-top;
|
||||
background-image: url("@{iconSpritePath}");
|
||||
|
@ -38,152 +37,3 @@
|
|||
.dropdown-menu > .active > a > [class*=" icon-"] {
|
||||
background-image: url("@{iconWhiteSpritePath}");
|
||||
}
|
||||
|
||||
/*
|
||||
.icon-glass { background-position: 0 0; }
|
||||
.icon-music { background-position: -24px 0; }
|
||||
.icon-search { background-position: -48px 0; }
|
||||
.icon-envelope { background-position: -72px 0; }
|
||||
.icon-heart { background-position: -96px 0; }
|
||||
.icon-star { background-position: -120px 0; }
|
||||
.icon-star-empty { background-position: -144px 0; }
|
||||
.icon-user { background-position: -168px 0; }
|
||||
.icon-film { background-position: -192px 0; }
|
||||
.icon-th-large { background-position: -216px 0; }
|
||||
.icon-th { background-position: -240px 0; }
|
||||
.icon-th-list { background-position: -264px 0; }
|
||||
.icon-ok { background-position: -288px 0; }
|
||||
.icon-remove { background-position: -312px 0; }
|
||||
.icon-zoom-in { background-position: -336px 0; }
|
||||
.icon-zoom-out { background-position: -360px 0; }
|
||||
.icon-off { background-position: -384px 0; }
|
||||
.icon-signal { background-position: -408px 0; }
|
||||
.icon-cog { background-position: -432px 0; }
|
||||
.icon-trash { background-position: -456px 0; }
|
||||
|
||||
.icon-home { background-position: 0 -24px; }
|
||||
.icon-file { background-position: -24px -24px; }
|
||||
.icon-time { background-position: -48px -24px; }
|
||||
.icon-road { background-position: -72px -24px; }
|
||||
.icon-download-alt { background-position: -96px -24px; }
|
||||
.icon-download { background-position: -120px -24px; }
|
||||
.icon-upload { background-position: -144px -24px; }
|
||||
.icon-inbox { background-position: -168px -24px; }
|
||||
.icon-play-circle { background-position: -192px -24px; }
|
||||
.icon-repeat { background-position: -216px -24px; }
|
||||
.icon-refresh { background-position: -240px -24px; }
|
||||
.icon-list-alt { background-position: -264px -24px; }
|
||||
.icon-lock { background-position: -287px -24px; } // 1px off
|
||||
.icon-flag { background-position: -312px -24px; }
|
||||
.icon-headphones { background-position: -336px -24px; }
|
||||
.icon-volume-off { background-position: -360px -24px; }
|
||||
.icon-volume-down { background-position: -384px -24px; }
|
||||
.icon-volume-up { background-position: -408px -24px; }
|
||||
.icon-qrcode { background-position: -432px -24px; }
|
||||
.icon-barcode { background-position: -456px -24px; }
|
||||
|
||||
.icon-tag { background-position: 0 -48px; }
|
||||
.icon-tags { background-position: -25px -48px; } // 1px off
|
||||
.icon-book { background-position: -48px -48px; }
|
||||
.icon-bookmark { background-position: -72px -48px; }
|
||||
.icon-print { background-position: -96px -48px; }
|
||||
.icon-camera { background-position: -120px -48px; }
|
||||
.icon-font { background-position: -144px -48px; }
|
||||
.icon-bold { background-position: -167px -48px; } // 1px off
|
||||
.icon-italic { background-position: -192px -48px; }
|
||||
.icon-text-height { background-position: -216px -48px; }
|
||||
.icon-text-width { background-position: -240px -48px; }
|
||||
.icon-align-left { background-position: -264px -48px; }
|
||||
.icon-align-center { background-position: -288px -48px; }
|
||||
.icon-align-right { background-position: -312px -48px; }
|
||||
.icon-align-justify { background-position: -336px -48px; }
|
||||
.icon-list { background-position: -360px -48px; }
|
||||
.icon-indent-left { background-position: -384px -48px; }
|
||||
.icon-indent-right { background-position: -408px -48px; }
|
||||
.icon-facetime-video { background-position: -432px -48px; }
|
||||
.icon-picture { background-position: -456px -48px; }
|
||||
|
||||
.icon-pencil { background-position: 0 -72px; }
|
||||
.icon-map-marker { background-position: -24px -72px; }
|
||||
.icon-adjust { background-position: -48px -72px; }
|
||||
.icon-tint { background-position: -72px -72px; }
|
||||
.icon-edit { background-position: -96px -72px; }
|
||||
.icon-share { background-position: -120px -72px; }
|
||||
.icon-check { background-position: -144px -72px; }
|
||||
.icon-move { background-position: -168px -72px; }
|
||||
.icon-step-backward { background-position: -192px -72px; }
|
||||
.icon-fast-backward { background-position: -216px -72px; }
|
||||
.icon-backward { background-position: -240px -72px; }
|
||||
.icon-play { background-position: -264px -72px; }
|
||||
.icon-pause { background-position: -288px -72px; }
|
||||
.icon-stop { background-position: -312px -72px; }
|
||||
.icon-forward { background-position: -336px -72px; }
|
||||
.icon-fast-forward { background-position: -360px -72px; }
|
||||
.icon-step-forward { background-position: -384px -72px; }
|
||||
.icon-eject { background-position: -408px -72px; }
|
||||
.icon-chevron-left { background-position: -432px -72px; }
|
||||
.icon-chevron-right { background-position: -456px -72px; }
|
||||
|
||||
.icon-plus-sign { background-position: 0 -96px; }
|
||||
.icon-minus-sign { background-position: -24px -96px; }
|
||||
.icon-remove-sign { background-position: -48px -96px; }
|
||||
.icon-ok-sign { background-position: -72px -96px; }
|
||||
.icon-question-sign { background-position: -96px -96px; }
|
||||
.icon-info-sign { background-position: -120px -96px; }
|
||||
.icon-screenshot { background-position: -144px -96px; }
|
||||
.icon-remove-circle { background-position: -168px -96px; }
|
||||
.icon-ok-circle { background-position: -192px -96px; }
|
||||
.icon-ban-circle { background-position: -216px -96px; }
|
||||
.icon-arrow-left { background-position: -240px -96px; }
|
||||
.icon-arrow-right { background-position: -264px -96px; }
|
||||
.icon-arrow-up { background-position: -289px -96px; } // 1px off
|
||||
.icon-arrow-down { background-position: -312px -96px; }
|
||||
.icon-share-alt { background-position: -336px -96px; }
|
||||
.icon-resize-full { background-position: -360px -96px; }
|
||||
.icon-resize-small { background-position: -384px -96px; }
|
||||
.icon-plus { background-position: -408px -96px; }
|
||||
.icon-minus { background-position: -433px -96px; }
|
||||
.icon-asterisk { background-position: -456px -96px; }
|
||||
|
||||
.icon-exclamation-sign { background-position: 0 -120px; }
|
||||
.icon-gift { background-position: -24px -120px; }
|
||||
.icon-leaf { background-position: -48px -120px; }
|
||||
.icon-fire { background-position: -72px -120px; }
|
||||
.icon-eye-open { background-position: -96px -120px; }
|
||||
.icon-eye-close { background-position: -120px -120px; }
|
||||
.icon-warning-sign { background-position: -144px -120px; }
|
||||
.icon-plane { background-position: -168px -120px; }
|
||||
.icon-calendar { background-position: -192px -120px; }
|
||||
.icon-random { background-position: -216px -120px; width: 16px; }
|
||||
.icon-comment { background-position: -240px -120px; }
|
||||
.icon-magnet { background-position: -264px -120px; }
|
||||
.icon-chevron-up { background-position: -288px -120px; }
|
||||
.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
|
||||
.icon-retweet { background-position: -336px -120px; }
|
||||
.icon-shopping-cart { background-position: -360px -120px; }
|
||||
.icon-folder-close { background-position: -384px -120px; }
|
||||
.icon-folder-open { background-position: -408px -120px; width: 16px; }
|
||||
.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
|
||||
.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
|
||||
|
||||
.icon-hdd { background-position: 0 -144px; }
|
||||
.icon-bullhorn { background-position: -24px -144px; }
|
||||
.icon-bell { background-position: -48px -144px; }
|
||||
.icon-certificate { background-position: -72px -144px; }
|
||||
.icon-thumbs-up { background-position: -96px -144px; }
|
||||
.icon-thumbs-down { background-position: -120px -144px; }
|
||||
.icon-hand-right { background-position: -144px -144px; }
|
||||
.icon-hand-left { background-position: -168px -144px; }
|
||||
.icon-hand-up { background-position: -192px -144px; }
|
||||
.icon-hand-down { background-position: -216px -144px; }
|
||||
.icon-circle-arrow-right { background-position: -240px -144px; }
|
||||
.icon-circle-arrow-left { background-position: -264px -144px; }
|
||||
.icon-circle-arrow-up { background-position: -288px -144px; }
|
||||
.icon-circle-arrow-down { background-position: -312px -144px; }
|
||||
.icon-globe { background-position: -336px -144px; }
|
||||
.icon-wrench { background-position: -360px -144px; }
|
||||
.icon-tasks { background-position: -384px -144px; }
|
||||
.icon-filter { background-position: -408px -144px; }
|
||||
.icon-briefcase { background-position: -432px -144px; }
|
||||
.icon-fullscreen { background-position: -456px -144px; }
|
||||
*/
|
175
vendors/normalize.css/CHANGELOG.md
vendored
Normal file
175
vendors/normalize.css/CHANGELOG.md
vendored
Normal file
|
@ -0,0 +1,175 @@
|
|||
# Changes to normalize.css
|
||||
|
||||
### 8.0.1 (November 4, 2018)
|
||||
|
||||
* Fix regression in IE rendering of `main` element.
|
||||
|
||||
### 8.0.0 (February 2, 2018)
|
||||
|
||||
* Remove support for older browsers Android 4, lte IE 9, lte Safari 7.
|
||||
* Don't remove search input cancel button in Chrome/Safari.
|
||||
* Form inputs inherit `font-family`.
|
||||
* Fix text decoration in Safari 8+.
|
||||
|
||||
### 7.0.0 (May 2, 2017)
|
||||
|
||||
* Revert changes in `body` and form elements styles introduced by v6
|
||||
|
||||
### 6.0.0 (March 26, 2017)
|
||||
|
||||
* Remove all opinionated rules
|
||||
* Correct document heading comment
|
||||
* Update `abbr[title]` support
|
||||
|
||||
### 5.0.0 (October 3, 2016)
|
||||
|
||||
* Add normalized sections not already present from
|
||||
https://html.spec.whatwg.org/multipage/.
|
||||
* Move unsorted rules into their respective sections.
|
||||
* Update the `summary` style in all browsers.
|
||||
* Remove `::placeholder` styles due to a bug in Edge.
|
||||
* More explicitly define font resets on form controls.
|
||||
* Remove the `optgroup` normalization needed by the previous font reset.
|
||||
* Update text-size-adjust documentation
for IE on Windows Phone
|
||||
* Update OS X reference to macOS
|
||||
* Update the semver strategy.
|
||||
|
||||
### 4.2.0 (June 30, 2016)
|
||||
|
||||
* Correct the `line-height` in all browsers.
|
||||
* Restore `optgroup` font inheritance.
|
||||
* Update normalize.css heading.
|
||||
|
||||
### 4.1.1 (April 12, 2016)
|
||||
|
||||
* Update normalize.css heading.
|
||||
|
||||
### 4.1.0 (April 11, 2016)
|
||||
|
||||
* Normalize placeholders in Chrome, Edge, and Safari.
|
||||
* Normalize `text-decoration-skip` property in Safari.
|
||||
* Normalize file select buttons.
|
||||
* Normalize search input outlines in Safari.
|
||||
* Limit Firefox focus normalizations to buttons.
|
||||
* Restore `main` to package.json.
|
||||
* Restore proper overflow to certain `select` elements.
|
||||
* Remove opinionated cursor styles on buttons.
|
||||
* Update stylelint configuration.
|
||||
* Update tests.
|
||||
|
||||
### 4.0.0 (March 19, 2016)
|
||||
|
||||
* Add the correct font weight for `b` and `strong` in Chrome, Edge, and Safari.
|
||||
* Correct inconsistent `overflow` for `hr` in Edge and IE.
|
||||
* Correct inconsistent `box-sizing` for `hr` in Firefox.
|
||||
* Correct inconsistent `text-decoration` and `border-bottom` for `abbr[title]`
|
||||
in Chrome, Edge, Firefox IE, Opera, and Safari.
|
||||
* Correct inheritance and scaling of `font-size` for preformatted text.
|
||||
* Correct `legend` text wrapping not present in Edge and IE.
|
||||
* Remove unnecessary normalization of `line-height` for `input`.
|
||||
* Remove unnecessary normalization of `color` for form controls.
|
||||
* Remove unnecessary `box-sizing` for `input[type="search"]` in Chrome, Edge,
|
||||
Firefox, IE, and Safari.
|
||||
* Remove opinionated table resets.
|
||||
* Remove opinionated `pre` overflow.
|
||||
* Remove selector weight from some input selectors.
|
||||
* Update normalization of `border-style` for `img`.
|
||||
* Update normalization of `color` inheritance for `legend`.
|
||||
* Update normalization of `background-color` for `mark`.
|
||||
* Update normalization of `outline` for `:-moz-focusring` removed by a previous
|
||||
normalization in Firefox.
|
||||
* Update opinionated style of `outline-width` for `a:active` and `a:hover`.
|
||||
* Update comments to identify opinionated styles.
|
||||
* Update comments to specify browser/versions affected by all changes.
|
||||
* Update comments to use one voice.
|
||||
|
||||
---
|
||||
|
||||
### 3.0.3 (March 30, 2015)
|
||||
|
||||
* Remove unnecessary vendor prefixes.
|
||||
* Add `main` property.
|
||||
|
||||
### 3.0.2 (October 4, 2014)
|
||||
|
||||
* Only alter `background-color` of links in IE 10.
|
||||
* Add `menu` element to HTML5 display definitions.
|
||||
|
||||
### 3.0.1 (March 27, 2014)
|
||||
|
||||
* Add package.json for npm support.
|
||||
|
||||
### 3.0.0 (January 28, 2014)
|
||||
|
||||
### 3.0.0-rc.1 (January 26, 2014)
|
||||
|
||||
* Explicit tests for each normalization.
|
||||
* Fix i18n for `q` element.
|
||||
* Fix `pre` text formatting and overflow.
|
||||
* Fix vertical alignment of `progress`.
|
||||
* Address `button` overflow in IE 8/9/10.
|
||||
* Revert `textarea` alignment modification.
|
||||
* Fix number input button cursor in Chrome on OS X.
|
||||
* Remove `a:focus` outline normalization.
|
||||
* Fix `figure` margin normalization.
|
||||
* Normalize `optgroup`.
|
||||
* Remove default table cell padding.
|
||||
* Set correct display for `progress` in IE 8/9.
|
||||
* Fix `font` and `color` inheritance for forms.
|
||||
|
||||
---
|
||||
|
||||
### 2.1.3 (August 26, 2013)
|
||||
|
||||
* Fix component.json.
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
|
||||
### 2.1.2 (May 11, 2013)
|
||||
|
||||
* Revert root `color` and `background` normalizations.
|
||||
|
||||
### 2.1.1 (April 8, 2013)
|
||||
|
||||
* Normalize root `color` and `background` to counter the effects of system
|
||||
color schemes.
|
||||
|
||||
### 2.1.0 (January 21, 2013)
|
||||
|
||||
* Normalize `text-transform` for `button` and `select`.
|
||||
* Normalize `h1` margin when within HTML5 sectioning elements.
|
||||
* Normalize `hr` element.
|
||||
* Remove unnecessary `pre` styles.
|
||||
* Add `main` element to HTML5 display definitions.
|
||||
* Fix cursor style for disabled button `input`.
|
||||
|
||||
### 2.0.1 (August 20, 2012)
|
||||
|
||||
* Remove stray IE 6/7 `inline-block` hack from HTML5 display settings.
|
||||
|
||||
### 2.0.0 (August 19, 2012)
|
||||
|
||||
* Remove legacy browser form normalizations.
|
||||
* Remove all list normalizations.
|
||||
* Add `quotes` normalizations.
|
||||
* Remove all heading normalizations except `h1` font size.
|
||||
* Form elements automatically inherit `font-family` from ancestor.
|
||||
* Drop support for IE 6/7, Firefox < 4, and Safari < 5.
|
||||
|
||||
---
|
||||
|
||||
### 1.0.1 (August 19, 2012)
|
||||
|
||||
* Adjust `small` font size normalization.
|
||||
|
||||
### 1.0.0 (August 14, 2012)
|
||||
|
||||
(Only the notable changes since public release)
|
||||
|
||||
* Add MIT License.
|
||||
* Hide `audio` elements without controls in iOS 5.
|
||||
* Normalize heading margins and font size.
|
||||
* Move font-family normalization from `body` to `html`.
|
||||
* Remove scrollbar normalization.
|
||||
* Remove excess padding from checkbox and radio inputs in IE 7.
|
||||
* Add IE9 correction for SVG overflow.
|
||||
* Add fix for legend not inheriting color in IE 6/7/8/9.
|
21
vendors/normalize.css/LICENSE.md
vendored
Normal file
21
vendors/normalize.css/LICENSE.md
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
# The MIT License (MIT)
|
||||
|
||||
Copyright © Nicolas Gallagher and Jonathan Neal
|
||||
|
||||
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.
|
102
vendors/normalize.css/README.md
vendored
Normal file
102
vendors/normalize.css/README.md
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
# normalize.css
|
||||
|
||||
<a href="https://github.com/necolas/normalize.css"><img
|
||||
src="https://necolas.github.io/normalize.css/logo.svg" alt="Normalize Logo"
|
||||
width="80" height="80" align="right"></a>
|
||||
|
||||
> A modern alternative to CSS resets
|
||||
|
||||
[![npm][npm-image]][npm-url] [![license][license-image]][license-url]
|
||||
[![changelog][changelog-image]][changelog-url]
|
||||
[![gitter][gitter-image]][gitter-url]
|
||||
|
||||
|
||||
**NPM**
|
||||
|
||||
```sh
|
||||
npm install --save normalize.css
|
||||
```
|
||||
|
||||
**CDN**
|
||||
|
||||
See https://yarnpkg.com/en/package/normalize.css
|
||||
|
||||
**Download**
|
||||
|
||||
See https://necolas.github.io/normalize.css/latest/normalize.css
|
||||
|
||||
|
||||
## What does it do?
|
||||
|
||||
* Preserves useful defaults, unlike many CSS resets.
|
||||
* Normalizes styles for a wide range of elements.
|
||||
* Corrects bugs and common browser inconsistencies.
|
||||
* Improves usability with subtle modifications.
|
||||
* Explains what code does using detailed comments.
|
||||
|
||||
|
||||
## Browser support
|
||||
|
||||
* Chrome
|
||||
* Edge
|
||||
* Firefox ESR+
|
||||
* Internet Explorer 10+
|
||||
* Safari 8+
|
||||
* Opera
|
||||
|
||||
|
||||
## Extended details and known issues
|
||||
|
||||
Additional detail and explanation of the esoteric parts of normalize.css.
|
||||
|
||||
#### `pre, code, kbd, samp`
|
||||
|
||||
The `font-family: monospace, monospace` hack fixes the inheritance and scaling
|
||||
of font-size for preformatted text. The duplication of `monospace` is
|
||||
intentional. [Source](https://en.wikipedia.org/wiki/User:Davidgothberg/Test59).
|
||||
|
||||
#### `sub, sup`
|
||||
|
||||
Normally, using `sub` or `sup` affects the line-box height of text in all
|
||||
browsers. [Source](https://gist.github.com/413930).
|
||||
|
||||
#### `select`
|
||||
|
||||
By default, Chrome on OS X and Safari on OS X allow very limited styling of
|
||||
`select`, unless a border property is set. The default font weight on `optgroup`
|
||||
elements cannot safely be changed in Chrome on OSX and Safari on OS X.
|
||||
|
||||
#### `[type="checkbox"]`
|
||||
|
||||
It is recommended that you do not style checkbox and radio inputs as Firefox's
|
||||
implementation does not respect box-sizing, padding, or width.
|
||||
|
||||
#### `[type="number"]`
|
||||
|
||||
Certain font size values applied to number inputs cause the cursor style of the
|
||||
decrement button to change from `default` to `text`.
|
||||
|
||||
#### `[type="search"]`
|
||||
|
||||
The search input is not fully stylable by default. In Chrome and Safari on
|
||||
OSX/iOS you can't control `font`, `padding`, `border`, or `background`. In
|
||||
Chrome and Safari on Windows you can't control `border` properly. It will apply
|
||||
`border-width` but will only show a border color (which cannot be controlled)
|
||||
for the outer 1px of that border. Applying `-webkit-appearance: textfield`
|
||||
addresses these issues without removing the benefits of search inputs (e.g.
|
||||
showing past searches).
|
||||
|
||||
## Contributing
|
||||
|
||||
Please read the [contribution guidelines](CONTRIBUTING.md) in order to make the
|
||||
contribution process easy and effective for everyone involved.
|
||||
|
||||
|
||||
[changelog-image]: https://img.shields.io/badge/changelog-md-blue.svg?style=flat-square
|
||||
[changelog-url]: CHANGELOG.md
|
||||
[license-image]: https://img.shields.io/npm/l/normalize.css.svg?style=flat-square
|
||||
[license-url]: LICENSE.md
|
||||
[npm-image]: https://img.shields.io/npm/v/normalize.css.svg?style=flat-square
|
||||
[npm-url]: https://www.npmjs.com/package/normalize.css
|
||||
[gitter-image]: https://img.shields.io/badge/chat-gitter-blue.svg?style=flat-square
|
||||
[gitter-url]: https://gitter.im/necolas/normalize.css
|
282
vendors/normalize.css/normalize.css
vendored
Normal file
282
vendors/normalize.css/normalize.css
vendored
Normal file
|
@ -0,0 +1,282 @@
|
|||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box; /* 1 */
|
||||
height: 0; /* 1 */
|
||||
overflow: visible; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57-
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none; /* 1 */
|
||||
text-decoration: underline; /* 2 */
|
||||
text-decoration: underline dotted; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers.
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit; /* 1 */
|
||||
font-size: 100%; /* 1 */
|
||||
line-height: 1.15; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input { /* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select { /* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box; /* 1 */
|
||||
display: table; /* 1 */
|
||||
max-width: 100%; /* 1 */
|
||||
padding: 0; /* 3 */
|
||||
white-space: normal; /* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
outline-offset: -2px; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
||||
*/
|
||||
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
|
@ -4825,11 +4825,6 @@ normalize-range@^0.1.2:
|
|||
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
|
||||
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
|
||||
|
||||
normalize.css@8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
|
||||
integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
|
||||
|
||||
now-and-later@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c"
|
||||
|
|
Loading…
Reference in a new issue