3.0 source code

This commit is contained in:
agolybev
2015-04-28 17:59:00 +03:00
parent c69fd34bdd
commit 7b3b2248e5
16311 changed files with 1445974 additions and 3108429 deletions

View File

@@ -1,75 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.PlanarSpinner", {
extend: "Ext.field.Spinner",
xtype: "planarspinnerfield",
config: {},
constructor: function () {
var me = this;
me.callParent(arguments);
me.addCls("planar-spinner");
},
updateComponent: function (newComponent) {
this.callParent(arguments);
var innerElement = this.innerElement,
cls = this.getCls();
if (newComponent) {
this.spinDownButton = Ext.widget("button", {
cls: "x-button x-button-base " + cls + "-button " + cls + "-button-down",
iconCls: "spinner-down"
});
this.spinUpButton = Ext.widget("button", {
cls: "x-button x-button-base " + cls + "-button " + cls + "-button-up",
iconCls: "spinner-up"
});
this.downRepeater = this.createRepeater(this.spinDownButton.element, this.onSpinDown);
this.upRepeater = this.createRepeater(this.spinUpButton.element, this.onSpinUp);
}
},
updateGroupButtons: function (newGroupButtons, oldGroupButtons) {
var me = this,
innerElement = me.innerElement,
cls = me.getBaseCls() + "-grouped-buttons";
me.getComponent();
if (newGroupButtons != oldGroupButtons) {
if (newGroupButtons) {
this.addCls(cls);
innerElement.insertFirst(me.spinDownButton.element);
innerElement.appendChild(me.spinUpButton.element);
} else {
this.removeCls(cls);
innerElement.insertFirst(me.spinDownButton.element);
innerElement.appendChild(me.spinUpButton.element);
}
}
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.PlanarSpinner", {
extend: "Ext.field.Spinner",
xtype: "planarspinnerfield",
config: {},
constructor: function () {
var me = this;
me.callParent(arguments);
me.addCls("planar-spinner");
},
updateComponent: function (newComponent) {
this.callParent(arguments);
var innerElement = this.innerElement,
cls = this.getCls();
if (newComponent) {
this.spinDownButton = Ext.widget("button", {
cls: "x-button x-button-base " + cls + "-button " + cls + "-button-down",
iconCls: "spinner-down"
});
this.spinUpButton = Ext.widget("button", {
cls: "x-button x-button-base " + cls + "-button " + cls + "-button-up",
iconCls: "spinner-up"
});
this.downRepeater = this.createRepeater(this.spinDownButton.element, this.onSpinDown);
this.upRepeater = this.createRepeater(this.spinUpButton.element, this.onSpinUp);
}
},
updateGroupButtons: function (newGroupButtons, oldGroupButtons) {
var me = this,
innerElement = me.innerElement,
cls = me.getBaseCls() + "-grouped-buttons";
me.getComponent();
if (newGroupButtons != oldGroupButtons) {
if (newGroupButtons) {
this.addCls(cls);
innerElement.insertFirst(me.spinDownButton.element);
innerElement.appendChild(me.spinUpButton.element);
} else {
this.removeCls(cls);
innerElement.insertFirst(me.spinDownButton.element);
innerElement.appendChild(me.spinUpButton.element);
}
}
}
});

View File

@@ -1,78 +1,78 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.RepeatableButton", {
extend: "Ext.Button",
xtype: "repeatablebutton",
requires: ["Ext.util.TapRepeater"],
initialize: function () {
this.callParent(arguments);
this.repeater = this.createRepeater(this.element, this.onRepeatTap);
},
destroy: function () {
var me = this;
Ext.destroy(me.repeater);
me.callParent(arguments);
},
createRepeater: function (el, fn) {
var me = this,
repeater = Ext.create("Ext.util.TapRepeater", {
el: el,
accelerate: true,
delay: 500
});
repeater.on({
tap: fn,
touchstart: "onTouchStart",
touchend: "onTouchEnd",
scope: me
});
return repeater;
},
onRepeatTap: function (e) {
this.fireAction("tap", [this, e, true], "doTap");
},
doTap: function (me, e, handle) {
if (Ext.isBoolean(handle) && handle) {
this.callParent(arguments);
} else {
return false;
}
},
onTouchStart: function (repeater) {
if (!this.getDisabled()) {
this.element.addCls(Ext.baseCSSPrefix + "button-pressing");
}
},
onTouchEnd: function (repeater) {
this.element.removeCls(Ext.baseCSSPrefix + "button-pressing");
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.RepeatableButton", {
extend: "Ext.Button",
xtype: "repeatablebutton",
requires: ["Ext.util.TapRepeater"],
initialize: function () {
this.callParent(arguments);
this.repeater = this.createRepeater(this.element, this.onRepeatTap);
},
destroy: function () {
var me = this;
Ext.destroy(me.repeater);
me.callParent(arguments);
},
createRepeater: function (el, fn) {
var me = this,
repeater = Ext.create("Ext.util.TapRepeater", {
el: el,
accelerate: true,
delay: 500
});
repeater.on({
tap: fn,
touchstart: "onTouchStart",
touchend: "onTouchEnd",
scope: me
});
return repeater;
},
onRepeatTap: function (e) {
this.fireAction("tap", [this, e, true], "doTap");
},
doTap: function (me, e, handle) {
if (Ext.isBoolean(handle) && handle) {
this.callParent(arguments);
} else {
return false;
}
},
onTouchStart: function (repeater) {
if (!this.getDisabled()) {
this.element.addCls(Ext.baseCSSPrefix + "button-pressing");
}
},
onTouchEnd: function (repeater) {
this.element.removeCls(Ext.baseCSSPrefix + "button-pressing");
}
});

View File

