Might break
implicitExtis disabled by default (usetrueor"warn"value inbasis-configto return old behaviour, but better way is not usingexplicitExtsince it will be removed in future releases)basisjs-tools1.10.0 is requiredBasis.js ToolsChrome plugin 2.0.0 is required
Remove
basis.data.value.Property- fallback for
basis.net.ajax.Request#getResponseError()when error stores indataproperty
Might break
SVGis new resource type, which automatically inject to document when callstartUse()- Relative path in markup tokens are resolving to source file now
- Ignore wrong types in
_metaas more predictable behaviour (defaulttype was set before) - Common container for root element of popups (
basis.ui.popup) instead of document's body
Remove
this.pathis no longer available in modulesbasis.data.index.IndexConstructor
Might break
IndexMapwas reworked to be more async and simpler (see details in HISTORY.md)- never set binding and binding with
undefinedvalue behaviours are differ now
Remove
STATE.from()(usebasis.data.Value.state()instead)STATE.factory()(usebasis.data.Value.stateFactory()instead)basis.data.generatormodule
Might break
basis.require()appends.jsto filename, if there is no extension
Rename
basis.data.Dataset#sync()→basis.data.Dataset#setAndDestroyRemoved()basis.ui.field.Field#binding.titleText→basis.ui.field.Field#binding.titletitle→titleElreference inbasis.ui.fieldtemplatesbasis.ui.paginator.Paginator#spanStartPage_→basis.ui.paginator.Paginator#spanStartPagebasis.net.Service#isSecure→basis.net.Service#securebasis.net.Service#transportClass#needSignature→basis.net.Service#transportClass#securebasis.net.ajax.Transport#postBody→basis.net.ajax.Transport#bodybasis.require('basis.ua').cookies→basis.require('basis.ua.cookie')(basis.ua.cookiesmoved to separate namespacebasis.ua.cookie)
Remove
deferredargument inbasis.data.Value#as()(value.as(fn, true)→value.as(fn).deferred())fnargument inbasis.data.Value#deferred()(value.deferred(fn)→value.as(fn).deferred())basis.data.index.IndexMap#addCalc()basis.data.index.IndexMap#removeCalc- ability to define default
stateforbasis.entitytypes via type config definesfrom template declarationdictURIfrom template declarationselectandunselectevents emit on init and destroy (basis.dom.wrapper.Node)basis.dom.wrapper.Node#selectable- arguments in
Window#open() basis.ui.window.Window#emit_beforeShow()basis.ui.window.Window#emit_active()(doesn't work anyway)basis.net.actionisn't addrequestproperty to context object (on action invocation)basis.netremoveinfluencefunctionality
Deprecated
modificatorargument inbasis.getter()(basis.getter(fn1, fn2)→basis.getter(f1).as(fn2))basis.data.Dataset#sync()basis.entity.Collectionbasis.entity.GroupinginstanceOfin satellite config ofbasis.dom.wrapper.Node(useinstanceinstead)basis.ui.field.Field#binding.titleText(useField#binding.titleinstead)basis.ui.window.Window#closed(useWindow#visibleinstead)basis.net.Service#isSecure(useService#secureinstead)basis.net.Service#transportClass#needSignature(useService#transportClass#secureinstead)basis.net.ajax.Transport#postBody(useTransport#body)
Might break
basis.asset()is now resolves paths asbasis.resource()(left value as is before)require()doesn't acceptbaseURIas second argument anymore__dirnamehas no trailing slash now- all private property naming for reactive adapters are now ends with
RA_(i.e.activeRA_,datasetRA_) basis.PROXYis default value foractiveproperty for all source-based dataset classes; this means that any instance of those classes become active when has any active subscriberbasis.data.DatasetWrapper#setDataset()method is now set new value todatasetproperty beforeitemsChangedevent emitbasis.data.Value's methods andbasis.data.Value.from()are now returns some sort ofbasis.data.Valueinstance insteadbasis.Token:Value#compute()returns instance ofbasis.data.ReadOnlyValue(instead ofbasis.Token)Value#as()returns instance ofbasis.data.ReadOnlyValue(instead ofbasis.Token)Value#deferred()returns instance ofbasis.data.DeferredValue(instead ofbasis.DeferredToken)Value.from()returns instance ofbasis.data.ReadOnlyValue(instead ofValue)
basis.data.index.IndexMapwas reworked- items are not require subscribers to be computed anymore
- make item's calculations immediately on item create (no more
updateevent emit on create) - copy data from source object to map member by default (set
IndexMap#copyDataFromSourcetofalseto disable it), but ignore fields with names that defined inIndexMap#calcs - stop use
keyMapas internal item storage IndexMap#itemClassproperty is using instead of oldIndexMap#keyMap.itemClass
- operation order for
basis.data.dataset.SourceDatasetwas changed- on init (more safe init)
- store current
sourcevalue to local variable and setsourcetonull - invoke super constructor
initmethod - set
sourcevalue
- store current
- on source change, new order:
- add and remove
listenhandler - emit
sourceChangedevent - emit
itemsChangedevent
- add and remove
- on init (more safe init)
basis.data.value.Expressioninherited frombasis.data.ReadOnlyValue(instead ofbasis.data.value.ObjectSet) and instances become "readonly"basis.entity.Entityinstances invokesyncAction()only if haveidvalue or type has no indexbasis.entity.Entityinstances is now wrapdefValueby field wrapper- binding format in template AST was changed (declaration version changed to
3) <b:define>doesn't apply for nested templates bindings anymore (scoped by template source it's declared in)isolateis not inherit from nested templates- don't isolate classes adding via
<b:include>'s instructions with include isolate context (i.e. for case<b:isolate prefix="foo-"/><b:include isolate="bar-" class="baz"/>classbazwill be isolated byfoo-prefix only, but no byfoo-bar-as before) - template style namespaces are scoped by template source it's declared in
- markup
l10ntoken's content is not wrapped by<span> basis.dom.wrapper:unselectnodes goes beforeselecton selection delta processingbasis.ui.fieldisn't reset field validity onkeyupbasis.ui.field.Combobox#setValue()logic doesn't depend ondisabledstate now- no more
__basisEventsinglobal(basis.dom.eventdon't store global event handlers inglobal) basis.ui.popup.Popupinstances are not children ofpopupManageranymore and could haveparentNodeorownerbasis.net.actionactions return ES6Promise(native or polyfill provided bybasis.promise)
Rename
basis.array.sortAsObject→basis.array.sortbasis.data.AbstractDataset→basis.data.ReadOnlyDatasetbasis.data.DatasetAdapter→basis.data.ResolveAdapterbasis.data.dataset.Subset→basis.data.dataset.Filter
Remove
- remove support for
extProtoinbasis-config basis.setImmediateandbasis.nextTickdoesn't accept non-function values anymorebasis.platformFeature(usebasis.cssom.featuresinstead)basis.data.ReadOnlyDataset#clearbasis.data.datasetdrop fallback forruleEventsas objectbasis.dragdrop.DragDropElement#containerGetterbasis.dom.wrapper.AbstractNode#satelliteConfigbasis.dom.wrapper.GroupingNode#groupGetterbasis.dom.wrapperdrop support forhookin satellite configbasis.ui.Node#templateUpdatebasis.ui.Node#contentbasis.ui.tabledrop support forcontentin header configbasis.ui.tabledrop support forcontentin footer configbasis.templateremove support for<b:resource>(use<b:style>instead)
Deprecated
pathsection inbasis-config(usemodulesinstead)basis.entity.EntityType().entityType(usetypeinstead)basis.entity.EntitySetType().entitySetType(usetypeinstead)basis.entity.EntityType().extend(useextendClassinstead)basis.entity.EntitySetType().extend(useextendClassinstead)basis.ui.calendar.Calendar#sections(usechildNodesinstead)
Might break
basis.dateshow warnings instead of exception throwclearmethods inbasis.data.datasetdon't reset sources anymorebasis.data.Value.from()instances are readonly nowbasis.data.Value#lockedis counter now but not a boolean value (usebasis.data.Value#isLocked()to check value is locked)basis.templatestyle of included templates are always going before own template resourcesbasis.templateapply defines per include but not per templatebasis.uiemittemplateChangedevent only on template change, but not on instance createbasis.ui.field.validator.Required()is trim value before check nowbasis.dragdrop.DragDropElement#startRulereceive realdeltaX/deltaYbut not a result ofaxisXproxy/axisYproxymethodsbasis.dragdrop.DragDropElementalways emitstartevent with zerodeltaX/deltaYbasis.dragdropimplementDragDropElement#ignoreTargetto ignore element that can't be a drag trigger (by default those elements are<input>,<textarea>,<select>and<button>)
Might break
basis.ui.calendar.CalendarNodehas noperiodStartandperiodEndon init, but get those properties after append to parent (section) and receiveperiodChangedevent
Remove
basis.xml.createAttributeNS(as candidate to remove inDOM level 4)basis.xml.setAttributeNodeNS(as candidate to remove inDOM level 4)
Rename
basis.net.Transport→basis.net.ajax.Transportbasis.net.Request→basis.net.ajax.Requestbasis.net.request→basis.net.ajax.requestbasis.layout.VerticalPanel→basis.ui.panel.VerticalPanelbasis.layout.VerticalPanelStack→basis.ui.panel.VerticalPanelStackprocessErrorResponse→getResponseErrorin allbasis.netrelated modules
Remove
basis.date.toFormatbasis.layout.Boxbasis.layout.Viewportbasis.layout.addBlockResizeHandlerbasis.data.Object#isTargetbasis.entity.Type#addField(doesn't work since 1.0 anyway)basis.entity.Type#addCalcField(doesn't work since 1.0 anyway)
Might break
extProto: falseby default (don't extend buildin classes prototypes)- all resource extensions are updatable by default (use
permanent: truein resource type definition to supress it) - all relative paths should start with
./or.. basis.dragdrop.DragDropElement#isDraggingmethod returnsfalseinsideoverevent handlers (returnstruebefore).l10nresources return dictionary instead ofjsonobjectresposeText,responseXMLanderrordon't store inbasis.net.*.Request#datatypeofcheck inbasis.data.Value.fromwas removed (returnsnullbefore, if first argument isn't anobject)