Переписал скрипт окошек с нуля, теперь
это хотя бы не выглядит как
привет из 95-го
Oxalate Window
(английский не для вые*она, а потому что юКоз упорно не хочет дружить с ру��кими б�кв�ми)
Планируется линейка виджетов Oxalate.JS, призванная
перевернуть мир фронтенд-разработки скоротать оставшиеся дни отпуска.
Работа над Oxalate Window ещё не закончена; будет добавлена большая гибкость (пользовательские стили, обработчики resize/drag/toggle/close и прочее), анимированный ресайз и перенос окна, а также кастомизация:
var custom = Oxalate.window( { width : "500px", height : "500px" } );
custom({ /* [...] */ });
// теперь все окна, созданные через custom(), будут иметь размеры 500х500
// так можно задать любые парамеры по умолчанию
// это позволит не указывать их каждый раз, если надо создать много окон с похожими параметрами
Доступные параметры:
{
width : "500px", // ширина
height : "300px", // высота (без учёта заголовка - 20px)
headerText : "Header", // заголовок
contentText : "Your text", // тело
animated : true, // анимация при открытии, закрытии, сворачивании
modal : false, // блокировать ли содержимое
notDraggable : false, // запретить перенос окна
noToggleBtn : false, // убрать кнопку "Свернуть"
noCloseBtn : false, // убрать кнопку "Закрыть"
holdIfAny : false, // не открывать если открыто другое окно (окно-чмо)
closeAll : false, // при открытии закрыть все остальные окна (окно-деспот)
holdAll : false, // не открывать другие окна, пока открыто это (окно-лидер)
noCopy : null, /* запретить больше одной копии окна
// по умолчанию null (копии разрешены). Чтобы запретить, надо вместо null передать
// элемент, который вызывает окно, например так:
// A.onclick = function() {
// Oxalate.window({ noCopy : this });
// }
// Таким образом, если второй раз кликнуть по ссылке которое вызывает окно, а оно открыто, то окно не появится
*/
closeIfAny : false, // закрывать при открытии другого окна (пугливое окно)
resize : "11111111", /* стороны для ресайзинга
// 1 - включить, 0 - отключить
// Первые четыре единицы - ресайз вверх, вправо и т.д. по часовой стрелке
// Последние четыре единицы - ресайз по диагонали, вверх-вправо и т.д. по часовой стрелке
// Например, чтобы запретить ресайз по диагонали, следует ввести 11110000
// А чтобы запретить ресайз вообще, следует ввести 00000000
*/
minSize : [100, 100], // мин. размеры
maxSize : [500, 500], // макс. размеры
clickAndClose : false, // закрывать по клику вне окна
buttons : { // пользовательские кнопки
OK : function () { this.close(); OkFunction() },
Cancel : function () { this.close() }
} // надпись на кнопке и функция по клику
// в this передаётся служебный объект oWnd, который предоставляет
// доступ к this.close() - закрыть окно и this.toggle() - свернуть/развернуть
}