@@ -1,75 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.SettingsList", {
extend: "Ext.List",
alias: "widget.settingslist",
config: {
disableSelection: true,
pinHeaders: false,
grouped: true,
cls: "settings",
ui: "round",
itemTpl: Ext.create("Ext.XTemplate", '<tpl for=".">', '<tpl if="this.hasIcon(icon)">', '<span class="list-icon {icon}"></span>', "</tpl>", '<tpl if="this.hasIcon(icon)">', '<strong class="icon-offset">{setting}</strong>', "<tpl else>", "<strong>{setting}</strong>", "</tpl>", '<tpl if="this.hasChild(child)">', '<span class="list-icon disclosure"></span>', "</tpl>", "</tpl>", {
hasIcon: function (icon) {
return !Ext.isEmpty(icon);
},
hasChild: function (child) {
return !Ext.isEmpty(child);
}
})
},
findGroupHeaderIndices: function () {
var me = this,
store = me.getStore(),
storeLn = store.getCount(),
groups = store.getGroups(),
groupLn = groups.length,
headerIndices = me.headerIndices = {},
footerIndices = me.footerIndices = {},
i,
previousIndex,
firstGroupedRecord,
storeIndex;
me.groups = groups;
for (i = 0; i < groupLn; i++) {
firstGroupedRecord = groups[i].children[0];
storeIndex = store.indexOf(firstGroupedRecord);
headerIndices[storeIndex] = true;
previousIndex = storeIndex - 1;
if (previousIndex >= 0) {
footerIndices[previousIndex] = true;
}
}
footerIndices[storeLn - 1] = true;
return headerIndices;
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.SettingsList", {
extend: "Ext.List",
alias: "widget.settingslist",
config: {
disableSelection: true,
pinHeaders: false,
grouped: true,
cls: "settings",
ui: "round",
itemTpl: Ext.create("Ext.XTemplate", '<tpl for=".">', '<tpl if="this.hasIcon(icon)">', '<span class="list-icon {icon}"></span>', "</tpl>", '<tpl if="this.hasIcon(icon)">', '<strong class="icon-offset">{setting}</strong>', "<tpl else>", "<strong>{setting}</strong>", "</tpl>", '<tpl if="this.hasChild(child)">', '<span class="list-icon disclosure"></span>', "</tpl>", "</tpl>", {
hasIcon: function (icon) {
return !Ext.isEmpty(icon);
},
hasChild: function (child) {
return !Ext.isEmpty(child);
}
})
},
findGroupHeaderIndices: function () {
var me = this,
store = me.getStore(),
storeLn = store.getCount(),
groups = store.getGroups(),
groupLn = groups.length,
headerIndices = me.headerIndices = {},
footerIndices = me.footerIndices = {},
i,
previousIndex,
firstGroupedRecord,
storeIndex;
me.groups = groups;
for (i = 0; i < groupLn; i++) {
firstGroupedRecord = groups[i].children[0];
storeIndex = store.indexOf(firstGroupedRecord);
headerIndices[storeIndex] = true;
previousIndex = storeIndex - 1;
if (previousIndex >= 0) {
footerIndices[previousIndex] = true;
}
}
footerIndices[storeLn - 1] = true;
return headerIndices;
}
});

View File

@@ -1,168 +1,168 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.slider.Vertical", {
extend: "Ext.slider.Slider",
xtype: "verticalslider",
config: {
baseCls: "x-slider-vertical",
thumbConfig: {
draggable: {
direction: "vertical"
}
}
},
refreshOffsetValueRatio: function () {
var valueRange = this.getMaxValue() - this.getMinValue(),
trackHeight = this.elementHeight - this.thumbHeight;
this.offsetValueRatio = trackHeight / valueRange;
},
refreshElementHeight: function () {
this.elementHeight = this.element.dom.offsetHeight;
var thumb = this.getThumb(0);
if (thumb) {
this.thumbHeight = thumb.getElementWidth();
}
},
refresh: function () {
this.refreshElementHeight();
this.refreshValue();
},
onThumbDragStart: function (thumb, e) {
if (e.absDeltaY <= e.absDeltaX) {
return false;
} else {
e.stopPropagation();
}
if (this.getAllowThumbsOverlapping()) {
this.setActiveThumb(thumb);
}
this.dragStartValue = this.getValue()[this.getThumbIndex(thumb)];
this.fireEvent("dragstart", this, thumb, this.dragStartValue, e);
},
onThumbDrag: function (thumb, e, offsetX, offsetY) {
var index = this.getThumbIndex(thumb),
offsetValueRatio = this.offsetValueRatio,
constrainedValue = this.constrainValue(offsetY / offsetValueRatio);
e.stopPropagation();
this.setIndexValue(index, constrainedValue);
this.fireEvent("drag", this, thumb, this.getValue(), e);
return false;
},
setIndexValue: function (index, value, animation) {
var thumb = this.getThumb(index),
values = this.getValue(),
offsetValueRatio = this.offsetValueRatio,
draggable = thumb.getDraggable();
draggable.setOffset(null, value * offsetValueRatio, animation);
values[index] = this.constrainValue(draggable.getOffset().y / offsetValueRatio);
},
updateValue: function (newValue, oldValue) {
var thumbs = this.getThumbs(),
ln = newValue.length,
i;
this.setThumbsCount(ln);
for (i = 0; i < ln; i++) {
thumbs[i].getDraggable().setExtraConstraint(null).setOffset(0, newValue[i] * this.offsetValueRatio);
}
for (i = 0; i < ln; i++) {
this.refreshThumbConstraints(thumbs[i]);
}
},
refreshThumbConstraints: function (thumb) {
var allowThumbsOverlapping = this.getAllowThumbsOverlapping(),
offsetY = thumb.getDraggable().getOffset().y,
thumbs = this.getThumbs(),
index = this.getThumbIndex(thumb),
previousThumb = thumbs[index - 1],
nextThumb = thumbs[index + 1],
thumbHeight = this.thumbHeight;
if (previousThumb) {
previousThumb.getDraggable().addExtraConstraint({
max: {
y: offsetY - ((allowThumbsOverlapping) ? 0 : thumbHeight)
}
});
}
if (nextThumb) {
nextThumb.getDraggable().addExtraConstraint({
min: {
y: offsetY + ((allowThumbsOverlapping) ? 0 : thumbHeight)
}
});
}
},
onTap: function (e) {
if (this.isDisabled()) {
return;
}
var targetElement = Ext.get(e.target);
if (!targetElement || targetElement.hasCls("x-thumb")) {
return;
}
var touchPointY = e.touch.point.y,
element = this.element,
elementY = element.getY(),
offset = touchPointY - elementY - (this.thumbHeight / 2),
value = this.constrainValue(offset / this.offsetValueRatio),
values = this.getValue(),
minDistance = Infinity,
ln = values.length,
i,
absDistance,
testValue,
closestIndex,
oldValue,
thumb;
if (ln === 1) {
closestIndex = 0;
} else {
for (i = 0; i < ln; i++) {
testValue = values[i];
absDistance = Math.abs(testValue - value);
if (absDistance < minDistance) {
minDistance = absDistance;
closestIndex = i;
}
}
}
oldValue = values[closestIndex];
thumb = this.getThumb(closestIndex);
this.setIndexValue(closestIndex, value, this.getAnimation());
this.refreshThumbConstraints(thumb);
if (oldValue !== value) {
this.fireEvent("change", this, thumb, value, oldValue);
}
}
},
function () {
Ext.deprecateProperty(this, "animationDuration", null, "Ext.slider.Slider.animationDuration has been removed");
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.component.slider.Vertical", {
extend: "Ext.slider.Slider",
xtype: "verticalslider",
config: {
baseCls: "x-slider-vertical",
thumbConfig: {
draggable: {
direction: "vertical"
}
}
},
refreshOffsetValueRatio: function () {
var valueRange = this.getMaxValue() - this.getMinValue(),
trackHeight = this.elementHeight - this.thumbHeight;
this.offsetValueRatio = trackHeight / valueRange;
},
refreshElementHeight: function () {
this.elementHeight = this.element.dom.offsetHeight;
var thumb = this.getThumb(0);
if (thumb) {
this.thumbHeight = thumb.getElementWidth();
}
},
refresh: function () {
this.refreshElementHeight();
this.refreshValue();
},
onThumbDragStart: function (thumb, e) {
if (e.absDeltaY <= e.absDeltaX) {
return false;
} else {
e.stopPropagation();
}
if (this.getAllowThumbsOverlapping()) {
this.setActiveThumb(thumb);
}
this.dragStartValue = this.getValue()[this.getThumbIndex(thumb)];
this.fireEvent("dragstart", this, thumb, this.dragStartValue, e);
},
onThumbDrag: function (thumb, e, offsetX, offsetY) {
var index = this.getThumbIndex(thumb),
offsetValueRatio = this.offsetValueRatio,
constrainedValue = this.constrainValue(offsetY / offsetValueRatio);
e.stopPropagation();
this.setIndexValue(index, constrainedValue);
this.fireEvent("drag", this, thumb, this.getValue(), e);
return false;
},
setIndexValue: function (index, value, animation) {
var thumb = this.getThumb(index),
values = this.getValue(),
offsetValueRatio = this.offsetValueRatio,
draggable = thumb.getDraggable();
draggable.setOffset(null, value * offsetValueRatio, animation);
values[index] = this.constrainValue(draggable.getOffset().y / offsetValueRatio);
},
updateValue: function (newValue, oldValue) {
var thumbs = this.getThumbs(),
ln = newValue.length,
i;
this.setThumbsCount(ln);
for (i = 0; i < ln; i++) {
thumbs[i].getDraggable().setExtraConstraint(null).setOffset(0, newValue[i] * this.offsetValueRatio);
}
for (i = 0; i < ln; i++) {
this.refreshThumbConstraints(thumbs[i]);
}
},
refreshThumbConstraints: function (thumb) {
var allowThumbsOverlapping = this.getAllowThumbsOverlapping(),
offsetY = thumb.getDraggable().getOffset().y,
thumbs = this.getThumbs(),
index = this.getThumbIndex(thumb),
previousThumb = thumbs[index - 1],
nextThumb = thumbs[index + 1],
thumbHeight = this.thumbHeight;
if (previousThumb) {
previousThumb.getDraggable().addExtraConstraint({
max: {
y: offsetY - ((allowThumbsOverlapping) ? 0 : thumbHeight)
}
});
}
if (nextThumb) {
nextThumb.getDraggable().addExtraConstraint({
min: {
y: offsetY + ((allowThumbsOverlapping) ? 0 : thumbHeight)
}
});
}
},
onTap: function (e) {
if (this.isDisabled()) {
return;
}
var targetElement = Ext.get(e.target);
if (!targetElement || targetElement.hasCls("x-thumb")) {
return;
}
var touchPointY = e.touch.point.y,
element = this.element,
elementY = element.getY(),
offset = touchPointY - elementY - (this.thumbHeight / 2),
value = this.constrainValue(offset / this.offsetValueRatio),
values = this.getValue(),
minDistance = Infinity,
ln = values.length,
i,
absDistance,
testValue,
closestIndex,
oldValue,
thumb;
if (ln === 1) {
closestIndex = 0;
} else {
for (i = 0; i < ln; i++) {
testValue = values[i];
absDistance = Math.abs(testValue - value);
if (absDistance < minDistance) {
minDistance = absDistance;
closestIndex = i;
}
}
}
oldValue = values[closestIndex];
thumb = this.getThumb(closestIndex);
this.setIndexValue(closestIndex, value, this.getAnimation());
this.refreshThumbConstraints(thumb);
if (oldValue !== value) {
this.fireEvent("change", this, thumb, value, oldValue);
}
}
},
function () {
Ext.deprecateProperty(this, "animationDuration", null, "Ext.slider.Slider.animationDuration has been removed");
});

