DataKey chips dnd improvements. Update AngularJS Material version to 1.1.19.
This commit is contained in:
parent
b185080ae9
commit
a3c512c159
3107
ui/package-lock.json
generated
3107
ui/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -26,8 +26,8 @@
|
|||||||
"angular-fullscreen": "git://github.com/fabiobiondi/angular-fullscreen.git#master",
|
"angular-fullscreen": "git://github.com/fabiobiondi/angular-fullscreen.git#master",
|
||||||
"angular-gridster": "^0.13.14",
|
"angular-gridster": "^0.13.14",
|
||||||
"angular-hotkeys": "^1.7.0",
|
"angular-hotkeys": "^1.7.0",
|
||||||
"angular-jwt": "^0.1.6",
|
"angular-jwt": "^0.1.11",
|
||||||
"angular-material": "1.1.13",
|
"angular-material": "1.1.19",
|
||||||
"angular-material-data-table": "^0.10.9",
|
"angular-material-data-table": "^0.10.9",
|
||||||
"angular-material-expansion-panel": "^0.7.2",
|
"angular-material-expansion-panel": "^0.7.2",
|
||||||
"angular-material-icons": "^0.7.1",
|
"angular-material-icons": "^0.7.1",
|
||||||
@ -56,27 +56,27 @@
|
|||||||
"flot.curvedlines": "git://github.com/MichaelZinsmaier/CurvedLines.git#master",
|
"flot.curvedlines": "git://github.com/MichaelZinsmaier/CurvedLines.git#master",
|
||||||
"font-awesome": "^4.6.3",
|
"font-awesome": "^4.6.3",
|
||||||
"javascript-detect-element-resize": "^0.5.3",
|
"javascript-detect-element-resize": "^0.5.3",
|
||||||
"jquery": "^3.1.0",
|
"jquery": "^3.4.1",
|
||||||
"jquery.terminal": "^1.5.0",
|
"jquery.terminal": "^1.5.0",
|
||||||
"js-beautify": "^1.6.4",
|
"js-beautify": "^1.10.0",
|
||||||
"json-schema-defaults": "^0.2.0",
|
"json-schema-defaults": "^0.2.0",
|
||||||
"jstree": "^3.3.7",
|
"jstree": "^3.3.8",
|
||||||
"jstree-bootstrap-theme": "^1.0.1",
|
"jstree-bootstrap-theme": "^1.0.1",
|
||||||
"leaflet": "^1.0.3",
|
"leaflet": "^1.5.1",
|
||||||
"leaflet-polylinedecorator": "^1.6.0",
|
"leaflet-polylinedecorator": "^1.6.0",
|
||||||
"leaflet-providers": "^1.1.17",
|
"leaflet-providers": "^1.8.0",
|
||||||
"material-ui": "^0.16.1",
|
"material-ui": "^0.16.1",
|
||||||
"material-ui-number-input": "^5.0.16",
|
"material-ui-number-input": "^5.0.16",
|
||||||
"md-color-picker": "0.2.6",
|
"md-color-picker": "0.2.6",
|
||||||
"md-date-range-picker": "^0.8.4",
|
"md-date-range-picker": "^0.8.4",
|
||||||
"mdPickers": "git://github.com/alenaksu/mdPickers.git#0.7.5",
|
"mdPickers": "git://github.com/alenaksu/mdPickers.git#0.7.5",
|
||||||
"moment": "^2.15.0",
|
"moment": "^2.24.0",
|
||||||
"ngFlowchart": "git://github.com/thingsboard/ngFlowchart.git#master",
|
"ngFlowchart": "git://github.com/thingsboard/ngFlowchart.git#master",
|
||||||
"ngclipboard": "^1.1.1",
|
"ngclipboard": "^1.1.1",
|
||||||
"ngreact": "^0.3.0",
|
"ngreact": "^0.3.0",
|
||||||
"objectpath": "^1.2.1",
|
"objectpath": "^1.2.1",
|
||||||
"oclazyload": "^1.0.9",
|
"oclazyload": "^1.0.9",
|
||||||
"raphael": "^2.2.7",
|
"raphael": "^2.2.8",
|
||||||
"rc-select": "^6.6.1",
|
"rc-select": "^6.6.1",
|
||||||
"react": "^15.4.1",
|
"react": "^15.4.1",
|
||||||
"react-ace": "^4.1.0",
|
"react-ace": "^4.1.0",
|
||||||
@ -101,11 +101,11 @@
|
|||||||
"babel-preset-es2015": "^6.14.0",
|
"babel-preset-es2015": "^6.14.0",
|
||||||
"babel-preset-react": "^6.16.0",
|
"babel-preset-react": "^6.16.0",
|
||||||
"compression-webpack-plugin": "^1.1.11",
|
"compression-webpack-plugin": "^1.1.11",
|
||||||
"connect-history-api-fallback": "^1.3.0",
|
"connect-history-api-fallback": "^1.6.0",
|
||||||
"copy-webpack-plugin": "^3.0.1",
|
"copy-webpack-plugin": "^3.0.1",
|
||||||
"cross-env": "^3.2.4",
|
"cross-env": "^3.2.4",
|
||||||
"css-loader": "^0.25.0",
|
"css-loader": "^0.25.0",
|
||||||
"directory-tree": "^2.1.0",
|
"directory-tree": "^2.2.3",
|
||||||
"eslint": "^3.4.0",
|
"eslint": "^3.4.0",
|
||||||
"eslint-config-angular": "^0.5.0",
|
"eslint-config-angular": "^0.5.0",
|
||||||
"eslint-loader": "^1.5.0",
|
"eslint-loader": "^1.5.0",
|
||||||
@ -113,6 +113,7 @@
|
|||||||
"eslint-plugin-import": "^1.14.0",
|
"eslint-plugin-import": "^1.14.0",
|
||||||
"extract-text-webpack-plugin": "^1.0.1",
|
"extract-text-webpack-plugin": "^1.0.1",
|
||||||
"file-loader": "^0.9.0",
|
"file-loader": "^0.9.0",
|
||||||
|
"happypack": "^5.0.1",
|
||||||
"html-loader": "^0.4.3",
|
"html-loader": "^0.4.3",
|
||||||
"html-minifier": "^3.2.2",
|
"html-minifier": "^3.2.2",
|
||||||
"html-minifier-loader": "^1.3.4",
|
"html-minifier-loader": "^1.3.4",
|
||||||
@ -123,26 +124,25 @@
|
|||||||
"less-loader": "^2.2.3",
|
"less-loader": "^2.2.3",
|
||||||
"ng-annotate-loader": "^0.1.1",
|
"ng-annotate-loader": "^0.1.1",
|
||||||
"ngtemplate-loader": "^1.3.1",
|
"ngtemplate-loader": "^1.3.1",
|
||||||
"node-sass": "^4.5.3",
|
"node-sass": "^4.12.0",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
"raw-loader": "^0.5.1",
|
"raw-loader": "^0.5.1",
|
||||||
"react-hot-loader": "^3.0.0-beta.6",
|
"react-hot-loader": "^3.0.0-beta.6",
|
||||||
"sass-loader": "^4.0.2",
|
"sass-loader": "^4.0.2",
|
||||||
"style-loader": "^0.13.1",
|
"style-loader": "^0.13.1",
|
||||||
"stylelint": "^9.5.0",
|
"stylelint": "^9.10.1",
|
||||||
"stylelint-config-recommended-scss": "^3.2.0",
|
"stylelint-config-recommended-scss": "^3.3.0",
|
||||||
"stylelint-config-standard": "^18.2.0",
|
"stylelint-config-standard": "^18.3.0",
|
||||||
"stylelint-order": "^1.0.0",
|
"stylelint-order": "^1.0.0",
|
||||||
"stylelint-scss": "^3.3.0",
|
"stylelint-scss": "^3.8.0",
|
||||||
"stylelint-webpack-plugin": "^0.10.5",
|
"stylelint-webpack-plugin": "^0.10.5",
|
||||||
|
"uglifyjs-webpack-plugin": "^1.3.0",
|
||||||
"url-loader": "^0.5.7",
|
"url-loader": "^0.5.7",
|
||||||
"webpack": "^1.13.2",
|
"webpack": "^1.13.2",
|
||||||
"webpack-dev-middleware": "^1.6.1",
|
"webpack-dev-middleware": "^1.6.1",
|
||||||
"webpack-dev-server": "^1.15.1",
|
"webpack-dev-server": "^1.15.1",
|
||||||
"webpack-hot-middleware": "^2.12.2",
|
"webpack-hot-middleware": "^2.25.0",
|
||||||
"webpack-material-design-icons": "^0.1.0",
|
"webpack-material-design-icons": "^0.1.0"
|
||||||
"uglifyjs-webpack-plugin": "^1.3.0",
|
|
||||||
"happypack": "^5.0.1"
|
|
||||||
},
|
},
|
||||||
"engine": "node >= 5.9.0",
|
"engine": "node >= 5.9.0",
|
||||||
"nyc": {
|
"nyc": {
|
||||||
|
|||||||
@ -31,6 +31,7 @@ export default function AppConfig($provide,
|
|||||||
$urlRouterProvider,
|
$urlRouterProvider,
|
||||||
$locationProvider,
|
$locationProvider,
|
||||||
$mdIconProvider,
|
$mdIconProvider,
|
||||||
|
ngMdIconServiceProvider,
|
||||||
$mdThemingProvider,
|
$mdThemingProvider,
|
||||||
$httpProvider,
|
$httpProvider,
|
||||||
$translateProvider,
|
$translateProvider,
|
||||||
@ -76,6 +77,9 @@ export default function AppConfig($provide,
|
|||||||
|
|
||||||
$mdIconProvider.iconSet('mdi', mdiIconSet);
|
$mdIconProvider.iconSet('mdi', mdiIconSet);
|
||||||
|
|
||||||
|
ngMdIconServiceProvider
|
||||||
|
.addShape('alpha-a-circle-outline', '<path d="M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" />');
|
||||||
|
|
||||||
configureTheme();
|
configureTheme();
|
||||||
|
|
||||||
function blueGrayTheme() {
|
function blueGrayTheme() {
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
<section flex layout='column' layout-align="center" style="padding-left: 4px;">
|
<section flex layout='column' layout-align="center" style="padding-left: 4px;">
|
||||||
<md-chips flex ng-if="widgetType != types.widgetType.alarm.value"
|
<md-chips flex ng-if="widgetType != types.widgetType.alarm.value"
|
||||||
id="datakey_chips"
|
id="datakey_chips"
|
||||||
ng-model="dataKeys" md-autocomplete-snap
|
ng-model="dataKeys"
|
||||||
md-transform-chip="transformDataKeyChip($chip)"
|
md-transform-chip="transformDataKeyChip($chip)"
|
||||||
md-require-match="false">
|
md-require-match="false">
|
||||||
<md-autocomplete
|
<md-autocomplete
|
||||||
@ -41,7 +41,7 @@
|
|||||||
md-menu-class="tb-datakey-autocomplete">
|
md-menu-class="tb-datakey-autocomplete">
|
||||||
<span ng-show="item.type==types.dataKeyType.attribute">
|
<span ng-show="item.type==types.dataKeyType.attribute">
|
||||||
<md-tooltip>{{'datakey.attributes' | translate }}</md-tooltip>
|
<md-tooltip>{{'datakey.attributes' | translate }}</md-tooltip>
|
||||||
<ng-md-icon size="16" icon="perm_device_information"></ng-md-icon>
|
<ng-md-icon size="16" icon="alpha-a-circle-outline"></ng-md-icon>
|
||||||
</span>
|
</span>
|
||||||
<span ng-show="item.type==types.dataKeyType.timeseries">
|
<span ng-show="item.type==types.dataKeyType.timeseries">
|
||||||
<md-tooltip>{{'datakey.timeseries' | translate }}</md-tooltip>
|
<md-tooltip>{{'datakey.timeseries' | translate }}</md-tooltip>
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<span>{{'entity.create-new-key' | translate }} </span>
|
<span>{{'entity.create-new-key' | translate }} </span>
|
||||||
<span ng-show="widgetType == types.widgetType.latest.value">
|
<span ng-show="widgetType == types.widgetType.latest.value">
|
||||||
<md-tooltip>{{'datakey.attributes' | translate }}</md-tooltip>
|
<md-tooltip>{{'datakey.attributes' | translate }}</md-tooltip>
|
||||||
<ng-md-icon size="16" icon="perm_device_information" ng-click="createKey($event, types.dataKeyType.attribute, '#datakey_chips')"></ng-md-icon>
|
<ng-md-icon size="16" icon="alpha-a-circle-outline" ng-click="createKey($event, types.dataKeyType.attribute, '#datakey_chips')"></ng-md-icon>
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
<md-tooltip>{{'datakey.timeseries' | translate }}</md-tooltip>
|
<md-tooltip>{{'datakey.timeseries' | translate }}</md-tooltip>
|
||||||
@ -80,7 +80,7 @@
|
|||||||
<div class="tb-chip-label">
|
<div class="tb-chip-label">
|
||||||
<span ng-show="$chip.type==types.dataKeyType.attribute">
|
<span ng-show="$chip.type==types.dataKeyType.attribute">
|
||||||
<md-tooltip>{{'datakey.attributes' | translate }}</md-tooltip>
|
<md-tooltip>{{'datakey.attributes' | translate }}</md-tooltip>
|
||||||
<ng-md-icon size="20" icon="perm_device_information"></ng-md-icon>
|
<ng-md-icon size="20" icon="alpha-a-circle-outline"></ng-md-icon>
|
||||||
</span>
|
</span>
|
||||||
<span ng-show="$chip.type==types.dataKeyType.timeseries">
|
<span ng-show="$chip.type==types.dataKeyType.timeseries">
|
||||||
<md-tooltip>{{'datakey.timeseries' | translate }}</md-tooltip>
|
<md-tooltip>{{'datakey.timeseries' | translate }}</md-tooltip>
|
||||||
@ -103,7 +103,7 @@
|
|||||||
<md-chips flex ng-if="widgetType == types.widgetType.alarm.value"
|
<md-chips flex ng-if="widgetType == types.widgetType.alarm.value"
|
||||||
id="alarm_datakey_chips"
|
id="alarm_datakey_chips"
|
||||||
ng-required="true"
|
ng-required="true"
|
||||||
ng-model="alarmDataKeys" md-autocomplete-snap
|
ng-model="alarmDataKeys"
|
||||||
md-transform-chip="transformAlarmDataKeyChip($chip)"
|
md-transform-chip="transformAlarmDataKeyChip($chip)"
|
||||||
md-require-match="false">
|
md-require-match="false">
|
||||||
<md-autocomplete
|
<md-autocomplete
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
<md-chips flex ng-if="widgetType != types.widgetType.alarm.value"
|
<md-chips flex ng-if="widgetType != types.widgetType.alarm.value"
|
||||||
id="function_datakey_chips"
|
id="function_datakey_chips"
|
||||||
ng-required="true"
|
ng-required="true"
|
||||||
ng-model="funcDataKeys" md-autocomplete-snap
|
ng-model="funcDataKeys"
|
||||||
md-transform-chip="transformFuncDataKeyChip($chip)"
|
md-transform-chip="transformFuncDataKeyChip($chip)"
|
||||||
md-require-match="false">
|
md-require-match="false">
|
||||||
<md-autocomplete
|
<md-autocomplete
|
||||||
@ -82,7 +82,7 @@
|
|||||||
<md-chips flex ng-if="widgetType == types.widgetType.alarm.value"
|
<md-chips flex ng-if="widgetType == types.widgetType.alarm.value"
|
||||||
id="alarm_datakey_chips"
|
id="alarm_datakey_chips"
|
||||||
ng-required="true"
|
ng-required="true"
|
||||||
ng-model="alarmDataKeys" md-autocomplete-snap
|
ng-model="alarmDataKeys"
|
||||||
md-transform-chip="transformAlarmDataKeyChip($chip)"
|
md-transform-chip="transformAlarmDataKeyChip($chip)"
|
||||||
md-require-match="false">
|
md-require-match="false">
|
||||||
<md-autocomplete
|
<md-autocomplete
|
||||||
|
|||||||
@ -13,6 +13,11 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import './md-chip-draggable.scss';
|
||||||
|
|
||||||
|
var globalDraggingChipsWrapId = null;
|
||||||
|
|
||||||
export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
||||||
.directive('tbChipDraggable', function () {
|
.directive('tbChipDraggable', function () {
|
||||||
return {
|
return {
|
||||||
@ -25,12 +30,13 @@ export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
|||||||
var handle = $element[0];
|
var handle = $element[0];
|
||||||
var draggingClassName = 'dragging';
|
var draggingClassName = 'dragging';
|
||||||
var droppingClassName = 'dropping';
|
var droppingClassName = 'dropping';
|
||||||
var droppingBeforeClassName = 'dropping--before';
|
var droppingBeforeClassName = 'dropping-before';
|
||||||
var droppingAfterClassName = 'dropping--after';
|
var droppingAfterClassName = 'dropping-after';
|
||||||
var dragging = false;
|
var dragging = false;
|
||||||
var preventDrag = false;
|
var preventDrag = false;
|
||||||
var dropPosition;
|
var dropPosition;
|
||||||
var dropTimeout;
|
var dropTimeout;
|
||||||
|
var counter = 0;
|
||||||
|
|
||||||
var move = function (from, to) {
|
var move = function (from, to) {
|
||||||
this.splice(to, 0, this.splice(from, 1)[0]);
|
this.splice(to, 0, this.splice(from, 1)[0]);
|
||||||
@ -57,18 +63,22 @@ export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
|||||||
} else {
|
} else {
|
||||||
dragging = true;
|
dragging = true;
|
||||||
|
|
||||||
|
globalDraggingChipsWrapId = angular.element($element[0].closest('md-chips-wrap')).attr('id');
|
||||||
|
|
||||||
$element.addClass(draggingClassName);
|
$element.addClass(draggingClassName);
|
||||||
|
|
||||||
var dataTransfer = event.dataTransfer || event.originalEvent.dataTransfer;
|
var dataTransfer = event.dataTransfer || event.originalEvent.dataTransfer;
|
||||||
|
|
||||||
dataTransfer.effectAllowed = 'copyMove';
|
dataTransfer.effectAllowed = 'copyMove';
|
||||||
dataTransfer.dropEffect = 'move';
|
dataTransfer.dropEffect = 'move';
|
||||||
|
|
||||||
dataTransfer.setData('text/plain', $scope.$parent.$mdChipsCtrl.items.indexOf($scope.$parent.$chip));
|
dataTransfer.setData('text/plain', $scope.$parent.$mdChipsCtrl.items.indexOf($scope.$parent.$chip));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$element.on('dragend', function () {
|
$element.on('dragend', function () {
|
||||||
dragging = false;
|
dragging = false;
|
||||||
|
globalDraggingChipsWrapId = null;
|
||||||
|
|
||||||
$element.removeClass(draggingClassName);
|
$element.removeClass(draggingClassName);
|
||||||
});
|
});
|
||||||
@ -78,8 +88,14 @@ export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var targetChipsWrapId = angular.element($element[0].closest('md-chips-wrap')).attr('id');
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (globalDraggingChipsWrapId !== targetChipsWrapId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var bounds = $element[0].getBoundingClientRect();
|
var bounds = $element[0].getBoundingClientRect();
|
||||||
|
|
||||||
var props = {
|
var props = {
|
||||||
@ -97,20 +113,28 @@ export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
|||||||
|
|
||||||
$element.addClass(droppingClassName);
|
$element.addClass(droppingClassName);
|
||||||
|
|
||||||
|
$element.removeClass(droppingAfterClassName);
|
||||||
|
$element.removeClass(droppingBeforeClassName);
|
||||||
|
|
||||||
if (horizontalOffset >= horizontalMidPoint || verticalOffset >= verticalMidPoint) {
|
if (horizontalOffset >= horizontalMidPoint || verticalOffset >= verticalMidPoint) {
|
||||||
dropPosition = 'after';
|
dropPosition = 'after';
|
||||||
$element.removeClass(droppingBeforeClassName);
|
|
||||||
$element.addClass(droppingAfterClassName);
|
$element.addClass(droppingAfterClassName);
|
||||||
} else {
|
} else {
|
||||||
dropPosition = 'before';
|
dropPosition = 'before';
|
||||||
$element.removeClass(droppingAfterClassName);
|
|
||||||
$element.addClass(droppingBeforeClassName);
|
$element.addClass(droppingBeforeClassName);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var dropHandler = function (event) {
|
var dropHandler = function (event) {
|
||||||
|
counter = 0;
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
|
var targetChipsWrapId = angular.element($element[0].closest('md-chips-wrap')).attr('id');
|
||||||
|
if (globalDraggingChipsWrapId !== targetChipsWrapId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var droppedItemIndex = parseInt((event.dataTransfer || event.originalEvent.dataTransfer).getData('text/plain'), 10);
|
var droppedItemIndex = parseInt((event.dataTransfer || event.originalEvent.dataTransfer).getData('text/plain'), 10);
|
||||||
var currentIndex = $scope.$parent.$mdChipsCtrl.items.indexOf($scope.$parent.$chip);
|
var currentIndex = $scope.$parent.$mdChipsCtrl.items.indexOf($scope.$parent.$chip);
|
||||||
var newIndex = null;
|
var newIndex = null;
|
||||||
@ -146,14 +170,15 @@ export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
|||||||
});
|
});
|
||||||
|
|
||||||
$element.removeClass(droppingClassName);
|
$element.removeClass(droppingClassName);
|
||||||
$element.removeClass(droppingBeforeClassName);
|
|
||||||
$element.removeClass(droppingAfterClassName);
|
$element.removeClass(droppingAfterClassName);
|
||||||
|
$element.removeClass(droppingBeforeClassName);
|
||||||
|
|
||||||
$element.off('drop', dropHandler);
|
$element.off('drop', dropHandler);
|
||||||
}, 1000 / 16);
|
}, 1000 / 16);
|
||||||
};
|
};
|
||||||
|
|
||||||
$element.on('dragenter', function () {
|
$element.on('dragenter', function () {
|
||||||
|
counter++;
|
||||||
if (dragging) {
|
if (dragging) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -166,9 +191,13 @@ export default angular.module('thingsboard.directives.mdChipDraggable', [])
|
|||||||
});
|
});
|
||||||
|
|
||||||
$element.on('dragleave', function () {
|
$element.on('dragleave', function () {
|
||||||
$element.removeClass(droppingClassName);
|
counter--;
|
||||||
$element.removeClass(droppingBeforeClassName);
|
if (counter <=0) {
|
||||||
$element.removeClass(droppingAfterClassName);
|
counter = 0;
|
||||||
|
$element.removeClass(droppingClassName);
|
||||||
|
$element.removeClass(droppingAfterClassName);
|
||||||
|
$element.removeClass(droppingBeforeClassName);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}],
|
}],
|
||||||
|
|||||||
55
ui/src/app/components/md-chip-draggable.scss
Normal file
55
ui/src/app/components/md-chip-draggable.scss
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2019 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
md-chip {
|
||||||
|
&.dropping {
|
||||||
|
//border: dashed 2px;
|
||||||
|
//opacity: .5;
|
||||||
|
|
||||||
|
//.md-chip-content {
|
||||||
|
// margin: -2px;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.dropping-before {
|
||||||
|
&::after {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 50%;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
content: "";
|
||||||
|
background-color: #fff;
|
||||||
|
border: dashed 2px;
|
||||||
|
border-radius: 16px;
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.dropping-after {
|
||||||
|
&::after {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
content: "";
|
||||||
|
background-color: #fff;
|
||||||
|
border: dashed 2px;
|
||||||
|
border-radius: 16px;
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user