Первая версия загрузки bootstrap4

update-to-4.6.2
parent 09be90abdf
commit 6b49f9c7fb
  1. 3
      .gitignore
  2. 75
      README.md
  3. 171
      protected/components/Bootstrap4Component.php
  4. 3872
      public/css/bootstrap-grid.css
  5. 7
      public/css/bootstrap-grid.min.css
  6. 325
      public/css/bootstrap-reboot.css
  7. 8
      public/css/bootstrap-reboot.min.css
  8. 10315
      public/css/bootstrap.css
  9. 7
      public/css/bootstrap.min.css
  10. 6972
      public/js/bootstrap.bundle.js
  11. 7
      public/js/bootstrap.bundle.min.js
  12. 4357
      public/js/bootstrap.js
  13. 7
      public/js/bootstrap.min.js

3
.gitignore vendored

@ -101,6 +101,9 @@ GitHub.sublime-settings
!.vscode/extensions.json
!.vscode/*.code-snippets
# Workspaces
*.code-workspace
# Local History for Visual Studio Code
.history/

@ -1,3 +1,74 @@
# yii1-component-bootstrap4
# yii1-component-boostreap4
Простой компонент для yii-1 для регистрации boostrap4. Сами библиотека и стили тоже присутствует. Расположение - рекомендованное для проектов на yii-1.
Простой компонент для yii-1 для регистрации BootStrap4.
Сами библиотека и стили тоже присутствует.
Расположение - рекомендованное для проектов на yii-1.
## Пример подключения
Выгружаем компонент в protected/extensions/.
В файле config/main.php:
```php
// application components
'components' => array(
...
'bs4' => array(
'class' => 'ext.yii1-component-bootstrap4.protected.components.Bootstrap4Component',
/* доступные параметры */
/*
'debug' => false, // bool, вкл-выкл подключение минифицированных версий js
'bundle' => false, // bool, вкл-выкл подключение js-сборки с popper.js
'reboot' => false, // bool, вкл-выкл подключение css для сбороса стилей
'grid' => false, // bool, вкл-выкл подключение css для использования ТОЛЬКО grid-стилей
'cdn' => false, // bool, включает использование cdn (cloudflare)
'position' => CClientScript::POS_END, // int, где разместить скрипты js
// - CClientScript::POS_HEAD - после title
// - CClientScript::POS_BEGIN - в начале body
// - CClientScript::POS_END - в конце body
'async' => false, // bool, вкл-выкл асинхронную загрузку
// или
'defer' => false, // bool, вкл-выкл асинхронную загрузку, запустить после разбора страницы
'localUrlJs' => '/js/',
'localUrlCss' => '/css/',
// string, ссылка на локальные файлы в document_root
'cdnUrlJs' => 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/{version}/js',
'cdnUrlCss' => 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/{version}/css',
// string, ссылка на путь в cdn. по-умолчанию заменяется {version} на версию библиотеки.
'commonJs' => 'bootstrap.js'
// string, название файла библиотеки
'bundleJs' => 'bootstrap.bundle.js'
// string, название файла библиотеки + popper.js
'commonCss' => 'bootstrap.css'
// string, название файла библиотеки
// или
'gridCss' => 'bootstrap-grid.css'
// string, название файла библиотеки
'rebootCss' => 'bootstrap-reboot.css'
// string, название файла библиотеки
*/
),
...
),
```
## Пример использования
В коде view:
```php
<?php
Yii::app()->bs4->register();
?>
```

@ -0,0 +1,171 @@
<?php
/**
* Простой помошник регистрации Bootstrap4
*/
/**
* Вывод скрипта и стилей
*/
class Bootstrap4Component extends CApplicationComponent
{
const VERSION = '4.6.1';
// Global options
public $debug = null; // null == авто-режим,
// false - использовать .min.js файлы,
// true - использовать несжатые файлы
public $cdn = false; // bool, использовать cdn
public $bundle = false; // bool, использовать версию библиотеки + popper.js
public $reboot = false; // bool, использовать стили для сброса стилей
public $grid = false; // bool, использовать стили только для grid-разметки
public $position = CClientScript::POS_END; // int, где разместить скрипт
public $async = false; // bool, использовать асинхронную загрузку
public $defer = false; // bool, использовать асинхронную загрузку, запустить после разбора страницы
public $localUrlJs = 'js/'; // локальная ссылка, относительно публичного каталога document_root
public $localUrlCss = 'css/'; // локальная ссылка, относительно публичного каталога document_root
public $cdnUrlJs = 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/{version}/js';
public $cdnUrlCss = 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/{version}/css';
// ссылка на CDN
public $commonJs = 'bootstrap.js'; // название файла
public $bundleJs = 'bootstrap.bundle.js'; // название файла + popper.js
public $commonCss = 'bootstrap.css'; // название файла
public $rebootCss = 'bootstrap-reboot.css'; // название файла reboot
public $gridCss = 'bootstrap-grid.css'; // название файла grid
private $_registered = array();
public function init()
{
$this->cdnUrl = str_replace('{version}', self::VERSION, $this->cdnUrl);
if ($this->debug === null) {
if (defined('YII_DEBUG') && YII_DEBUG === true) {
$this->debug = true;
}
if (defined('YII_ENV') && YII_ENV == 'dev') {
$this->debug = true;
}
if (defined('APPLICATION_ENV') && APPLICATION_ENV == 'dev') {
$this->debug = true;
}
}
if ($this->debug === null) {
$this->debug = false;
}
parent::init();
}
public function powered()
{
return '<a href="https://getbootstrap.com/docs/4.6/getting-started/download/">BootStrap</a>';
}
public function getVersion()
{
return self::VERSION;
}
protected function _getUrlJs($jsFile)
{
if ($this->cdn) {
$url = $this->cdnUrlJs;
} else {
$url = Yii::app()->getAssetManager()->publish(dirname(dirname(__DIR__)).'/public/'.$this->localUrlJs, false, -1);
}
if ($this->debug === false) {
if (strpos($jsFile, '.min.js') === false) {
$jsFile = str_replace('.js', '.min.js', $jsFile);
}
}
$url .= '/' . $jsFile;
return $url;
}
protected function _getUrlCss($cssFile)
{
if ($this->cdn) {
$url = $this->cdnUrlCss;
} else {
$url = Yii::app()->getAssetManager()->publish(dirname(dirname(__DIR__)).'/public/'.$this->localUrlCss, false, -1);
}
if ($this->debug === false) {
if (strpos($cssFile, '.min.css') === false) {
$cssFile = str_replace('.css', '.min.css', $cssFile);
}
}
$url .= '/' . $cssFile;
return $url;
}
protected function _registerJs($jsFile)
{
if (empty($this->_registered[$jsFile])) {
$options = array();
if ($this->async) $options['async'] = true;
elseif ($this->defer) $options['defer'] = true;
$url = $this->_getUrlJs($jsFile);
$cs = Yii::app()->clientScript;
$cs->registerScriptFile(
$url,
$this->position,
$options
);
$this->_registered[$jsFile] = true;
}
}
protected function _registerCss($cssFile)
{
if (empty($this->_registered[$cssFile])) {
$options = array();
if ($this->async) {
$options['onload'] = "time.media='all'";
}
$url = $this->_getUrlCss($cssFile);
$cs = Yii::app()->clientScript;
/** @var CClientScript $cs */
$cs->registerLinkTag(
'stylesheet', null,
$url,
'print',
$options
);
$this->_registered[$cssFile] = true;
}
}
public function register()
{
$jsFile = $this->commonJs;
if ($this->bundle) $jsFile = $this->bundleJs;
$this->_registerJs($jsFile);
if ($this->reboot) $this->_registerCss($this->rebootCss);
$cssFile = $this->commonCss;
if ($this->grid) $cssFile = $this->gridCss;
$this->_registerCss($cssFile);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,325 @@
/*!
* Bootstrap Reboot v4.6.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([class]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
[role="button"] {
cursor: pointer;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.6.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save