View File

@@ -1,88 +1,88 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.controller.PopClip", {
extend: "Ext.app.Controller",
config: {
refs: {
popClip: "popclip",
cutButton: "#id-btn-popclip-cut",
copyButton: "#id-btn-popclip-copy",
pasteButton: "#id-btn-popclip-paste"
},
control: {
cutButton: {
tap: "onTapCutButton"
},
copyButton: {
tap: "onTapCopyButton"
},
pasteButton: {
tap: "onTapPasteButton"
}
}
},
init: function () {},
launch: function () {},
setApi: function (o) {
this.api = o;
},
setMode: function (mode) {
var cutButton = this.getCutButton(),
copyButton = this.getCopyButton(),
pasteButton = this.getPasteButton(),
popclip = this.getPopClip();
if (mode === "view") {
cutButton && cutButton.hide();
pasteButton && pasteButton.hide();
popclip && popclip.hide();
} else {
cutButton && cutButton.show();
pasteButton && pasteButton.show();
popclip && popclip.hide();
}
},
onTapCutButton: function () {
this.api && this.api.Cut();
var popclip = this.getPopClip();
popclip && popclip.hide();
},
onTapCopyButton: function () {
this.api && this.api.Copy();
var popclip = this.getPopClip();
popclip && popclip.hide();
},
onTapPasteButton: function () {
this.api && this.api.Paste();
var popclip = this.getPopClip();
popclip && popclip.hide();
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.controller.PopClip", {
extend: "Ext.app.Controller",
config: {
refs: {
popClip: "popclip",
cutButton: "#id-btn-popclip-cut",
copyButton: "#id-btn-popclip-copy",
pasteButton: "#id-btn-popclip-paste"
},
control: {
cutButton: {
tap: "onTapCutButton"
},
copyButton: {
tap: "onTapCopyButton"
},
pasteButton: {
tap: "onTapPasteButton"
}
}
},
init: function () {},
launch: function () {},
setApi: function (o) {
this.api = o;
},
setMode: function (mode) {
var cutButton = this.getCutButton(),
copyButton = this.getCopyButton(),
pasteButton = this.getPasteButton(),
popclip = this.getPopClip();
if (mode === "view") {
cutButton && cutButton.hide();
pasteButton && pasteButton.hide();
popclip && popclip.hide();
} else {
cutButton && cutButton.show();
pasteButton && pasteButton.show();
popclip && popclip.hide();
}
},
onTapCutButton: function () {
this.api && this.api.Cut();
var popclip = this.getPopClip();
popclip && popclip.hide();
},
onTapCopyButton: function () {
this.api && this.api.Copy();
var popclip = this.getPopClip();
popclip && popclip.hide();
},
onTapPasteButton: function () {
this.api && this.api.Paste();
var popclip = this.getPopClip();
popclip && popclip.hide();
}
});

