diff --git a/wp-admin/css/site-health-rtl.css b/wp-admin/css/site-health-rtl.css index d07ebe848a..d802251f40 100644 --- a/wp-admin/css/site-health-rtl.css +++ b/wp-admin/css/site-health-rtl.css @@ -209,36 +209,23 @@ body.site-health .spinner { float: none; } -body.site-health .system-information-copy-wrapper { +.site-health-copy-buttons { display: block; margin: 1rem 0; } -body.site-health .system-information-copy-wrapper textarea { - border: 0; - padding: 0; - margin: 0; - position: absolute; - right: -9999px; - top: -9999px; -} - -body.site-health .health-check-toggle-copy-section:hover { - background: none; -} - -body.site-health .system-information-copy-wrapper .copy-button-wrapper { +.site-health-copy-buttons .copy-button-wrapper { margin: 0.5rem 0 1rem; } -body.site-health .copy-field-success { +.site-health-copy-buttons .success { display: none; color: #40860a; line-height: 1.8; margin-right: 0.5rem; } -body.site-health .copy-field-success.visible { +.site-health-copy-buttons .success.visible { display: inline-block; height: 28px; line-height: 28px; diff --git a/wp-admin/css/site-health-rtl.min.css b/wp-admin/css/site-health-rtl.min.css index 281f5db8a0..69203ed9ff 100644 --- a/wp-admin/css/site-health-rtl.min.css +++ b/wp-admin/css/site-health-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body.site-health #wpcontent{padding-right:0}body.site-health .wrap{margin-left:0;margin-right:0}body.site-health .wrap h2{padding:1rem 0;font-size:1.3em;line-height:1.4;font-weight:600}body.site-health ol li,body.site-health ul li{line-height:1.5}body.site-health .health-check-header{text-align:center;margin-top:0;margin-bottom:1rem;background:#fff;border-bottom:1px solid #e2e4e7}body.site-health .health-check-header .title-section{display:flex;align-items:center;justify-content:center}body.site-health .health-check-header .title-section h1{display:inline-block;font-weight:600;margin:1rem .8rem 1rem .8rem}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress .progress-count{position:absolute;display:block;height:80px;width:80px;right:50%;top:50%;margin-top:-40px;margin-right:-40px;border-radius:100%;line-height:80px;font-size:2em}.site-health-progress .progress-count::after{content:""}.site-health-progress.hidden{display:none}.site-health-progress.loading .progress-count::after{animation:loadingEllipsis 3s infinite ease-in-out}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}@keyframes loadingEllipsis{0%{content:"."}50%{content:".."}100%{content:"..."}}body.site-health .health-check-header .tabs-wrapper{display:block}body.site-health .health-check-header .tabs-wrapper .tab{float:none;display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}body.site-health .health-check-header .tabs-wrapper .tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}body.site-health .health-check-header .tabs-wrapper .tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}body.site-health .health-check-body{max-width:800px;margin:0 auto}body.site-health .health-check-table thead td:first-child,body.site-health .health-check-table thead th:first-child{width:30%}body.site-health .health-check-table tbody td{width:70%}body.site-health .health-check-table tbody td:first-child{width:30%}body.site-health .health-check-table tbody td ol,body.site-health .health-check-table tbody td ul{margin:0}.site-health .good::before,.site-health .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.site-health .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.site-health .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.site-health .error::before,.site-health .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}body.site-health .spinner{float:none}body.site-health .system-information-copy-wrapper{display:block;margin:1rem 0}body.site-health .system-information-copy-wrapper textarea{border:0;padding:0;margin:0;position:absolute;right:-9999px;top:-9999px}body.site-health .health-check-toggle-copy-section:hover{background:0 0}body.site-health .system-information-copy-wrapper .copy-button-wrapper{margin:.5rem 0 1rem}body.site-health .copy-field-success{display:none;color:#40860a;line-height:1.8;margin-right:.5rem}body.site-health .copy-field-success.visible{display:inline-block;height:28px;line-height:28px}body.site-health .site-status-has-issues{display:block}body.site-health .site-status-has-issues.hide{display:none}body.site-health h3{padding:0;font-weight:400}body.site-health .view-more{text-align:center}body.site-health .issues-wrapper:first-of-type{margin-top:3rem}body.site-health .issues-wrapper{margin-bottom:3rem;margin-top:2rem}body.site-health .site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){body.site-health .site-status-all-clear{margin:5rem 0}}body.site-health .site-status-all-clear.hide{display:none}body.site-health .site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}body.site-health .site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}body.site-health .site-status-all-clear p{margin:0}body .health-check-accordion{border:1px solid #e2e4e7}body .health-check-accordion dt{font-weight:600;border-top:1px solid #e2e4e7}body .health-check-accordion dt:first-child{border-radius:.3em .3em 0 0;border-top:none}body .health-check-accordion .health-check-accordion-trigger{background:#fff;border:0;color:#212121;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:right;width:100%}body .health-check-accordion .health-check-accordion-trigger:active,body .health-check-accordion .health-check-accordion-trigger:hover{background:#f8f9f9}body .health-check-accordion .health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}body .health-check-accordion .health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}body .health-check-accordion .health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 0 2px 2px;height:.5rem;pointer-events:none;position:absolute;left:1.5em;top:50%;transform:translateY(-70%) rotate(-45deg);width:.5rem}body .health-check-accordion .health-check-accordion-trigger .badge{display:inline-block;padding:.1rem .5rem .15rem;background-color:#d7dade;border-radius:3px;color:#000;font-weight:600;margin:0 .5rem}body .health-check-accordion .health-check-accordion-trigger .badge.blue{background-color:#0073af;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.orange{background-color:#ffb900;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.red{background-color:#dc3232;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.green{background-color:#40860a;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.pink{background-color:#f4b0fc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.gray{background-color:#ccc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-blue{background-color:#10e9fb;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-green{background-color:#60f999;color:#000}body .health-check-accordion .health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(135deg)}body .health-check-accordion .health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}body .health-check-accordion .health-check-accordion-panel>div{display:block}body .health-check-accordion .health-check-accordion-panel[hidden]{display:none}body .health-check-accordion dl dd{margin:0 2em .5em 0}@media screen and (max-width:782px){body.site-health .health-check-body{margin:0 12px;width:initial}}@media only screen and (max-width:1004px){body.site-health .health-check-body{margin:0 22px;width:initial}} \ No newline at end of file +body.site-health #wpcontent{padding-right:0}body.site-health .wrap{margin-left:0;margin-right:0}body.site-health .wrap h2{padding:1rem 0;font-size:1.3em;line-height:1.4;font-weight:600}body.site-health ol li,body.site-health ul li{line-height:1.5}body.site-health .health-check-header{text-align:center;margin-top:0;margin-bottom:1rem;background:#fff;border-bottom:1px solid #e2e4e7}body.site-health .health-check-header .title-section{display:flex;align-items:center;justify-content:center}body.site-health .health-check-header .title-section h1{display:inline-block;font-weight:600;margin:1rem .8rem 1rem .8rem}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress .progress-count{position:absolute;display:block;height:80px;width:80px;right:50%;top:50%;margin-top:-40px;margin-right:-40px;border-radius:100%;line-height:80px;font-size:2em}.site-health-progress .progress-count::after{content:""}.site-health-progress.hidden{display:none}.site-health-progress.loading .progress-count::after{animation:loadingEllipsis 3s infinite ease-in-out}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}@keyframes loadingEllipsis{0%{content:"."}50%{content:".."}100%{content:"..."}}body.site-health .health-check-header .tabs-wrapper{display:block}body.site-health .health-check-header .tabs-wrapper .tab{float:none;display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}body.site-health .health-check-header .tabs-wrapper .tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}body.site-health .health-check-header .tabs-wrapper .tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}body.site-health .health-check-body{max-width:800px;margin:0 auto}body.site-health .health-check-table thead td:first-child,body.site-health .health-check-table thead th:first-child{width:30%}body.site-health .health-check-table tbody td{width:70%}body.site-health .health-check-table tbody td:first-child{width:30%}body.site-health .health-check-table tbody td ol,body.site-health .health-check-table tbody td ul{margin:0}.site-health .good::before,.site-health .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.site-health .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.site-health .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.site-health .error::before,.site-health .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}body.site-health .spinner{float:none}.site-health-copy-buttons{display:block;margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{margin:.5rem 0 1rem}.site-health-copy-buttons .success{display:none;color:#40860a;line-height:1.8;margin-right:.5rem}.site-health-copy-buttons .success.visible{display:inline-block;height:28px;line-height:28px}body.site-health .site-status-has-issues{display:block}body.site-health .site-status-has-issues.hide{display:none}body.site-health h3{padding:0;font-weight:400}body.site-health .view-more{text-align:center}body.site-health .issues-wrapper:first-of-type{margin-top:3rem}body.site-health .issues-wrapper{margin-bottom:3rem;margin-top:2rem}body.site-health .site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){body.site-health .site-status-all-clear{margin:5rem 0}}body.site-health .site-status-all-clear.hide{display:none}body.site-health .site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}body.site-health .site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}body.site-health .site-status-all-clear p{margin:0}body .health-check-accordion{border:1px solid #e2e4e7}body .health-check-accordion dt{font-weight:600;border-top:1px solid #e2e4e7}body .health-check-accordion dt:first-child{border-radius:.3em .3em 0 0;border-top:none}body .health-check-accordion .health-check-accordion-trigger{background:#fff;border:0;color:#212121;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:right;width:100%}body .health-check-accordion .health-check-accordion-trigger:active,body .health-check-accordion .health-check-accordion-trigger:hover{background:#f8f9f9}body .health-check-accordion .health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}body .health-check-accordion .health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}body .health-check-accordion .health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 0 2px 2px;height:.5rem;pointer-events:none;position:absolute;left:1.5em;top:50%;transform:translateY(-70%) rotate(-45deg);width:.5rem}body .health-check-accordion .health-check-accordion-trigger .badge{display:inline-block;padding:.1rem .5rem .15rem;background-color:#d7dade;border-radius:3px;color:#000;font-weight:600;margin:0 .5rem}body .health-check-accordion .health-check-accordion-trigger .badge.blue{background-color:#0073af;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.orange{background-color:#ffb900;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.red{background-color:#dc3232;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.green{background-color:#40860a;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.pink{background-color:#f4b0fc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.gray{background-color:#ccc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-blue{background-color:#10e9fb;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-green{background-color:#60f999;color:#000}body .health-check-accordion .health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(135deg)}body .health-check-accordion .health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}body .health-check-accordion .health-check-accordion-panel>div{display:block}body .health-check-accordion .health-check-accordion-panel[hidden]{display:none}body .health-check-accordion dl dd{margin:0 2em .5em 0}@media screen and (max-width:782px){body.site-health .health-check-body{margin:0 12px;width:initial}}@media only screen and (max-width:1004px){body.site-health .health-check-body{margin:0 22px;width:initial}} \ No newline at end of file diff --git a/wp-admin/css/site-health.css b/wp-admin/css/site-health.css index cd39fe3a21..d8cbaa52f0 100644 --- a/wp-admin/css/site-health.css +++ b/wp-admin/css/site-health.css @@ -209,36 +209,23 @@ body.site-health .spinner { float: none; } -body.site-health .system-information-copy-wrapper { +.site-health-copy-buttons { display: block; margin: 1rem 0; } -body.site-health .system-information-copy-wrapper textarea { - border: 0; - padding: 0; - margin: 0; - position: absolute; - left: -9999px; - top: -9999px; -} - -body.site-health .health-check-toggle-copy-section:hover { - background: none; -} - -body.site-health .system-information-copy-wrapper .copy-button-wrapper { +.site-health-copy-buttons .copy-button-wrapper { margin: 0.5rem 0 1rem; } -body.site-health .copy-field-success { +.site-health-copy-buttons .success { display: none; color: #40860a; line-height: 1.8; margin-left: 0.5rem; } -body.site-health .copy-field-success.visible { +.site-health-copy-buttons .success.visible { display: inline-block; height: 28px; line-height: 28px; diff --git a/wp-admin/css/site-health.min.css b/wp-admin/css/site-health.min.css index 9107180bc6..0d59b4eabc 100644 --- a/wp-admin/css/site-health.min.css +++ b/wp-admin/css/site-health.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body.site-health #wpcontent{padding-left:0}body.site-health .wrap{margin-right:0;margin-left:0}body.site-health .wrap h2{padding:1rem 0;font-size:1.3em;line-height:1.4;font-weight:600}body.site-health ol li,body.site-health ul li{line-height:1.5}body.site-health .health-check-header{text-align:center;margin-top:0;margin-bottom:1rem;background:#fff;border-bottom:1px solid #e2e4e7}body.site-health .health-check-header .title-section{display:flex;align-items:center;justify-content:center}body.site-health .health-check-header .title-section h1{display:inline-block;font-weight:600;margin:1rem .8rem 1rem .8rem}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress .progress-count{position:absolute;display:block;height:80px;width:80px;left:50%;top:50%;margin-top:-40px;margin-left:-40px;border-radius:100%;line-height:80px;font-size:2em}.site-health-progress .progress-count::after{content:""}.site-health-progress.hidden{display:none}.site-health-progress.loading .progress-count::after{animation:loadingEllipsis 3s infinite ease-in-out}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}@keyframes loadingEllipsis{0%{content:"."}50%{content:".."}100%{content:"..."}}body.site-health .health-check-header .tabs-wrapper{display:block}body.site-health .health-check-header .tabs-wrapper .tab{float:none;display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}body.site-health .health-check-header .tabs-wrapper .tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}body.site-health .health-check-header .tabs-wrapper .tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}body.site-health .health-check-body{max-width:800px;margin:0 auto}body.site-health .health-check-table thead td:first-child,body.site-health .health-check-table thead th:first-child{width:30%}body.site-health .health-check-table tbody td{width:70%}body.site-health .health-check-table tbody td:first-child{width:30%}body.site-health .health-check-table tbody td ol,body.site-health .health-check-table tbody td ul{margin:0}.site-health .good::before,.site-health .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.site-health .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.site-health .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.site-health .error::before,.site-health .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}body.site-health .spinner{float:none}body.site-health .system-information-copy-wrapper{display:block;margin:1rem 0}body.site-health .system-information-copy-wrapper textarea{border:0;padding:0;margin:0;position:absolute;left:-9999px;top:-9999px}body.site-health .health-check-toggle-copy-section:hover{background:0 0}body.site-health .system-information-copy-wrapper .copy-button-wrapper{margin:.5rem 0 1rem}body.site-health .copy-field-success{display:none;color:#40860a;line-height:1.8;margin-left:.5rem}body.site-health .copy-field-success.visible{display:inline-block;height:28px;line-height:28px}body.site-health .site-status-has-issues{display:block}body.site-health .site-status-has-issues.hide{display:none}body.site-health h3{padding:0;font-weight:400}body.site-health .view-more{text-align:center}body.site-health .issues-wrapper:first-of-type{margin-top:3rem}body.site-health .issues-wrapper{margin-bottom:3rem;margin-top:2rem}body.site-health .site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){body.site-health .site-status-all-clear{margin:5rem 0}}body.site-health .site-status-all-clear.hide{display:none}body.site-health .site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}body.site-health .site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}body.site-health .site-status-all-clear p{margin:0}body .health-check-accordion{border:1px solid #e2e4e7}body .health-check-accordion dt{font-weight:600;border-top:1px solid #e2e4e7}body .health-check-accordion dt:first-child{border-radius:.3em .3em 0 0;border-top:none}body .health-check-accordion .health-check-accordion-trigger{background:#fff;border:0;color:#212121;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:left;width:100%}body .health-check-accordion .health-check-accordion-trigger:active,body .health-check-accordion .health-check-accordion-trigger:hover{background:#f8f9f9}body .health-check-accordion .health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}body .health-check-accordion .health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}body .health-check-accordion .health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}body .health-check-accordion .health-check-accordion-trigger .badge{display:inline-block;padding:.1rem .5rem .15rem;background-color:#d7dade;border-radius:3px;color:#000;font-weight:600;margin:0 .5rem}body .health-check-accordion .health-check-accordion-trigger .badge.blue{background-color:#0073af;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.orange{background-color:#ffb900;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.red{background-color:#dc3232;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.green{background-color:#40860a;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.pink{background-color:#f4b0fc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.gray{background-color:#ccc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-blue{background-color:#10e9fb;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-green{background-color:#60f999;color:#000}body .health-check-accordion .health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}body .health-check-accordion .health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}body .health-check-accordion .health-check-accordion-panel>div{display:block}body .health-check-accordion .health-check-accordion-panel[hidden]{display:none}body .health-check-accordion dl dd{margin:0 0 .5em 2em}@media screen and (max-width:782px){body.site-health .health-check-body{margin:0 12px;width:initial}}@media only screen and (max-width:1004px){body.site-health .health-check-body{margin:0 22px;width:initial}} \ No newline at end of file +body.site-health #wpcontent{padding-left:0}body.site-health .wrap{margin-right:0;margin-left:0}body.site-health .wrap h2{padding:1rem 0;font-size:1.3em;line-height:1.4;font-weight:600}body.site-health ol li,body.site-health ul li{line-height:1.5}body.site-health .health-check-header{text-align:center;margin-top:0;margin-bottom:1rem;background:#fff;border-bottom:1px solid #e2e4e7}body.site-health .health-check-header .title-section{display:flex;align-items:center;justify-content:center}body.site-health .health-check-header .title-section h1{display:inline-block;font-weight:600;margin:1rem .8rem 1rem .8rem}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress .progress-count{position:absolute;display:block;height:80px;width:80px;left:50%;top:50%;margin-top:-40px;margin-left:-40px;border-radius:100%;line-height:80px;font-size:2em}.site-health-progress .progress-count::after{content:""}.site-health-progress.hidden{display:none}.site-health-progress.loading .progress-count::after{animation:loadingEllipsis 3s infinite ease-in-out}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}@keyframes loadingEllipsis{0%{content:"."}50%{content:".."}100%{content:"..."}}body.site-health .health-check-header .tabs-wrapper{display:block}body.site-health .health-check-header .tabs-wrapper .tab{float:none;display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}body.site-health .health-check-header .tabs-wrapper .tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}body.site-health .health-check-header .tabs-wrapper .tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}body.site-health .health-check-body{max-width:800px;margin:0 auto}body.site-health .health-check-table thead td:first-child,body.site-health .health-check-table thead th:first-child{width:30%}body.site-health .health-check-table tbody td{width:70%}body.site-health .health-check-table tbody td:first-child{width:30%}body.site-health .health-check-table tbody td ol,body.site-health .health-check-table tbody td ul{margin:0}.site-health .good::before,.site-health .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.site-health .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.site-health .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.site-health .error::before,.site-health .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}body.site-health .spinner{float:none}.site-health-copy-buttons{display:block;margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{margin:.5rem 0 1rem}.site-health-copy-buttons .success{display:none;color:#40860a;line-height:1.8;margin-left:.5rem}.site-health-copy-buttons .success.visible{display:inline-block;height:28px;line-height:28px}body.site-health .site-status-has-issues{display:block}body.site-health .site-status-has-issues.hide{display:none}body.site-health h3{padding:0;font-weight:400}body.site-health .view-more{text-align:center}body.site-health .issues-wrapper:first-of-type{margin-top:3rem}body.site-health .issues-wrapper{margin-bottom:3rem;margin-top:2rem}body.site-health .site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){body.site-health .site-status-all-clear{margin:5rem 0}}body.site-health .site-status-all-clear.hide{display:none}body.site-health .site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}body.site-health .site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}body.site-health .site-status-all-clear p{margin:0}body .health-check-accordion{border:1px solid #e2e4e7}body .health-check-accordion dt{font-weight:600;border-top:1px solid #e2e4e7}body .health-check-accordion dt:first-child{border-radius:.3em .3em 0 0;border-top:none}body .health-check-accordion .health-check-accordion-trigger{background:#fff;border:0;color:#212121;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:left;width:100%}body .health-check-accordion .health-check-accordion-trigger:active,body .health-check-accordion .health-check-accordion-trigger:hover{background:#f8f9f9}body .health-check-accordion .health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}body .health-check-accordion .health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}body .health-check-accordion .health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}body .health-check-accordion .health-check-accordion-trigger .badge{display:inline-block;padding:.1rem .5rem .15rem;background-color:#d7dade;border-radius:3px;color:#000;font-weight:600;margin:0 .5rem}body .health-check-accordion .health-check-accordion-trigger .badge.blue{background-color:#0073af;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.orange{background-color:#ffb900;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.red{background-color:#dc3232;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.green{background-color:#40860a;color:#fff}body .health-check-accordion .health-check-accordion-trigger .badge.pink{background-color:#f4b0fc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.gray{background-color:#ccc;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-blue{background-color:#10e9fb;color:#000}body .health-check-accordion .health-check-accordion-trigger .badge.light-green{background-color:#60f999;color:#000}body .health-check-accordion .health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}body .health-check-accordion .health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}body .health-check-accordion .health-check-accordion-panel>div{display:block}body .health-check-accordion .health-check-accordion-panel[hidden]{display:none}body .health-check-accordion dl dd{margin:0 0 .5em 2em}@media screen and (max-width:782px){body.site-health .health-check-body{margin:0 12px;width:initial}}@media only screen and (max-width:1004px){body.site-health .health-check-body{margin:0 22px;width:initial}} \ No newline at end of file diff --git a/wp-admin/includes/class-wp-debug-data.php b/wp-admin/includes/class-wp-debug-data.php index 6e82e0b672..a49ffc2922 100644 --- a/wp-admin/includes/class-wp-debug-data.php +++ b/wp-admin/includes/class-wp-debug-data.php @@ -881,15 +881,16 @@ class WP_Debug_Data { } /** - * Print the formatted variation of the information gathered for debugging, in a manner - * suitable for a text area that can be instantly copied to a forum or support ticket. + * Format the information gathered for debugging, in a manner suitable for copying to a forum or support ticket. * * @since 5.2.0 * * @param array $info_array Information gathered from the `WP_Debug_Data::debug_data` function. + * @param string $type Optional. The data type to format the information as. Default 'text'. + * @return string The formatted data. */ - public static function textarea_format( $info_array ) { - echo "`\n"; + public static function format( $info_array, $type = 'text' ) { + $return = ''; foreach ( $info_array as $section => $details ) { // Skip this section if there are no fields, or the section has been declared as private. @@ -897,7 +898,7 @@ class WP_Debug_Data { continue; } - printf( + $return .= sprintf( "### %s%s ###\n\n", $details['label'], ( isset( $details['show_count'] ) && $details['show_count'] ? sprintf( ' (%d)', count( $details['fields'] ) ) : '' ) @@ -921,15 +922,16 @@ class WP_Debug_Data { } } - printf( + $return .= sprintf( "%s: %s\n", $field['label'], $values ); } - echo "\n"; + $return .= "\n"; } - echo '`'; + + return $return; } /** diff --git a/wp-admin/js/site-health.js b/wp-admin/js/site-health.js index 826f46f4a2..140c5c1e37 100644 --- a/wp-admin/js/site-health.js +++ b/wp-admin/js/site-health.js @@ -10,21 +10,14 @@ jQuery( document ).ready( function( $ ) { var data; + var clipboard = new ClipboardJS( '.site-health-copy-buttons .copy-button' ); + // Debug information copy section. - $( '.health-check-copy-field' ).click( function( e ) { - var $textarea = $( '#system-information-' + $( this ).data( 'copy-field' ) + '-copy-field' ), - $wrapper = $( this ).closest( 'div' ); + clipboard.on( 'success', function( e ) { + var $wrapper = $( e.trigger ).closest( 'div' ); + $( '.success', $wrapper ).addClass( 'visible' ); - e.preventDefault(); - - $textarea.select(); - - if ( document.execCommand( 'copy' ) ) { - $( '.copy-field-success', $wrapper ).addClass( 'visible' ); - $( this ).focus(); - - wp.a11y.speak( SiteHealth.string.site_info_copied ); - } + wp.a11y.speak( SiteHealth.string.site_info_copied ); } ); // Accordion handling in various areas. diff --git a/wp-admin/js/site-health.min.js b/wp-admin/js/site-health.min.js index 95bea37691..ac96066ec1 100644 --- a/wp-admin/js/site-health.min.js +++ b/wp-admin/js/site-health.min.js @@ -1 +1 @@ -jQuery(document).ready(function(a){function b(b){var c=wp.template("health-check-issue"),d=a("#health-check-issues-"+b.status),e=a(".issue-count",d);SiteHealth.site_status.issues[b.status]++,e.text(SiteHealth.site_status.issues[b.status]),a(".issues","#health-check-issues-"+b.status).append(c(b))}function c(){var b,c,d,e=a(".site-health-progress"),f=e.find(".progress-count"),g=a(".site-health-progress svg #bar"),h=parseInt(SiteHealth.site_status.issues.good,0)+parseInt(SiteHealth.site_status.issues.recommended,0)+1.5*parseInt(SiteHealth.site_status.issues.critical,0),i=parseInt(SiteHealth.site_status.issues.recommended,0)+1.5*parseInt(SiteHealth.site_status.issues.critical,0),j=100-Math.ceil(i/h*100);return 0===h?void e.addClass("hidden"):(e.removeClass("loading"),b=g.attr("r"),c=Math.PI*(2*b),0>j&&(j=0),100parseInt(SiteHealth.site_status.issues.critical,0)&&a("#health-check-issues-critical").addClass("hidden"),1>parseInt(SiteHealth.site_status.issues.recommended,0)&&a("#health-check-issues-recommended").addClass("hidden"),50<=j&&g.addClass("orange").removeClass("red"),90<=j&&g.addClass("green").removeClass("orange"),100===j&&(a(".site-status-all-clear").removeClass("hide"),a(".site-status-has-issues").addClass("hide")),f.text(j+"%"),a.post(ajaxurl,{action:"health-check-site-status-result",_wpnonce:SiteHealth.nonce.site_status_result,counts:SiteHealth.site_status.issues}),void wp.a11y.speak(SiteHealth.string.site_health_complete_screen_reader.replace("%s",j+"%")))}function d(){var e=!0;1<=SiteHealth.site_status.async.length&&a.each(SiteHealth.site_status.async,function(){var c={action:"health-check-"+this.test.replace("_","-"),_wpnonce:SiteHealth.nonce.site_status};return!!this.completed||(e=!1,this.completed=!0,a.post(ajaxurl,c,function(a){b(a.data),d()}),!1)}),e&&c()}var e;a(".health-check-copy-field").click(function(b){var c=a("#system-information-"+a(this).data("copy-field")+"-copy-field"),d=a(this).closest("div");b.preventDefault(),c.select(),document.execCommand("copy")&&(a(".copy-field-success",d).addClass("visible"),a(this).focus(),wp.a11y.speak(SiteHealth.string.site_info_copied))}),a(".health-check-accordion").on("click",".health-check-accordion-trigger",function(){var b="true"===a(this).attr("aria-expanded");b?(a(this).attr("aria-expanded","false"),a("#"+a(this).attr("aria-controls")).attr("hidden",!0)):(a(this).attr("aria-expanded","true"),a("#"+a(this).attr("aria-controls")).attr("hidden",!1))}),a(".health-check-accordion").on("keyup",".health-check-accordion-trigger",function(b){"38"===b.keyCode.toString()?a(".health-check-accordion-trigger",a(this).closest("dt").prevAll("dt")).focus():"40"===b.keyCode.toString()&&a(".health-check-accordion-trigger",a(this).closest("dt").nextAll("dt")).focus()}),a(".site-health-view-passed").on("click",function(){var b=a("#health-check-issues-good");b.toggleClass("hidden"),a(this).attr("aria-expanded",!b.hasClass("hidden"))}),"undefined"!=typeof SiteHealth&&(0===SiteHealth.site_status.direct.length&&0===SiteHealth.site_status.async.length?c():SiteHealth.site_status.issues={good:0,recommended:0,critical:0},0j&&(j=0),100parseInt(SiteHealth.site_status.issues.critical,0)&&a("#health-check-issues-critical").addClass("hidden"),1>parseInt(SiteHealth.site_status.issues.recommended,0)&&a("#health-check-issues-recommended").addClass("hidden"),50<=j&&g.addClass("orange").removeClass("red"),90<=j&&g.addClass("green").removeClass("orange"),100===j&&(a(".site-status-all-clear").removeClass("hide"),a(".site-status-has-issues").addClass("hide")),f.text(j+"%"),a.post(ajaxurl,{action:"health-check-site-status-result",_wpnonce:SiteHealth.nonce.site_status_result,counts:SiteHealth.site_status.issues}),void wp.a11y.speak(SiteHealth.string.site_health_complete_screen_reader.replace("%s",j+"%")))}function d(){var e=!0;1<=SiteHealth.site_status.async.length&&a.each(SiteHealth.site_status.async,function(){var c={action:"health-check-"+this.test.replace("_","-"),_wpnonce:SiteHealth.nonce.site_status};return!!this.completed||(e=!1,this.completed=!0,a.post(ajaxurl,c,function(a){b(a.data),d()}),!1)}),e&&c()}var e,f=new ClipboardJS(".site-health-copy-buttons .copy-button");f.on("success",function(b){var c=a(b.trigger).closest("div");a(".success",c).addClass("visible"),wp.a11y.speak(SiteHealth.string.site_info_copied)}),a(".health-check-accordion").on("click",".health-check-accordion-trigger",function(){var b="true"===a(this).attr("aria-expanded");b?(a(this).attr("aria-expanded","false"),a("#"+a(this).attr("aria-controls")).attr("hidden",!0)):(a(this).attr("aria-expanded","true"),a("#"+a(this).attr("aria-controls")).attr("hidden",!1))}),a(".health-check-accordion").on("keyup",".health-check-accordion-trigger",function(b){"38"===b.keyCode.toString()?a(".health-check-accordion-trigger",a(this).closest("dt").prevAll("dt")).focus():"40"===b.keyCode.toString()&&a(".health-check-accordion-trigger",a(this).closest("dt").nextAll("dt")).focus()}),a(".site-health-view-passed").on("click",function(){var b=a("#health-check-issues-good");b.toggleClass("hidden"),a(this).attr("aria-expanded",!b.hasClass("hidden"))}),"undefined"!=typeof SiteHealth&&(0===SiteHealth.site_status.direct.length&&0===SiteHealth.site_status.async.length?c():SiteHealth.site_status.issues={good:0,recommended:0,critical:0},0

@@ -69,29 +73,21 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' );

- + +

+

+

-
- - - - - - - +
- - + +
- +
- - + +
diff --git a/wp-includes/js/clipboard.js b/wp-includes/js/clipboard.js new file mode 100644 index 0000000000..14cb08654f --- /dev/null +++ b/wp-includes/js/clipboard.js @@ -0,0 +1,978 @@ +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["ClipboardJS"] = factory(); + else + root["ClipboardJS"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _clipboardAction = __webpack_require__(1); + +var _clipboardAction2 = _interopRequireDefault(_clipboardAction); + +var _tinyEmitter = __webpack_require__(3); + +var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); + +var _goodListener = __webpack_require__(4); + +var _goodListener2 = _interopRequireDefault(_goodListener); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ +var Clipboard = function (_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + _classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + _createClass(Clipboard, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + this.container = _typeof(options.container) === 'object' ? options.container : document.body; + } + + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + + }, { + key: 'listenClick', + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + + }, { + key: 'onClick', + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new _clipboardAction2.default({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + container: this.container, + trigger: trigger, + emitter: this + }); + } + + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultAction', + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultTarget', + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + + }, { + key: 'defaultText', + + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + + /** + * Destroy lifecycle. + */ + + }, { + key: 'destroy', + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + }], [{ + key: 'isSupported', + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + + return support; + } + }]); + + return Clipboard; +}(_tinyEmitter2.default); + +/** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + + +function getAttributeValue(suffix, element) { + var attribute = 'data-clipboard-' + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); +} + +module.exports = Clipboard; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _select = __webpack_require__(2); + +var _select2 = _interopRequireDefault(_select); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Inner class which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + */ +var ClipboardAction = function () { + /** + * @param {Object} options + */ + function ClipboardAction(options) { + _classCallCheck(this, ClipboardAction); + + this.resolveOptions(options); + this.initSelection(); + } + + /** + * Defines base properties passed from constructor. + * @param {Object} options + */ + + + _createClass(ClipboardAction, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = options.action; + this.container = options.container; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ''; + } + + /** + * Decides which selection strategy is going to be applied based + * on the existence of `text` and `target` properties. + */ + + }, { + key: 'initSelection', + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + + /** + * Creates a fake textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + + }, { + key: 'selectFake', + value: function selectFake() { + var _this = this; + + var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; + + this.removeFake(); + + this.fakeHandlerCallback = function () { + return _this.removeFake(); + }; + this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true; + + this.fakeElem = document.createElement('textarea'); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = '12pt'; + // Reset box model + this.fakeElem.style.border = '0'; + this.fakeElem.style.padding = '0'; + this.fakeElem.style.margin = '0'; + // Move element out of screen horizontally + this.fakeElem.style.position = 'absolute'; + this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + 'px'; + + this.fakeElem.setAttribute('readonly', ''); + this.fakeElem.value = this.text; + + this.container.appendChild(this.fakeElem); + + this.selectedText = (0, _select2.default)(this.fakeElem); + this.copyText(); + } + + /** + * Only removes the fake element after another click event, that way + * a user can hit `Ctrl+C` to copy because selection still exists. + */ + + }, { + key: 'removeFake', + value: function removeFake() { + if (this.fakeHandler) { + this.container.removeEventListener('click', this.fakeHandlerCallback); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + this.container.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + + /** + * Selects the content from element passed on `target` property. + */ + + }, { + key: 'selectTarget', + value: function selectTarget() { + this.selectedText = (0, _select2.default)(this.target); + this.copyText(); + } + + /** + * Executes the copy operation based on the current selection. + */ + + }, { + key: 'copyText', + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + + /** + * Fires an event based on the copy operation result. + * @param {Boolean} succeeded + */ + + }, { + key: 'handleResult', + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + + /** + * Moves focus away from `target` and back to the trigger, removes current selection. + */ + + }, { + key: 'clearSelection', + value: function clearSelection() { + if (this.trigger) { + this.trigger.focus(); + } + + window.getSelection().removeAllRanges(); + } + + /** + * Sets the `action` to be performed which can be either 'copy' or 'cut'. + * @param {String} action + */ + + }, { + key: 'destroy', + + + /** + * Destroy lifecycle. + */ + value: function destroy() { + this.removeFake(); + } + }, { + key: 'action', + set: function set() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; + + this._action = action; + + if (this._action !== 'copy' && this._action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } + } + + /** + * Gets the `action` property. + * @return {String} + */ + , + get: function get() { + return this._action; + } + + /** + * Sets the `target` property using an element + * that will be have its content copied. + * @param {Element} target + */ + + }, { + key: 'target', + set: function set(target) { + if (target !== undefined) { + if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { + if (this.action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + + this._target = target; + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } + } + + /** + * Gets the `target` property. + * @return {String|HTMLElement} + */ + , + get: function get() { + return this._target; + } + }]); + + return ClipboardAction; +}(); + +module.exports = ClipboardAction; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +function E () { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) +} + +E.prototype = { + on: function (name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function (name, callback, ctx) { + var self = this; + function listener () { + self.off(name, listener); + callback.apply(ctx, arguments); + }; + + listener._ = callback + return this.on(name, listener, ctx); + }, + + emit: function (name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function (name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + (liveEvents.length) + ? e[name] = liveEvents + : delete e[name]; + + return this; + } +}; + +module.exports = E; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +var is = __webpack_require__(5); +var delegate = __webpack_require__(6); + +/** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error('Missing required arguments'); + } + + if (!is.string(type)) { + throw new TypeError('Second argument must be a String'); + } + + if (!is.fn(callback)) { + throw new TypeError('Third argument must be a Function'); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } + else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } + else if (is.string(target)) { + return listenSelector(target, type, callback); + } + else { + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + } +} + +/** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + } +} + +/** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + } +} + +/** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); +} + +module.exports = listen; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +/** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ +exports.node = function(value) { + return value !== undefined + && value instanceof HTMLElement + && value.nodeType === 1; +}; + +/** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ +exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return value !== undefined + && (type === '[object NodeList]' || type === '[object HTMLCollection]') + && ('length' in value) + && (value.length === 0 || exports.node(value[0])); +}; + +/** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ +exports.string = function(value) { + return typeof value === 'string' + || value instanceof String; +}; + +/** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ +exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === '[object Function]'; +}; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +var closest = __webpack_require__(7); + +/** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + } +} + +/** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === 'function') { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === 'function') { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === 'string') { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function (element) { + return _delegate(element, selector, type, callback, useCapture); + }); +} + +/** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ +function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + } +} + +module.exports = delegate; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports) { + +var DOCUMENT_NODE_TYPE = 9; + +/** + * A polyfill for Element.matches() + */ +if (typeof Element !== 'undefined' && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; +} + +/** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ +function closest (element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if (typeof element.matches === 'function' && + element.matches(selector)) { + return element; + } + element = element.parentNode; + } +} + +module.exports = closest; + + +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/wp-includes/js/clipboard.min.js b/wp-includes/js/clipboard.min.js new file mode 100644 index 0000000000..74e8e55ff8 --- /dev/null +++ b/wp-includes/js/clipboard.min.js @@ -0,0 +1 @@ +!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.ClipboardJS=b():a.ClipboardJS=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{enumerable:!0,get:d})},b.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},b.t=function(a,c){if(1&c&&(a=b(a)),8&c)return a;if(4&c&&"object"==typeof a&&a&&a.__esModule)return a;var d=Object.create(null);if(b.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:a}),2&c&&"string"!=typeof a)for(var e in a)b.d(d,e,function(b){return a[b]}.bind(null,e));return d},b.n=function(a){var c=a&&a.__esModule?function(){return a["default"]}:function(){return a};return b.d(c,"a",c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p="",b(b.s=0)}([function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!=typeof b&&"function"!=typeof b?a:b}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a,b){var c="data-clipboard-"+a;if(b.hasAttribute(c))return b.getAttribute(c)}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},j=function(){function a(a,b){for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof a.action?a.action:this.defaultAction,this.target="function"==typeof a.target?a.target:this.defaultTarget,this.text="function"==typeof a.text?a.text:this.defaultText,this.container="object"===i(a.container)?a.container:document.body}},{key:"listenClick",value:function(a){var b=this;this.listener=(0,p["default"])(a,"click",function(a){return b.onClick(a)})}},{key:"onClick",value:function(a){var b=a.delegateTarget||a.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l["default"]({action:this.action(b),target:this.target(b),text:this.text(b),container:this.container,trigger:b,emitter:this})}},{key:"defaultAction",value:function(a){return h("action",a)}},{key:"defaultTarget",value:function(a){var b=h("target",a);if(b)return document.querySelector(b)}},{key:"defaultText",value:function(a){return h("text",a)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],b="string"==typeof a?[a]:a,c=!!document.queryCommandSupported;return b.forEach(function(a){c=c&&!!document.queryCommandSupported(a)}),c}}]),b}(n["default"]);a.exports=q},function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:{};this.action=a.action,this.container=a.container,this.emitter=a.emitter,this.target=a.target,this.text=a.text,this.trigger=a.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var a=this,b="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return a.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[b?"right":"left"]="-9999px";var c=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=c+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,i["default"])(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,i["default"])(this.target),this.copyText()}},{key:"copyText",value:function(){var a=void 0;try{a=document.execCommand(this.action)}catch(b){a=!1}this.handleResult(a)}},{key:"handleResult",value:function(a){this.emitter.emit(a?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=a,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(a){if(void 0!==a){if(!a||"object"!==("undefined"==typeof a?"undefined":f(a))||1!==a.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&a.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(a.hasAttribute("readonly")||a.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=a}},get:function(){return this._target}}]),a}();a.exports=j},function(a,b){function c(a){var b;if("SELECT"===a.nodeName)a.focus(),b=a.value;else if("INPUT"===a.nodeName||"TEXTAREA"===a.nodeName){var c=a.hasAttribute("readonly");c||a.setAttribute("readonly",""),a.select(),a.setSelectionRange(0,a.value.length),c||a.removeAttribute("readonly"),b=a.value}else{a.hasAttribute("contenteditable")&&a.focus();var d=window.getSelection(),e=document.createRange();e.selectNodeContents(a),d.removeAllRanges(),d.addRange(e),b=d.toString()}return b}a.exports=c},function(a,b){function c(){}c.prototype={on:function(a,b,c){var d=this.e||(this.e={});return(d[a]||(d[a]=[])).push({fn:b,ctx:c}),this},once:function(a,b,c){function d(){e.off(a,d),b.apply(c,arguments)}var e=this;return d._=b,this.on(a,d,c)},emit:function(a){var b=[].slice.call(arguments,1),c=((this.e||(this.e={}))[a]||[]).slice(),d=0,e=c.length;for(d;dadd( 'editor', "/wp-admin/js/editor$suffix.js", array( 'utils', 'jquery' ), false, 1 ); + $scripts->add( 'clipboard', "/wp-includes/js/clipboard$suffix.js", array(), false, 1 ); + // Back-compat for old DFW. To-do: remove at the end of 2016. $scripts->add( 'wp-fullscreen-stub', "/wp-admin/js/wp-fullscreen-stub$suffix.js", array(), false, 1 ); @@ -1688,7 +1690,7 @@ function wp_default_scripts( &$scripts ) { ) ); - $scripts->add( 'site-health', "/wp-admin/js/site-health$suffix.js", array( 'jquery', 'wp-util', 'wp-a11y' ), false, 1 ); + $scripts->add( 'site-health', "/wp-admin/js/site-health$suffix.js", array( 'clipboard', 'jquery', 'wp-util', 'wp-a11y' ), false, 1 ); $scripts->add( 'updates', "/wp-admin/js/updates$suffix.js", array( 'jquery', 'wp-util', 'wp-a11y' ), false, 1 ); did_action( 'init' ) && $scripts->localize( diff --git a/wp-includes/version.php b/wp-includes/version.php index 267c45e327..f55b6b4971 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.2-alpha-45043'; +$wp_version = '5.2-alpha-45044'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.