@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} (function(){ "use strict"; var root = this, Chart = root.Chart, helpers = Chart.helpers; var defaultConfig = { ///Boolean - Whether grid lines are shown across the chart scaleShowGridLines : true, //String - Colour of the grid lines scaleGridLineColor : "rgba(0,0,0,.05)", //Number - Width of the grid lines scaleGridLineWidth : 1, //Boolean - Whether to show horizontal lines (except X axis) scaleShowHorizontalLines: true, //Boolean - Whether to show vertical lines (except Y axis) scaleShowVerticalLines: false, //Boolean - Whether the line is curved between points bezierCurve : true, //Number - Tension of the bezier curve between points bezierCurveTension : 0.4, //Boolean - Whether to show a dot for each point pointDot : true, //Number - Radius of each point dot in pixels pointDotRadius : 4, //Number - Pixel width of point dot stroke pointDotStrokeWidth : 1, //Number - amount extra to add to the radius to cater for hit detection outside the drawn point pointHitDetectionRadius : 20, //Boolean - Whether to show a stroke for datasets datasetStroke : true, //Number - Pixel width of dataset stroke datasetStrokeWidth : 2, //Boolean - Whether to fill the dataset with a colour datasetFill : true, //String - A legend template legendTemplate : "", //Boolean - Whether to horizontally center the label and point dot inside the grid offsetGridLines : false }; Chart.Type.extend({ name: "Line", defaults : defaultConfig, initialize: function(data){ //Declare the extension of the default point, to cater for the options passed in to the constructor this.PointClass = Chart.Point.extend({ offsetGridLines : this.options.offsetGridLines, strokeWidth : this.options.pointDotStrokeWidth, radius : this.options.pointDotRadius, display: this.options.pointDot, hitDetectionRadius : this.options.pointHitDetectionRadius, ctx : this.chart.ctx, inRange : function(mouseX){ return (Math.pow(mouseX-this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius,2)); } }); this.datasets = []; //Set up tooltip events on the chart if (this.options.showTooltips){ helpers.bindEvents(this, this.options.tooltipEvents, function(evt){ var activePoints = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : []; this.eachPoints(function(point){ point.restore(['fillColor', 'strokeColor']); }); helpers.each(activePoints, function(activePoint){ activePoint.fillColor = activePoint.highlightFill; activePoint.strokeColor = activePoint.highlightStroke; }); this.showTooltip(activePoints); }); } //Iterate through each of the datasets, and build this into a property of the chart helpers.each(data.datasets,function(dataset){ var datasetObject = { label : dataset.label || null, fillColor : dataset.fillColor, strokeColor : dataset.strokeColor, pointColor : dataset.pointColor, pointStrokeColor : dataset.pointStrokeColor, points : [] }; this.datasets.push(datasetObject); var templateVars = {}; helpers.each(dataset, function (value, key) { if (key.indexOf('tpl_var') ==0) { templateVars[key] = value; } }, this); helpers.each(dataset.data,function(dataPoint,index){ //Add a new point for each piece of data, passing any required data to draw. datasetObject.points.push(new this.PointClass(helpers.merge(templateVars, { value : dataPoint, label : data.labels[index], datasetLabel: dataset.label, strokeColor : dataset.pointStrokeColor, fillColor : dataset.pointColor, highlightFill : dataset.pointHighlightFill || dataset.pointColor, highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor }))); },this); this.buildScale(data.labels); this.eachPoints(function(point, index){ helpers.extend(point, { x: this.scale.calculateX(index), y: this.scale.endPoint }); point.save(); }, this); },this); this.render(); }, update : function(){ this.scale.update(); // Reset any highlight colours before updating. helpers.each(this.activeElements, function(activeElement){ activeElement.restore(['fillColor', 'strokeColor']); }); this.eachPoints(function(point){ point.save(); }); this.render(); }, eachPoints : function(callback){ helpers.each(this.datasets,function(dataset){ helpers.each(dataset.points,callback,this); },this); }, getPointsAtEvent : function(e){ var pointsArray = [], eventPosition = helpers.getRelativePosition(e); helpers.each(this.datasets,function(dataset){ helpers.each(dataset.points,function(point){ if (point.inRange(eventPosition.x,eventPosition.y)) pointsArray.push(point); }); },this); return pointsArray; }, buildScale : function(labels){ var self = this; var dataTotal = function(){ var values = []; self.eachPoints(function(point){ values.push(point.value); }); return values; }; var scaleOptions = { templateString : this.options.scaleLabel, height : this.chart.height, width : this.chart.width, ctx : this.chart.ctx, textColor : this.options.scaleFontColor, offsetGridLines : this.options.offsetGridLines, fontSize : this.options.scaleFontSize, fontStyle : this.options.scaleFontStyle, fontFamily : this.options.scaleFontFamily, valuesCount : labels.length, beginAtZero : this.options.scaleBeginAtZero, integersOnly : this.options.scaleIntegersOnly, calculateYRange : function(currentHeight){ var updatedRanges = helpers.calculateScaleRange( dataTotal(), currentHeight, this.fontSize, this.beginAtZero, this.integersOnly ); helpers.extend(this, updatedRanges); }, xLabels : labels, skipXLabels: (this.options.skipXLabels) ? this.options.skipXLabels : false, font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily), lineWidth : this.options.scaleLineWidth, lineColor : this.options.scaleLineColor, showHorizontalLines : this.options.scaleShowHorizontalLines, showVerticalLines : this.options.scaleShowVerticalLines, gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0, gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)", padding: (this.options.showScale) ? 0 : this.options.pointDotRadius + this.options.pointDotStrokeWidth, showLabels : this.options.scaleShowLabels, display : this.options.showScale }; if (this.options.scaleOverride){ helpers.extend(scaleOptions, { calculateYRange: helpers.noop, steps: this.options.scaleSteps, stepValue: this.options.scaleStepWidth, min: this.options.scaleStartValue, max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth) }); } this.scale = new Chart.Scale(scaleOptions); }, addData : function(valuesArray,label){ //Map the values array for each of the datasets helpers.each(valuesArray,function(value,datasetIndex){ //Add a new point for each piece of data, passing any required data to draw. this.datasets[datasetIndex].points.push(new this.PointClass({ value : value, label : label, datasetLabel: this.datasets[datasetIndex].label, x: this.scale.calculateX(this.scale.valuesCount+1), y: this.scale.endPoint, strokeColor : this.datasets[datasetIndex].pointStrokeColor, fillColor : this.datasets[datasetIndex].pointColor })); },this); this.scale.addXLabel(label); //Then re-render the chart. this.update(); }, removeData : function(){ this.scale.removeXLabel(); //Then re-render the chart. helpers.each(this.datasets,function(dataset){ dataset.points.shift(); },this); this.update(); }, reflow : function(){ var newScaleProps = helpers.extend({ height : this.chart.height, width : this.chart.width }); this.scale.update(newScaleProps); }, draw : function(ease){ var easingDecimal = ease || 1; this.clear(); var ctx = this.chart.ctx; // Some helper methods for getting the next/prev points var hasValue = function(item){ return item.value !== null; }, nextPoint = function(point, collection, index){ return helpers.findNextWhere(collection, hasValue, index) || point; }, previousPoint = function(point, collection, index){ return helpers.findPreviousWhere(collection, hasValue, index) || point; }; this.scale.draw(easingDecimal); helpers.each(this.datasets,function(dataset){ var pointsWithValues = helpers.where(dataset.points, hasValue); //Transition each point first so that the line and point drawing isn't out of sync //We can use this extra loop to calculate the control points of this dataset also in this loop helpers.each(dataset.points, function(point, index){ if (point.hasValue()){ point.transition({ y : this.scale.calculateY(point.value), x : this.scale.calculateX(index) }, easingDecimal); } },this); // Control points need to be calculated in a separate loop, because we need to know the current x/y of the point // This would cause issues when there is no animation, because the y of the next point would be 0, so beziers would be skewed if (this.options.bezierCurve){ helpers.each(pointsWithValues, function(point, index){ var tension = (index > 0 && index < pointsWithValues.length - 1) ? this.options.bezierCurveTension : 0; point.controlPoints = helpers.splineCurve( previousPoint(point, pointsWithValues, index), point, nextPoint(point, pointsWithValues, index), tension ); // Prevent the bezier going outside of the bounds of the graph // Cap puter bezier handles to the upper/lower scale bounds if (point.controlPoints.outer.y > this.scale.endPoint){ point.controlPoints.outer.y = this.scale.endPoint; } else if (point.controlPoints.outer.y < this.scale.startPoint){ point.controlPoints.outer.y = this.scale.startPoint; } // Cap inner bezier handles to the upper/lower scale bounds if (point.controlPoints.inner.y > this.scale.endPoint){ point.controlPoints.inner.y = this.scale.endPoint; } else if (point.controlPoints.inner.y < this.scale.startPoint){ point.controlPoints.inner.y = this.scale.startPoint; } },this); } //Draw the line between all the points ctx.lineWidth = this.options.datasetStrokeWidth; ctx.strokeStyle = dataset.strokeColor; ctx.beginPath(); helpers.each(pointsWithValues, function(point, index){ if (index === 0){ ctx.moveTo(point.x, point.y); } else{ if(this.options.bezierCurve){ var previous = previousPoint(point, pointsWithValues, index); ctx.bezierCurveTo( previous.controlPoints.outer.x, previous.controlPoints.outer.y, point.controlPoints.inner.x, point.controlPoints.inner.y, point.x, point.y ); } else{ ctx.lineTo(point.x,point.y); } } }, this); ctx.stroke(); if (this.options.datasetFill && pointsWithValues.length > 0){ //Round off the line by going to the base of the chart, back to the start, then fill. ctx.lineTo(pointsWithValues[pointsWithValues.length - 1].x, this.scale.endPoint); ctx.lineTo(pointsWithValues[0].x, this.scale.endPoint); ctx.fillStyle = dataset.fillColor; ctx.closePath(); ctx.fill(); } //Now draw the points over the line //A little inefficient double looping, but better than the line //lagging behind the point positions helpers.each(pointsWithValues,function(point){ point.draw(); }); },this); } }); }).call(this);/*! elementor-pro - v3.6.3 - 28-02-2022 */ .elementor-document-handle { display: none; -webkit-box-align: center; -ms-flex-align: center; align-items: center; position: absolute; z-index: 2147483640; top: 0; left: 50%; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); background-color: #fcb92c; padding: 5px 10px; font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; font-size: 11px; color: #fff; border-radius: 0 0 3px 3px; cursor: pointer; } .elementor-document-handle:before, .elementor-document-handle:after { content: ''; position: absolute; border: solid transparent; } .elementor-document-handle:before { right: calc(100% - 1px); border-right-color: #fcb92c; border-width: 0 14px 23px 0; } .elementor-document-handle:after { left: calc(100% - 1px); border-left-color: #fcb92c; border-width: 0 0 23px 14px; } .elementor-document-handle .eicon-edit { margin-left: 5px; } .elementor-editor-active .elementor { position: relative; } .elementor-editor-active .elementor:not(.elementor-edit-mode):hover { -webkit-box-shadow: 0 0 0 1px #fcb92c; box-shadow: 0 0 0 1px #fcb92c; } .elementor-editor-active .elementor:not(.elementor-edit-mode):hover .elementor-document-handle { display: -webkit-box; display: -ms-flexbox; display: flex; line-height: initial; } .elementor-editor-active .elementor.loading { opacity: 0.5; } .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle { -webkit-transform: translateX(-50%) translateY(-100%); -ms-transform: translateX(-50%) translateY(-100%); transform: translateX(-50%) translateY(-100%); border-radius: 3px 3px 0 0; } .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle:before { border-width: 23px 14px 0 0; } .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle:after { border-width: 23px 0 0 14px; } .elementor-embedded-editor.elementor-location-header .elementor-section-wrap:not(:empty) + #elementor-add-new-section { display: none; } /*# sourceMappingURL=preview-rtl.css.map */[ { "key": "group_63db85f18df07", "title": "Products", "fields": [ { "key": "field_63db85f2d1709", "label": "Test Image", "name": "test_image", "aria-label": "", "type": "image", "instructions": "", "required": 0, "conditional_logic": 0, "wrapper": { "width": "", "class": "", "id": "" }, "return_format": "array", "library": "all", "min_width": "", "min_height": "", "min_size": "", "max_width": "", "max_height": "", "max_size": "", "mime_types": "", "preview_size": "medium" }, { "key": "field_63dcef444bbde", "label": "Test Video", "name": "test_video", "aria-label": "", "type": "url", "instructions": "", "required": 0, "conditional_logic": 0, "wrapper": { "width": "", "class": "", "id": "" }, "default_value": "", "placeholder": "" } ], "location": [ [ { "param": "post_type", "operator": "==", "value": "product" } ] ], "menu_order": 0, "position": "normal", "style": "default", "label_placement": "top", "instruction_placement": "label", "hide_on_screen": "", "active": true, "description": "", "show_in_rest": 0 } ].wp-block-kadence-iconlist ul.kt-svg-icon-list:not(.this-prevents-issues):not(.this-stops-third-party-issues):not(.tijsloc){list-style:none;padding:0;display:grid}.wp-block-kadence-iconlist ul.kt-svg-icon-list li.kt-svg-icon-list-item-wrap:not(.this-prevents-issues):not(.this-stops-third-party-issues):not(.tijsloc){display:flex}.wp-block-kadence-iconlist ul.kt-svg-icon-list{padding:0;list-style:none;margin:0 0 10px 0;text-align:right;grid-template-rows:auto;display:grid;gap:5px 0}.wp-block-kadence-iconlist ul.kt-svg-icon-list svg{width:1em;height:1em}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap{display:flex;align-items:center;padding:0}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap .kt-svg-icon-list-single{margin-left:10px;padding:4px 0;display:inline-flex;justify-content:center;align-items:center}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap .kt-svg-icon-link{display:flex;align-items:center}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap:last-child{margin-bottom:0}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-level-0{padding-right:0rem}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-level-1{padding-right:2rem}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-level-2{padding-right:4rem}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-level-3{padding-right:6rem}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-level-4{padding-right:8rem}.wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-level-5{padding-right:10rem}.rtl .wp-block-kadence-iconlist ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap .kt-svg-icon-list-single{margin-right:10px;margin-left:0}.kb-icon-list-tooltip-wrap{display:flex;align-items:center}.wp-block-kadence-listitem .kb-icon-list-tooltip:where(:not(.kb-list-tooltip-no-border)){border-bottom:1px dashed currentColor}.wp-block-kadence-listitem .kt-svg-icon-link>.kb-icon-list-tooltip{border-bottom:none}.wp-block-kadence-iconlist.kt-list-icon-aligntop ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap{align-items:flex-start}.wp-block-kadence-iconlist.kt-list-icon-alignbottom ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap{align-items:flex-end}.wp-block-kadence-iconlist.aligncenter .kt-svg-icon-list-item-wrap{justify-content:center}.kt-svg-icon-list-style-stacked .kt-svg-icon-list-single{border-style:solid;border-width:0}.kt-svg-icon-list-columns-2 ul.kt-svg-icon-list{grid-template-columns:repeat(2, minmax(0, 1fr))}.kt-svg-icon-list-columns-3 ul.kt-svg-icon-list{grid-template-columns:repeat(3, minmax(0, 1fr))}.wp-block-kadence-iconlist.kt-list-icon-aligntop ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap a.kt-svg-icon-link{align-items:flex-start}.wp-block-kadence-iconlist.kt-list-icon-alignbottom ul.kt-svg-icon-list .kt-svg-icon-list-item-wrap a.kt-svg-icon-link{align-items:flex-end}@media(max-width: 1024px){.kt-tablet-svg-icon-list-columns-1 ul.kt-svg-icon-list{grid-template-columns:minmax(0, 1fr)}.kt-tablet-svg-icon-list-columns-2 ul.kt-svg-icon-list{grid-template-columns:repeat(2, minmax(0, 1fr))}.kt-tablet-svg-icon-list-columns-3 ul.kt-svg-icon-list{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media(max-width: 767px){.kt-mobile-svg-icon-list-columns-1 ul.kt-svg-icon-list{grid-template-columns:minmax(0, 1fr)}.kt-mobile-svg-icon-list-columns-2 ul.kt-svg-icon-list{grid-template-columns:repeat(2, minmax(0, 1fr))}.kt-mobile-svg-icon-list-columns-3 ul.kt-svg-icon-list{grid-template-columns:repeat(3, minmax(0, 1fr))}} Home - Storage LK - Business Park Road, Letterkenny, Co. Donegal

Storage, covered

We’ve got an affordable and secure home for all your loved belongings.

Book storage online and move in right away

Book storage online

Check out our prices, book everything online and get access immediately. We provide contactless self storage and you do not need to meet us in person.

Adaptable contracts

No one enjoys long contracts. With Storebox.ie, there is no such thing as a notice period. Your contract automatically renews every 28 days unless you get in touch with us.

Secure and safe storage

There is monitored CCTV 24/7 at all of our locations. Storage insurance is also added when you submit your booking to ensure your safety.

Simply access

Simply call the gate from your phone to get inside. A majority of our units have drive up access where you unload your belongings from your car directly into your storage unit.

How it works

Simply order a storage unit from the comfort of your home in less than 2 minutes.

160ft-Unit-01-svg

We’re have huge pride in being rated “Excellent” by Google

Storage LK is your ultimate self-storage solution for business and personal storage in Letterkenny. Our facilities are situated in JR Business Park and have high security with alarms and monitored CCTV running 24/7. Our facilities offer simple access with a variety of units enabling you to drive up directly. Our storage units are available in a number of different sizes that suit various situations – whether you are planning on moving to that dream home, renovating or decluttering, or looking to store commercial equipment – Storage LK has you covered.

Sort out all your storage needs within minutes

Simply book online or make a reservation with us free of charge

depositphotos_25016203-stock-photo-storage-woman-with-boxes-behind
Scroll to Top