View File

@@ -1,37 +1,37 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.model.SettingItem", {
extend: "Ext.data.Model",
config: {
fields: ["id", "setting", "icon", "child", "group"]
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.model.SettingItem", {
extend: "Ext.data.Model",
config: {
fields: ["id", "setting", "icon", "child", "group"]
}
});

View File

@@ -1,45 +1,45 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.store.SettingsList", {
extend: "Ext.data.Store",
config: {
model: "Common.model.SettingItem",
grouper: {
groupFn: function (record) {
return record.get("group");
},
sorterFn: function () {
return 0;
}
}
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.store.SettingsList", {
extend: "Ext.data.Store",
config: {
model: "Common.model.SettingItem",
grouper: {
groupFn: function (record) {
return record.get("group");
},
sorterFn: function () {
return 0;
}
}
}
});

View File

@@ -1,119 +1,119 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.view.PopClip", {
extend: "Ext.Container",
alias: "widget.popclip",
requires: (["Ext.Panel", "Ext.SegmentedButton"]),
config: {
style: "position: absolute; z-index: 9090; background-color: transparent; width: 2px; height: 2px;"
},
initialize: function () {
var me = this;
me.popClipCmp = me.add({
xtype: "panel",
layout: "fit",
ui: "settings",
style: "padding: 1px;",
hidden: true,
items: [{
xtype: "container",
items: [{
xtype: "segmentedbutton",
style: "margin: 0",
ui: "base",
allowToggle: false,
items: [{
id: "id-btn-popclip-cut",
ui: "base",
style: "font-size: 0.7em; border: 0; box-shadow: none;",
cls: "text-offset-12",
text: this.cutButtonText
},
{
id: "id-btn-popclip-copy",
ui: "base",
style: "font-size: 0.7em; border: 0; box-shadow: none;",
cls: "text-offset-12",
text: this.copyButtonText
},
{
id: "id-btn-popclip-paste",
ui: "base",
style: "font-size: 0.7em; border: 0; box-shadow: none;",
cls: "text-offset-12",
text: this.pasteButtonText
}]
}]
}]
});
this.callParent(arguments);
},
show: function (animation) {
if (Ext.isDefined(this.isAnim)) {
return;
}
this.callParent(arguments);
var popClip = this.popClipCmp;
popClip.showBy(this, "bc-tc?");
popClip.hide();
popClip.show();
popClip.alignTo(this, "bc-tc?");
this.isAnim = true;
Ext.Anim.run(popClip, "pop", {
out: false,
duration: 250,
easing: "ease-out",
autoClear: false
});
popClip.element.on("transitionend", function () {
Ext.isDefined(this.isAnim) && delete this.isAnim;
},
this, {
single: true
});
},
hide: function (animation) {
var me = this;
var safeHide = function (arguments) {
if (Ext.isDefined(me.isAnim)) {
Ext.defer(safeHide, 50, me, arguments);
} else {
Ext.bind(me.callParent, me, arguments);
me.popClipCmp.hide();
}
};
safeHide(arguments);
},
cutButtonText: "Cut",
copyButtonText: "Copy",
pasteButtonText: "Paste"
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.view.PopClip", {
extend: "Ext.Container",
alias: "widget.popclip",
requires: (["Ext.Panel", "Ext.SegmentedButton"]),
config: {
style: "position: absolute; z-index: 9090; background-color: transparent; width: 2px; height: 2px;"
},
initialize: function () {
var me = this;
me.popClipCmp = me.add({
xtype: "panel",
layout: "fit",
ui: "settings",
style: "padding: 1px;",
hidden: true,
items: [{
xtype: "container",
items: [{
xtype: "segmentedbutton",
style: "margin: 0",
ui: "base",
allowToggle: false,
items: [{
id: "id-btn-popclip-cut",
ui: "base",
style: "font-size: 0.7em; border: 0; box-shadow: none;",
cls: "text-offset-12",
text: this.cutButtonText
},
{
id: "id-btn-popclip-copy",
ui: "base",
style: "font-size: 0.7em; border: 0; box-shadow: none;",
cls: "text-offset-12",
text: this.copyButtonText
},
{
id: "id-btn-popclip-paste",
ui: "base",
style: "font-size: 0.7em; border: 0; box-shadow: none;",
cls: "text-offset-12",
text: this.pasteButtonText
}]
}]
}]
});
this.callParent(arguments);
},
show: function (animation) {
if (Ext.isDefined(this.isAnim)) {
return;
}
this.callParent(arguments);
var popClip = this.popClipCmp;
popClip.showBy(this, "bc-tc?");
popClip.hide();
popClip.show();
popClip.alignTo(this, "bc-tc?");
this.isAnim = true;
Ext.Anim.run(popClip, "pop", {
out: false,
duration: 250,
easing: "ease-out",
autoClear: false
});
popClip.element.on("transitionend", function () {
Ext.isDefined(this.isAnim) && delete this.isAnim;
},
this, {
single: true
});
},
hide: function (animation) {
var me = this;
var safeHide = function (arguments) {
if (Ext.isDefined(me.isAnim)) {
Ext.defer(safeHide, 50, me, arguments);
} else {
Ext.bind(me.callParent, me, arguments);
me.popClipCmp.hide();
}
};
safeHide(arguments);
},
cutButtonText: "Cut",
copyButtonText: "Copy",
pasteButtonText: "Paste"
});

View File

@@ -1,48 +1,48 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.view.PopoverPanel", {
extend: "Ext.Panel",
alias: "widget.commonpopoverpanel",
config: {
showAnimation: {
type: "fadeIn",
duration: 100
},
hideAnimation: {
type: "fadeOut",
duration: 100
},
modal: {
cls: "transparent"
}
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.define("Common.view.PopoverPanel", {
extend: "Ext.Panel",
alias: "widget.commonpopoverpanel",
config: {
showAnimation: {
type: "fadeIn",
duration: 100
},
hideAnimation: {
type: "fadeOut",
duration: 100
},
modal: {
cls: "transparent"
}
}
});

View File

@@ -1,38 +1,38 @@
/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.Loader.setConfig({
enabled: true,
disableCaching: false,
paths: {
"Common": "../../common/mobile/lib"
}
/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
Ext.Loader.setConfig({
enabled: true,
disableCaching: false,
paths: {
"Common": "../../common/mobile/lib"
}
});

View File

@@ -1,131 +1,131 @@
@mixin common-toolbar-button($bg-color, $type){
&, .x-toolbar & {
border: 1px solid darken($bg-color, 22%);
border-top-color: darken($bg-color, 15%);
min-height: 29px;
padding-top: 0;
padding-bottom: 0;
@include border-radius(2px);
@include box-shadow(rgba(#fff, .35) 0 1px 0);
@include color-by-background($bg-color);
.x-button-icon {
width: $icons-default-size;
height: $icons-default-size;
}
// Fix Back/Forward buttons
&.x-button-forward, &.x-button-back {
&:before, &:after {
$mask-height: $button-height;
$mask-width: $mask-height/2.23;
-webkit-mask-size: $mask-width $mask-height - .05em;
}
}
& .x-button-label {
@if $type == normal {
color: darken($bg-color, 60%);
text-shadow: lighten($bg-color, 50%) 0 .09em 0;
} @else {
color: lighten($bg-color, 80%);
text-shadow: darken($bg-color, 22%) 0 -.09em 0;
}
}
&.x-button-back:before, &.x-button-forward:before {
background: darken($bg-color, 20%);
}
&, &.x-button-back:after, &.x-button-forward:after {
@include background-gradient($bg-color, color_stops(lighten($bg-color, 100%), lighten($bg-color, 13%) 3%, $bg-color));
}
&.x-button-pressing, &.x-button-pressed, &.x-button-active {
&, &:after {
@if $type == normal {
@include background-gradient(darken($bg-color, 40%), 'recessed');
} @else {
@include background-gradient(darken($bg-color, 10%), 'recessed');
}
}
& .x-button-label {
@if $type == normal {
color: lighten($bg-color, 80%);
text-shadow: darken($bg-color, 50%) 0 .09em 0;
} @else {
text-shadow: darken($bg-color, 22%) 0 .09em 0;
}
}
}
}
}
@mixin common-button-ui($ui-label, $color, $type: 'normal') {
// Buttons
.x-button.x-button-#{$ui-label}{
padding: .3em 8px;
@include common-toolbar-button($color, $type);
@if $ui-label == back {
&, .x-toolbar & {
@include border-radius(4px);
@include border-top-left-radius(6px);
@include border-bottom-left-radius(6px);
}
}
}
// SegmentedButtons
.x-segmentedbutton-base {
&:not(.divided) {
margin: 0 .2em;
.x-button-#{$ui-label} {
margin: 0;
@include border-radius(0 !important);
&:not(.x-first) {
border-left: 0 !important;
}
}
}
&.divided {
.x-button-#{$ui-label} {
&:not(.x-first) {
border-left: 1px solid darken($color, 22%);
}
&:not(.x-last) {
margin-right: 7px;
}
}
}
.x-button-#{$ui-label} {
&.x-first {
@include border-left-radius(2px !important);
}
&.x-last {
@include border-right-radius(2px !important);
}
}
}
}
// Additional button styles
.x-button.border-radius-10 {
@include border-radius(10px !important);
@mixin common-toolbar-button($bg-color, $type){
&, .x-toolbar & {
border: 1px solid darken($bg-color, 22%);
border-top-color: darken($bg-color, 15%);
min-height: 29px;
padding-top: 0;
padding-bottom: 0;
@include border-radius(2px);
@include box-shadow(rgba(#fff, .35) 0 1px 0);
@include color-by-background($bg-color);
.x-button-icon {
width: $icons-default-size;
height: $icons-default-size;
}
// Fix Back/Forward buttons
&.x-button-forward, &.x-button-back {
&:before, &:after {
$mask-height: $button-height;
$mask-width: $mask-height/2.23;
-webkit-mask-size: $mask-width $mask-height - .05em;
}
}
& .x-button-label {
@if $type == normal {
color: darken($bg-color, 60%);
text-shadow: lighten($bg-color, 50%) 0 .09em 0;
} @else {
color: lighten($bg-color, 80%);
text-shadow: darken($bg-color, 22%) 0 -.09em 0;
}
}
&.x-button-back:before, &.x-button-forward:before {
background: darken($bg-color, 20%);
}
&, &.x-button-back:after, &.x-button-forward:after {
@include background-gradient($bg-color, color_stops(lighten($bg-color, 100%), lighten($bg-color, 13%) 3%, $bg-color));
}
&.x-button-pressing, &.x-button-pressed, &.x-button-active {
&, &:after {
@if $type == normal {
@include background-gradient(darken($bg-color, 40%), 'recessed');
} @else {
@include background-gradient(darken($bg-color, 10%), 'recessed');
}
}
& .x-button-label {
@if $type == normal {
color: lighten($bg-color, 80%);
text-shadow: darken($bg-color, 50%) 0 .09em 0;
} @else {
text-shadow: darken($bg-color, 22%) 0 .09em 0;
}
}
}
}
}
@mixin common-button-ui($ui-label, $color, $type: 'normal') {
// Buttons
.x-button.x-button-#{$ui-label}{
padding: .3em 8px;
@include common-toolbar-button($color, $type);
@if $ui-label == back {
&, .x-toolbar & {
@include border-radius(4px);
@include border-top-left-radius(6px);
@include border-bottom-left-radius(6px);
}
}
}
// SegmentedButtons
.x-segmentedbutton-base {
&:not(.divided) {
margin: 0 .2em;
.x-button-#{$ui-label} {
margin: 0;
@include border-radius(0 !important);
&:not(.x-first) {
border-left: 0 !important;
}
}
}
&.divided {
.x-button-#{$ui-label} {
&:not(.x-first) {
border-left: 1px solid darken($color, 22%);
}
&:not(.x-last) {
margin-right: 7px;
}
}
}
.x-button-#{$ui-label} {
&.x-first {
@include border-left-radius(2px !important);
}
&.x-last {
@include border-right-radius(2px !important);
}
}
}
}
// Additional button styles
.x-button.border-radius-10 {
@include border-radius(10px !important);
}

View File

@@ -1,34 +1,34 @@
/*
* Color palette
*/
.x-dataview {
&.color {
.x-dataview-inner.x-scroll-scroller {
width: auto !important;
height: auto !important;
@include border-radius($panel-border-radius);
.x-dataview-container {
margin-top: 12px;
margin-left: 12px;
}
}
.x-dataview-item {
display: inline-block;
&.x-item-selected .item-inner{
@include box-shadow(adjust-hue(saturate($active-color, 100%), -14deg) 0 0 0 4px);
}
.item-inner {
display: inline-block;
width: 50px;
height: 50px;
border: 1px solid lighten($base-color, 5%);
margin: 6px;
}
}
}
/*
* Color palette
*/
.x-dataview {
&.color {
.x-dataview-inner.x-scroll-scroller {
width: auto !important;
height: auto !important;
@include border-radius($panel-border-radius);
.x-dataview-container {
margin-top: 12px;
margin-left: 12px;
}
}
.x-dataview-item {
display: inline-block;
&.x-item-selected .item-inner{
@include box-shadow(adjust-hue(saturate($active-color, 100%), -14deg) 0 0 0 4px);
}
.item-inner {
display: inline-block;
width: 50px;
height: 50px;
border: 1px solid lighten($base-color, 5%);
margin: 6px;
}
}
}
}

View File

@@ -1,18 +1,18 @@
.x-msgbox {
@include background-gradient($base-color, color_stops(darken($base-color, 20%), darken($base-color, 40%) 10%, darken($base-color, 40%)));
.x-toolbar {
&.x-docked-bottom .x-button .x-button-label {
font-size: .9em;
line-height: 2em;
}
}
.x-title {
font-size: 1em;
line-height: 1.4em;
color: #ffffff;
@include bevel-by-background($sheet-bg-color);
}
.x-msgbox {
@include background-gradient($base-color, color_stops(darken($base-color, 20%), darken($base-color, 40%) 10%, darken($base-color, 40%)));
.x-toolbar {
&.x-docked-bottom .x-button .x-button-label {
font-size: .9em;
line-height: 2em;
}
}
.x-title {
font-size: 1em;
line-height: 1.4em;
color: #ffffff;
@include bevel-by-background($sheet-bg-color);
}
}

View File

@@ -1,65 +1,65 @@
@mixin common-planar-spinner {
.x-spinner.planar-spinner {
&.x-field-grouped-buttons {
background: transparent;
&.x-field {
min-height: 0;
}
.x-form-label {
background: transparent;
span {
font-size: inherit;
}
}
.x-button {
margin-top: 9px;
margin-bottom: 9px;
padding: 0 8px !important;
}
.x-form-label {
padding: 0.16em;
}
.x-field-input {
@include box-shadow(darken($base-color, 10%) 0 3px 4px -2px inset);
background: lighten($base-color, 100%);
min-width: 2.3em;
.x-input-el{
text-align: center;
@include border-radius(0);
//position: absolute;
//bottom: 0;
//top: 0;
//padding: 0;
padding: 3px 0 4px; //TODO: refactor it
min-height: 0;
border-top: 1px solid darken($base-color, 26%);
border-bottom: 1px solid darken($base-color, 26%);
}
}
.x-spinner-button {
width: auto;
border: 1px solid darken($base-color, 22%) !important;
margin: 0;
}
.x-spinner-button-down {
margin-right: 0;
@include border-top-right-radius(0);
@include border-bottom-right-radius(0);
}
.x-spinner-button-up {
@include border-top-left-radius(0);
@include border-bottom-left-radius(0);
}
}
}
@mixin common-planar-spinner {
.x-spinner.planar-spinner {
&.x-field-grouped-buttons {
background: transparent;
&.x-field {
min-height: 0;
}
.x-form-label {
background: transparent;
span {
font-size: inherit;
}
}
.x-button {
margin-top: 9px;
margin-bottom: 9px;
padding: 0 8px !important;
}
.x-form-label {
padding: 0.16em;
}
.x-field-input {
@include box-shadow(darken($base-color, 10%) 0 3px 4px -2px inset);
background: lighten($base-color, 100%);
min-width: 2.3em;
.x-input-el{
text-align: center;
@include border-radius(0);
//position: absolute;
//bottom: 0;
//top: 0;
//padding: 0;
padding: 3px 0 4px; //TODO: refactor it
min-height: 0;
border-top: 1px solid darken($base-color, 26%);
border-bottom: 1px solid darken($base-color, 26%);
}
}
.x-spinner-button {
width: auto;
border: 1px solid darken($base-color, 22%) !important;
margin: 0;
}
.x-spinner-button-down {
margin-right: 0;
@include border-top-right-radius(0);
@include border-bottom-right-radius(0);
}
.x-spinner-button-up {
@include border-top-left-radius(0);
@include border-bottom-left-radius(0);
}
}
}
}

View File

@@ -1,137 +1,137 @@
.x-list.settings {
$icon-size: 24px;
@include border-radius($panel-border-radius);
&.x-list-round .x-scroll-view {
@include border-radius($panel-border-radius);
}
&.x-list-round.x-list-grouped {
.x-list-header-wrap {
.x-dock-horizontal {
padding-top: 0;
}
.x-list-header {
display: none;
}
}
.x-list-footer-wrap {
&.x-list-item-last {
.x-dock-horizontal {
padding-bottom: 0;
}
}
}
.x-list-item {
.x-dock-horizontal {
border: 1px solid darken($base-color, 6%);
border-width: 1px 1px 0 1px;
background: lighten($base-color, 100%);
.x-innerhtml {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
&.x-item-pressed {
.x-dock-horizontal {
//@include background-gradient($list-active-color, $list-active-gradient);
@include background-image(linear-gradient(top, color_stops(lighten($list-active-color, 5%), darken($list-active-color, 10%))));
@include color-by-background($list-active-color);
//@include bevel-by-background($list-active-color);
.disclosure {
background-position: -1 * $settinglist-icon-size 0;
}
}
}
&.x-item-selected {
.x-dock-horizontal {
color: inherit;
.x-list-item-body {
padding-right: 1.2em;
}
&:after {
content: "";
width: $settinglist-icon-size;
height: $settinglist-icon-size;
position: absolute;
top: ($global-list-height - $settinglist-icon-size) / 2;
right: ($global-list-height - $settinglist-icon-size) / 2;
background-image: url($icons-setting-list-image);
background-size: $settinglist-image-width $settinglist-image-height;
background-position: 0 -1 * $settinglist-icon-size;
}
}
&.x-item-pressed {
.x-dock-horizontal {
color: lighten($base-color, 100%);
&:after {
background-position: -1 * $settinglist-icon-size -1 * $settinglist-icon-size;
}
}
}
}
.list-icon {
width: $icon-size;
height: $icon-size;
position: absolute;
}
// offset text from icom
.icon-offset {
margin-left: $icon-size + 6px;
}
.disclosure {
right: $icon-size / 2;
background-image: url($icons-setting-list-image);
background-size: $settinglist-image-width $settinglist-image-height;
background-position: 0 0;
}
}
.x-list-header-wrap.x-list-footer-wrap {
.x-dock-body {
@include border-radius($form-fieldset-radius);
}
}
.x-list-footer-wrap {
.x-dock-horizontal {
border: none;
background: transparent;
padding-bottom: $global-list-height * .3;
> .x-dock-body {
border: 1px solid darken($base-color, 6%);
background: lighten($base-color, 100%);
}
}
&.x-item-pressed {
.x-dock-horizontal {
background: transparent;
> .x-dock-body {
@include border-bottom-radius($form-fieldset-radius);
//@include background-gradient($list-active-color, $list-active-gradient);
@include background-image(linear-gradient(top, color_stops(lighten($list-active-color, 5%), darken($list-active-color, 10%))));
@include color-by-background($list-active-color);
//@include bevel-by-background($list-active-color);
}
}
}
}
}
.x-list.settings {
$icon-size: 24px;
@include border-radius($panel-border-radius);
&.x-list-round .x-scroll-view {
@include border-radius($panel-border-radius);
}
&.x-list-round.x-list-grouped {
.x-list-header-wrap {
.x-dock-horizontal {
padding-top: 0;
}
.x-list-header {
display: none;
}
}
.x-list-footer-wrap {
&.x-list-item-last {
.x-dock-horizontal {
padding-bottom: 0;
}
}
}
.x-list-item {
.x-dock-horizontal {
border: 1px solid darken($base-color, 6%);
border-width: 1px 1px 0 1px;
background: lighten($base-color, 100%);
.x-innerhtml {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
&.x-item-pressed {
.x-dock-horizontal {
//@include background-gradient($list-active-color, $list-active-gradient);
@include background-image(linear-gradient(top, color_stops(lighten($list-active-color, 5%), darken($list-active-color, 10%))));
@include color-by-background($list-active-color);
//@include bevel-by-background($list-active-color);
.disclosure {
background-position: -1 * $settinglist-icon-size 0;
}
}
}
&.x-item-selected {
.x-dock-horizontal {
color: inherit;
.x-list-item-body {
padding-right: 1.2em;
}
&:after {
content: "";
width: $settinglist-icon-size;
height: $settinglist-icon-size;
position: absolute;
top: ($global-list-height - $settinglist-icon-size) / 2;
right: ($global-list-height - $settinglist-icon-size) / 2;
background-image: url($icons-setting-list-image);
background-size: $settinglist-image-width $settinglist-image-height;
background-position: 0 -1 * $settinglist-icon-size;
}
}
&.x-item-pressed {
.x-dock-horizontal {
color: lighten($base-color, 100%);
&:after {
background-position: -1 * $settinglist-icon-size -1 * $settinglist-icon-size;
}
}
}
}
.list-icon {
width: $icon-size;
height: $icon-size;
position: absolute;
}
// offset text from icom
.icon-offset {
margin-left: $icon-size + 6px;
}
.disclosure {
right: $icon-size / 2;
background-image: url($icons-setting-list-image);
background-size: $settinglist-image-width $settinglist-image-height;
background-position: 0 0;
}
}
.x-list-header-wrap.x-list-footer-wrap {
.x-dock-body {
@include border-radius($form-fieldset-radius);
}
}
.x-list-footer-wrap {
.x-dock-horizontal {
border: none;
background: transparent;
padding-bottom: $global-list-height * .3;
> .x-dock-body {
border: 1px solid darken($base-color, 6%);
background: lighten($base-color, 100%);
}
}
&.x-item-pressed {
.x-dock-horizontal {
background: transparent;
> .x-dock-body {
@include border-bottom-radius($form-fieldset-radius);
//@include background-gradient($list-active-color, $list-active-gradient);
@include background-image(linear-gradient(top, color_stops(lighten($list-active-color, 5%), darken($list-active-color, 10%))));
@include color-by-background($list-active-color);
//@include bevel-by-background($list-active-color);
}
}
}
}
}
}

View File

@@ -1,109 +1,109 @@
@mixin common-settings-panel {
.x-panel.x-panel-settings {
@include background-gradient($base-color, color_stops(lighten($base-color, 13%), $base-color));
@include box-shadow(lighten($base-color, 100%) 0 1px 0 inset, rgba(0, 0, 0, .3) 0 .2em .6em);
border: 1px solid darken($base-color, 32%);
.x-anchor-top {
$anchor-height: .7em;
$anchor-width: $anchor-height * 2.33;
background-color: darken($base-color, 32%);
margin-top: -$anchor-height + 0.02em + 0.06em;
@include box-shadow(lighten($base-color, 100%) 0 -1px 0 0 inset);
&:after {
content: '';
position: absolute;
width: $anchor-width;
height: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_top.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
@include background-gradient($base-color, color_stops(lighten($base-color, 15%), lighten($base-color, 13%)));
top: 1px !important;
}
}
.x-anchor-bottom {
$anchor-height: .7em;
$anchor-width: $anchor-height * 2.33;
height: $anchor-height + .1em;
background-color: darken($base-color, 32%);
margin-top: -0.15em;
@include box-shadow(lighten($base-color, 100%) 0 -1px 0 0 inset);
&:after {
content: '';
position: absolute;
width: $anchor-width;
height: $anchor-height + .1em;
-webkit-mask: 0 0 theme_image($theme-name, "tip_bottom.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
@include background-gradient($base-color, color_stops($base-color, darken($base-color, 5%)));
top: -1px !important;
}
}
.x-panel-inner {
background: transparent;
}
.x-navigation-bar {
border-bottom: none;
margin-top: -6px;
background: transparent;
overflow: hidden;
.x-title {
color: darken($base-color, 60%);
text-shadow: lighten($base-color, 50%) 0 .08em 0;
}
}
.x-navigationview.plain {
.x-navigationview-inner {
background: transparent;
@include border-radius(0);
&:after {
content: none;
}
}
}
.x-navigationview-inner {
background-color: lighten($base-color, 14%);
@include border-radius($panel-border-radius);
&:after {
@include insertion(100%, 100%);
pointer-events: none;
@include border-radius($panel-border-radius);
@include single-box-shadow(darken($base-color, 1%), 0, 1px, 2px, 2px, inset);
border: 1px solid darken($base-color, 32%);
}
}
}
.x-label.info .x-innerhtml {
color: darken($base-color, 30%);
text-shadow: 0 1px 0 lighten($base-color, 50%);
text-align: center;
}
.btn-input-image input[type="file"] {
opacity: 0;
position: absolute;
left: 0;
top: 0;
}
// custom mask
.x-mask.transparent {
background: transparent;
}
.round {
@include border-radius($panel-border-radius);
}
@mixin common-settings-panel {
.x-panel.x-panel-settings {
@include background-gradient($base-color, color_stops(lighten($base-color, 13%), $base-color));
@include box-shadow(lighten($base-color, 100%) 0 1px 0 inset, rgba(0, 0, 0, .3) 0 .2em .6em);
border: 1px solid darken($base-color, 32%);
.x-anchor-top {
$anchor-height: .7em;
$anchor-width: $anchor-height * 2.33;
background-color: darken($base-color, 32%);
margin-top: -$anchor-height + 0.02em + 0.06em;
@include box-shadow(lighten($base-color, 100%) 0 -1px 0 0 inset);
&:after {
content: '';
position: absolute;
width: $anchor-width;
height: $anchor-height;
-webkit-mask: 0 0 theme_image($theme-name, "tip_top.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
@include background-gradient($base-color, color_stops(lighten($base-color, 15%), lighten($base-color, 13%)));
top: 1px !important;
}
}
.x-anchor-bottom {
$anchor-height: .7em;
$anchor-width: $anchor-height * 2.33;
height: $anchor-height + .1em;
background-color: darken($base-color, 32%);
margin-top: -0.15em;
@include box-shadow(lighten($base-color, 100%) 0 -1px 0 0 inset);
&:after {
content: '';
position: absolute;
width: $anchor-width;
height: $anchor-height + .1em;
-webkit-mask: 0 0 theme_image($theme-name, "tip_bottom.png") no-repeat;
-webkit-mask-size: $anchor-width $anchor-height;
@include background-gradient($base-color, color_stops($base-color, darken($base-color, 5%)));
top: -1px !important;
}
}
.x-panel-inner {
background: transparent;
}
.x-navigation-bar {
border-bottom: none;
margin-top: -6px;
background: transparent;
overflow: hidden;
.x-title {
color: darken($base-color, 60%);
text-shadow: lighten($base-color, 50%) 0 .08em 0;
}
}
.x-navigationview.plain {
.x-navigationview-inner {
background: transparent;
@include border-radius(0);
&:after {
content: none;
}
}
}
.x-navigationview-inner {
background-color: lighten($base-color, 14%);
@include border-radius($panel-border-radius);
&:after {
@include insertion(100%, 100%);
pointer-events: none;
@include border-radius($panel-border-radius);
@include single-box-shadow(darken($base-color, 1%), 0, 1px, 2px, 2px, inset);
border: 1px solid darken($base-color, 32%);
}
}
}
.x-label.info .x-innerhtml {
color: darken($base-color, 30%);
text-shadow: 0 1px 0 lighten($base-color, 50%);
text-align: center;
}
.btn-input-image input[type="file"] {
opacity: 0;
position: absolute;
left: 0;
top: 0;
}
// custom mask
.x-mask.transparent {
background: transparent;
}
.round {
@include border-radius($panel-border-radius);
}
}

View File

@@ -1,102 +1,102 @@
$shadow-width: .065em; // Space between tip and its shadow
/**
* // SCSS
* @include application-toolbar-ui('edit', $base-color);
*/
@mixin common-toolbar-ui($ui-label, $color) {
$toolbar-border-color: darken($color, 50%);
$toolbar-button-color: darken($color, 5%);
.x-toolbar-#{$ui-label} {
@if $ui-label == search {
@include background-gradient($color, color_stops($color, lighten($color, 11%) 20%, lighten($color, 11%)));
}
@else {
@include background-gradient($color, color_stops(lighten($color, 100%), lighten($color, 13%) 3%, $color));
}
border-color: $toolbar-border-color;
.x-title {
@include color-by-background($color);
@include bevel-by-background($color);
}
&.x-docked-top {
border-bottom: 1px solid darken($color, 22%);
}
.x-button,
.x-field-select .x-component-outer,
.x-field-select .x-component-outer:before {
@include toolbar-button($toolbar-button-color, matte);
}
.x-label,
.x-form-label {
font-weight: normal;
color: darken($color, 50%);
text-shadow: 0 1px 0 lighten($color, 100%);
}
}
}
@mixin common-shadow-iconmask($name, $url) {
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name},
.x-list-item .x-icon-mask.#{$name} {
background-image: none;
background-color: transparent;
&:before, &:after {
-webkit-mask-image: inline-image($url);
}
}
}
/**
* // SCSS
* @include application-toolbar-iconmask('code3', '../../img/toolbar/code3.png');
*/
@mixin common-toolbar-iconmask($name) {
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name} {
//background-image: none;
//background-color: transparent;
$default-mask-offset: 0.15em;
&:before, &:after {
@include insertion($toolbar-icon-size, $toolbar-icon-size, $button-stroke-weight, auto);
z-index: 2;
//-webkit-mask: 0 0 inline-image($url) no-repeat;
-webkit-mask-size: $toolbar-icon-size;
};
&:before {
top: $default-mask-offset + $shadow-width;
}
&:after {
top: $default-mask-offset;
}
}
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name} {
&:before {
@include background-image(linear-gradient(color_stops(#ffffff, #f3f3f3)));
}
&:after {
@include background-image(linear-gradient(color_stops(#292929, #646464)));
}
}
.x-button.x-button-pressing .x-button-icon.x-icon-mask.#{$name} {
&:before {
@include background-image(linear-gradient(color-stops(black, black)));
}
&:after {
@include background-image(linear-gradient(color-stops(white, white)));
}
}
$shadow-width: .065em; // Space between tip and its shadow
/**
* // SCSS
* @include application-toolbar-ui('edit', $base-color);
*/
@mixin common-toolbar-ui($ui-label, $color) {
$toolbar-border-color: darken($color, 50%);
$toolbar-button-color: darken($color, 5%);
.x-toolbar-#{$ui-label} {
@if $ui-label == search {
@include background-gradient($color, color_stops($color, lighten($color, 11%) 20%, lighten($color, 11%)));
}
@else {
@include background-gradient($color, color_stops(lighten($color, 100%), lighten($color, 13%) 3%, $color));
}
border-color: $toolbar-border-color;
.x-title {
@include color-by-background($color);
@include bevel-by-background($color);
}
&.x-docked-top {
border-bottom: 1px solid darken($color, 22%);
}
.x-button,
.x-field-select .x-component-outer,
.x-field-select .x-component-outer:before {
@include toolbar-button($toolbar-button-color, matte);
}
.x-label,
.x-form-label {
font-weight: normal;
color: darken($color, 50%);
text-shadow: 0 1px 0 lighten($color, 100%);
}
}
}
@mixin common-shadow-iconmask($name, $url) {
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name},
.x-list-item .x-icon-mask.#{$name} {
background-image: none;
background-color: transparent;
&:before, &:after {
-webkit-mask-image: inline-image($url);
}
}
}
/**
* // SCSS
* @include application-toolbar-iconmask('code3', '../../img/toolbar/code3.png');
*/
@mixin common-toolbar-iconmask($name) {
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name} {
//background-image: none;
//background-color: transparent;
$default-mask-offset: 0.15em;
&:before, &:after {
@include insertion($toolbar-icon-size, $toolbar-icon-size, $button-stroke-weight, auto);
z-index: 2;
//-webkit-mask: 0 0 inline-image($url) no-repeat;
-webkit-mask-size: $toolbar-icon-size;
};
&:before {
top: $default-mask-offset + $shadow-width;
}
&:after {
top: $default-mask-offset;
}
}
.x-tab .x-button-icon.#{$name},
.x-button .x-button-icon.x-icon-mask.#{$name} {
&:before {
@include background-image(linear-gradient(color_stops(#ffffff, #f3f3f3)));
}
&:after {
@include background-image(linear-gradient(color_stops(#292929, #646464)));
}
}
.x-button.x-button-pressing .x-button-icon.x-icon-mask.#{$name} {
&:before {
@include background-image(linear-gradient(color-stops(black, black)));
}
&:after {
@include background-image(linear-gradient(color-stops(white, white)));
}
}
}