neo.mjs 10.0.0-beta.4 → 10.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/RELEASE_NOTES/v10.0.0-beta.4.md +2 -2
- package/.github/RELEASE_NOTES/v10.0.0-beta.5.md +70 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.6.md +48 -0
- package/.github/epic-functional-components.md +498 -0
- package/.github/ticket-asymmetric-vdom-updates.md +122 -0
- package/README.md +0 -3
- package/ServiceWorker.mjs +2 -2
- package/apps/colors/store/Colors.mjs +1 -0
- package/apps/colors/view/GridContainer.mjs +3 -0
- package/apps/colors/view/HeaderToolbar.mjs +2 -0
- package/apps/colors/view/Viewport.mjs +3 -0
- package/apps/covid/view/FooterContainer.mjs +3 -0
- package/apps/covid/view/GalleryContainer.mjs +2 -0
- package/apps/covid/view/GalleryContainerController.mjs +1 -0
- package/apps/covid/view/HeaderContainer.mjs +2 -0
- package/apps/covid/view/HelixContainer.mjs +2 -0
- package/apps/covid/view/HelixContainerController.mjs +1 -0
- package/apps/covid/view/MainContainer.mjs +3 -0
- package/apps/covid/view/TableContainer.mjs +3 -0
- package/apps/covid/view/TableContainerController.mjs +1 -0
- package/apps/covid/view/WorldMapContainer.mjs +2 -0
- package/apps/covid/view/country/Gallery.mjs +3 -0
- package/apps/covid/view/country/Helix.mjs +8 -0
- package/apps/covid/view/country/HistoricalDataTable.mjs +1 -0
- package/apps/covid/view/country/Table.mjs +2 -0
- package/apps/covid/view/mapboxGl/Component.mjs +1 -0
- package/apps/covid/view/mapboxGl/Container.mjs +2 -0
- package/apps/email/EPIC_PLAN.md +58 -0
- package/apps/email/neo-config.json +2 -2
- package/apps/email/store/Emails.mjs +11 -1
- package/apps/email/view/ComposeView.mjs +44 -0
- package/apps/email/view/MainView.mjs +89 -0
- package/apps/email/view/Viewport.mjs +4 -33
- package/apps/email/view/ViewportStateProvider.mjs +3 -3
- package/apps/form/store/SideNav.mjs +1 -0
- package/apps/form/view/FormContainer.mjs +1 -0
- package/apps/form/view/FormPageContainer.mjs +2 -0
- package/apps/form/view/SideNavList.mjs +1 -0
- package/apps/form/view/Viewport.mjs +3 -0
- package/apps/portal/childapps/preview/MainContainer.mjs +1 -0
- package/apps/portal/index.html +1 -1
- package/apps/portal/store/BlogPosts.mjs +2 -0
- package/apps/portal/store/Content.mjs +1 -0
- package/apps/portal/store/ContentSections.mjs +1 -0
- package/apps/portal/store/Examples.mjs +1 -0
- package/apps/portal/view/HeaderToolbar.mjs +1 -0
- package/apps/portal/view/Viewport.mjs +5 -0
- package/apps/portal/view/ViewportController.mjs +8 -2
- package/apps/portal/view/about/Container.mjs +2 -0
- package/apps/portal/view/about/MemberContainer.mjs +7 -0
- package/apps/portal/view/blog/Container.mjs +2 -0
- package/apps/portal/view/blog/List.mjs +2 -0
- package/apps/portal/view/examples/List.mjs +1 -0
- package/apps/portal/view/examples/TabContainer.mjs +4 -0
- package/apps/portal/view/home/ContentBox.mjs +3 -0
- package/apps/portal/view/home/FeatureSection.mjs +8 -0
- package/apps/portal/view/home/FooterContainer.mjs +4 -1
- package/apps/portal/view/home/MainContainer.mjs +2 -0
- package/apps/portal/view/home/parts/AfterMath.mjs +2 -0
- package/apps/portal/view/home/parts/BaseContainer.mjs +1 -0
- package/apps/portal/view/home/parts/Colors.mjs +4 -0
- package/apps/portal/view/home/parts/Features.mjs +2 -0
- package/apps/portal/view/home/parts/Helix.mjs +5 -0
- package/apps/portal/view/home/parts/How.mjs +4 -0
- package/apps/portal/view/home/parts/MainNeo.mjs +1 -0
- package/apps/portal/view/home/parts/References.mjs +2 -0
- package/apps/portal/view/learn/ContentComponent.mjs +11 -5
- package/apps/portal/view/learn/ContentTreeList.mjs +2 -0
- package/apps/portal/view/learn/CubeLayoutButton.mjs +1 -0
- package/apps/portal/view/learn/MainContainer.mjs +4 -0
- package/apps/portal/view/learn/PageContainer.mjs +2 -0
- package/apps/portal/view/learn/PageSectionsContainer.mjs +3 -0
- package/apps/portal/view/learn/PageSectionsList.mjs +1 -0
- package/apps/portal/view/services/Component.mjs +1 -0
- package/apps/realworld/api/Base.mjs +1 -0
- package/apps/realworld/view/HeaderComponent.mjs +4 -0
- package/apps/realworld/view/HomeComponent.mjs +7 -0
- package/apps/realworld/view/MainContainer.mjs +2 -0
- package/apps/realworld/view/MainContainerController.mjs +2 -0
- package/apps/realworld/view/article/CommentComponent.mjs +3 -0
- package/apps/realworld/view/article/Component.mjs +17 -10
- package/apps/realworld/view/article/CreateCommentComponent.mjs +2 -0
- package/apps/realworld/view/article/CreateComponent.mjs +5 -0
- package/apps/realworld/view/article/PreviewComponent.mjs +9 -0
- package/apps/realworld/view/article/TagListComponent.mjs +2 -0
- package/apps/realworld/view/user/ProfileComponent.mjs +7 -0
- package/apps/realworld/view/user/SettingsComponent.mjs +5 -0
- package/apps/realworld/view/user/SignUpComponent.mjs +3 -0
- package/apps/realworld2/api/Base.mjs +1 -0
- package/apps/realworld2/view/FooterComponent.mjs +1 -0
- package/apps/realworld2/view/HeaderToolbar.mjs +3 -0
- package/apps/realworld2/view/HomeContainer.mjs +1 -0
- package/apps/realworld2/view/MainContainer.mjs +2 -0
- package/apps/realworld2/view/MainContainerController.mjs +1 -0
- package/apps/realworld2/view/article/Helix.mjs +1 -0
- package/apps/realworld2/view/article/PreviewComponent.mjs +9 -0
- package/apps/realworld2/view/article/PreviewList.mjs +1 -0
- package/apps/realworld2/view/article/TagListComponent.mjs +2 -0
- package/apps/route/view/CenterContainer.mjs +1 -0
- package/apps/route/view/MainView.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidchart/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidgallery/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidhelix/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidmap/MainContainer.mjs +1 -0
- package/apps/sharedcovid/view/FooterContainer.mjs +3 -0
- package/apps/sharedcovid/view/GalleryContainer.mjs +2 -0
- package/apps/sharedcovid/view/GalleryContainerController.mjs +1 -0
- package/apps/sharedcovid/view/HeaderContainer.mjs +2 -0
- package/apps/sharedcovid/view/HelixContainer.mjs +2 -0
- package/apps/sharedcovid/view/HelixContainerController.mjs +1 -0
- package/apps/sharedcovid/view/MainContainer.mjs +3 -0
- package/apps/sharedcovid/view/TableContainer.mjs +3 -0
- package/apps/sharedcovid/view/TableContainerController.mjs +1 -0
- package/apps/sharedcovid/view/WorldMapContainer.mjs +2 -0
- package/apps/sharedcovid/view/country/Gallery.mjs +3 -0
- package/apps/sharedcovid/view/country/Helix.mjs +8 -0
- package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -0
- package/apps/sharedcovid/view/country/Table.mjs +2 -0
- package/apps/sharedcovid/view/mapboxGl/Component.mjs +1 -0
- package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -0
- package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +2 -0
- package/apps/shareddialog/view/DemoDialog.mjs +2 -0
- package/apps/shareddialog/view/MainContainer.mjs +2 -0
- package/apps/shareddialog/view/MainContainerController.mjs +1 -0
- package/buildScripts/addReactiveTags.mjs +191 -0
- package/buildScripts/checkReactiveTags.mjs +160 -0
- package/docs/app/store/Api.mjs +1 -0
- package/docs/app/store/Examples.mjs +1 -0
- package/docs/app/view/ApiTreeList.mjs +1 -0
- package/docs/app/view/ContentTabContainer.mjs +2 -0
- package/docs/app/view/ExamplesTreeList.mjs +2 -0
- package/docs/app/view/HeaderContainer.mjs +3 -0
- package/docs/app/view/MainContainer.mjs +5 -0
- package/docs/app/view/classdetails/HeaderComponent.mjs +1 -0
- package/docs/app/view/classdetails/MainContainer.mjs +3 -0
- package/docs/app/view/classdetails/MembersList.mjs +5 -0
- package/docs/app/view/classdetails/SourceViewComponent.mjs +2 -0
- package/examples/ConfigurationViewport.mjs +14 -8
- package/examples/button/effect/MainContainer.mjs +207 -0
- package/examples/button/effect/app.mjs +6 -0
- package/examples/button/effect/index.html +11 -0
- package/examples/button/effect/neo-config.json +6 -0
- package/examples/calendar/weekview/MainContainer.mjs +4 -0
- package/examples/component/coronaGallery/CountryGallery.mjs +2 -0
- package/examples/component/coronaGallery/CountryStore.mjs +1 -0
- package/examples/component/coronaGallery/Viewport.mjs +3 -0
- package/examples/component/coronaGallery/ViewportController.mjs +1 -0
- package/examples/component/coronaHelix/CountryHelix.mjs +7 -0
- package/examples/component/coronaHelix/MainContainer.mjs +1 -0
- package/examples/component/gallery/ImageStore.mjs +1 -0
- package/examples/component/helix/ImageStore.mjs +1 -0
- package/examples/component/helix/Viewport.mjs +3 -0
- package/examples/component/helix/ViewportController.mjs +1 -0
- package/examples/component/multiWindowCoronaGallery/childapp/Viewport.mjs +1 -0
- package/examples/component/multiWindowHelix/childapp/Viewport.mjs +1 -0
- package/examples/component/wrapper/googleMaps/MapComponent.mjs +2 -0
- package/examples/core/config/MainContainer.mjs +2 -0
- package/examples/dialog/DemoDialog.mjs +2 -0
- package/examples/dialog/MainContainer.mjs +1 -0
- package/examples/form/field/color/MainStore.mjs +1 -0
- package/examples/functional/defineComponent/Component.mjs +18 -0
- package/examples/functional/defineComponent/MainContainer.mjs +41 -0
- package/examples/functional/defineComponent/app.mjs +6 -0
- package/examples/functional/defineComponent/index.html +11 -0
- package/examples/functional/defineComponent/neo-config.json +6 -0
- package/examples/functional/hostComponent/Component.mjs +32 -0
- package/examples/functional/hostComponent/MainContainer.mjs +48 -0
- package/examples/functional/hostComponent/app.mjs +6 -0
- package/examples/functional/hostComponent/index.html +11 -0
- package/examples/functional/hostComponent/neo-config.json +6 -0
- package/examples/grid/animatedRowSorting/Viewport.mjs +1 -1
- package/examples/grid/bigData/ControlsContainer.mjs +3 -0
- package/examples/grid/bigData/GridContainer.mjs +4 -2
- package/examples/grid/bigData/MainContainer.mjs +2 -0
- package/examples/grid/bigData/MainModel.mjs +1 -0
- package/examples/grid/bigData/MainStore.mjs +3 -0
- package/examples/grid/cellEditing/MainContainer.mjs +1 -1
- package/examples/grid/container/MainContainer.mjs +1 -1
- package/examples/grid/covid/GridContainer.mjs +3 -0
- package/examples/grid/covid/MainContainer.mjs +2 -0
- package/examples/grid/covid/Store.mjs +1 -0
- package/examples/grid/nestedRecordFields/EditUserDialog.mjs +3 -0
- package/examples/grid/nestedRecordFields/Viewport.mjs +3 -1
- package/examples/list/animate/List.mjs +4 -0
- package/examples/list/animate/MainContainer.mjs +2 -0
- package/examples/list/circle/MainStore.mjs +1 -0
- package/examples/list/color/MainStore.mjs +1 -0
- package/examples/preloadingAssets/view/MainContainer.mjs +2 -0
- package/examples/stateProvider/advanced/MainContainer.mjs +1 -0
- package/examples/stateProvider/dialog/EditUserDialog.mjs +2 -0
- package/examples/stateProvider/dialog/MainContainer.mjs +1 -0
- package/examples/stateProvider/extendedClass/MainContainer.mjs +2 -0
- package/examples/stateProvider/inline/MainContainer.mjs +1 -0
- package/examples/stateProvider/inlineNoStateProvider/MainContainer.mjs +1 -0
- package/examples/stateProvider/inlineNoStateProvider/MainContainerController.mjs +2 -0
- package/examples/stateProvider/multiWindow/EditUserDialog.mjs +3 -0
- package/examples/stateProvider/multiWindow/MainContainer.mjs +1 -0
- package/examples/stateProvider/multiWindow/Viewport.mjs +1 -0
- package/examples/stateProvider/nestedData/MainContainer.mjs +1 -0
- package/examples/stateProvider/table/MainContainer.mjs +1 -0
- package/examples/table/covid/MainContainer.mjs +2 -0
- package/examples/table/covid/Store.mjs +1 -0
- package/examples/table/covid/TableContainer.mjs +3 -0
- package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -0
- package/examples/table/nestedRecordFields/Viewport.mjs +1 -0
- package/examples/todoList/version1/MainComponent.mjs +1 -1
- package/examples/toolbar/breadcrumb/view/MainContainer.mjs +2 -0
- package/examples/toolbar/paging/store/Users.mjs +1 -0
- package/examples/toolbar/paging/view/AddUserDialog.mjs +3 -0
- package/examples/toolbar/paging/view/MainContainer.mjs +3 -0
- package/examples/treeAccordion/MainContainer.mjs +2 -2
- package/examples/worker/task/MainContainer.mjs +1 -0
- package/learn/Glossary.md +1 -0
- package/learn/UsingTheseTopics.md +1 -0
- package/learn/benefits/ConfigSystem.md +2 -0
- package/learn/benefits/Effort.md +1 -0
- package/learn/benefits/Features.md +1 -0
- package/learn/benefits/FormsEngine.md +1 -0
- package/learn/benefits/FourEnvironments.md +2 -0
- package/learn/benefits/Introduction.md +2 -0
- package/learn/benefits/MultiWindow.md +3 -1
- package/learn/benefits/OffTheMainThread.md +2 -0
- package/learn/benefits/Quick.md +2 -0
- package/learn/benefits/RPCLayer.md +2 -0
- package/learn/benefits/Speed.md +2 -0
- package/learn/comparisons/NeoVsAngular.md +90 -0
- package/learn/comparisons/NeoVsExtJs.md +178 -0
- package/learn/comparisons/NeoVsNextJs.md +124 -0
- package/learn/comparisons/NeoVsReact.md +95 -0
- package/learn/comparisons/NeoVsSolid.md +78 -0
- package/learn/comparisons/NeoVsVue.md +92 -0
- package/learn/comparisons/Overview.md +46 -0
- package/learn/gettingstarted/ComponentModels.md +2 -0
- package/learn/gettingstarted/Config.md +2 -0
- package/learn/gettingstarted/DescribingTheUI.md +2 -0
- package/learn/gettingstarted/Events.md +2 -0
- package/learn/gettingstarted/Extending.md +2 -0
- package/learn/gettingstarted/References.md +2 -0
- package/learn/gettingstarted/Setup.md +3 -2
- package/learn/gettingstarted/Workspaces.md +2 -0
- package/learn/guides/datahandling/Collections.md +1 -0
- package/learn/guides/datahandling/Records.md +1 -0
- package/learn/guides/datahandling/StateProviders.md +131 -16
- package/learn/guides/datahandling/Tables.md +1 -1
- package/learn/guides/fundamentals/ConfigSystemDeepDive.md +1 -0
- package/learn/guides/fundamentals/DeclarativeComponentTreesVsImperativeVdom.md +2 -0
- package/learn/guides/fundamentals/DeclarativeVDOMWithEffects.md +168 -0
- package/learn/guides/fundamentals/ExtendingNeoClasses.md +1 -0
- package/learn/guides/fundamentals/InstanceLifecycle.md +3 -1
- package/learn/guides/fundamentals/MainThreadAddons.md +2 -0
- package/learn/guides/specificfeatures/Mixins.md +3 -1
- package/learn/guides/specificfeatures/MultiWindow.md +3 -1
- package/learn/guides/specificfeatures/PortalApp.md +2 -0
- package/learn/guides/uibuildingblocks/ComponentsAndContainers.md +2 -0
- package/learn/guides/uibuildingblocks/CustomComponents.md +2 -0
- package/learn/guides/uibuildingblocks/Layouts.md +2 -0
- package/learn/guides/uibuildingblocks/WorkingWithVDom.md +2 -0
- package/learn/guides/userinteraction/Forms.md +2 -0
- package/learn/guides/userinteraction/events/CustomEvents.md +2 -1
- package/learn/guides/userinteraction/events/DomEvents.md +2 -0
- package/learn/javascript/ClassFeatures.md +4 -3
- package/learn/javascript/Classes.md +10 -13
- package/learn/javascript/Overrides.md +10 -6
- package/learn/javascript/Super.md +12 -8
- package/learn/tree.json +71 -63
- package/learn/tutorials/Earthquakes.md +2 -0
- package/learn/tutorials/RSP.md +3 -1
- package/learn/tutorials/TodoList.md +103 -7
- package/package.json +6 -4
- package/resources/scss/src/apps/email/ComposeView.scss +16 -0
- package/resources/scss/src/apps/email/MainView.scss +5 -0
- package/resources/scss/src/apps/portal/learn/ContentComponent.scss +5 -4
- package/src/DefaultConfig.mjs +12 -2
- package/src/Main.mjs +1 -0
- package/src/Neo.mjs +377 -178
- package/src/Xhr.mjs +1 -0
- package/src/button/Base.mjs +13 -0
- package/src/button/Effect.mjs +449 -0
- package/src/button/Split.mjs +2 -0
- package/src/calendar/store/Calendars.mjs +1 -0
- package/src/calendar/store/Colors.mjs +1 -0
- package/src/calendar/store/Events.mjs +1 -0
- package/src/calendar/view/DayComponent.mjs +2 -0
- package/src/calendar/view/EditEventContainer.mjs +4 -1
- package/src/calendar/view/MainContainer.mjs +13 -0
- package/src/calendar/view/MainContainerStateProvider.mjs +14 -28
- package/src/calendar/view/SettingsContainer.mjs +1 -0
- package/src/calendar/view/YearComponent.mjs +16 -0
- package/src/calendar/view/calendars/ColorsList.mjs +2 -0
- package/src/calendar/view/calendars/Container.mjs +2 -0
- package/src/calendar/view/calendars/EditContainer.mjs +1 -0
- package/src/calendar/view/month/Component.mjs +11 -0
- package/src/calendar/view/settings/GeneralContainer.mjs +1 -0
- package/src/calendar/view/settings/MonthContainer.mjs +1 -0
- package/src/calendar/view/settings/WeekContainer.mjs +1 -0
- package/src/calendar/view/settings/YearContainer.mjs +1 -0
- package/src/calendar/view/week/Component.mjs +15 -1
- package/src/calendar/view/week/TimeAxisComponent.mjs +4 -0
- package/src/code/LivePreview.mjs +51 -23
- package/src/collection/Base.mjs +14 -12
- package/src/collection/Filter.mjs +6 -0
- package/src/collection/Sorter.mjs +3 -0
- package/src/component/Base.mjs +156 -802
- package/src/component/Canvas.mjs +1 -0
- package/src/component/Chip.mjs +4 -0
- package/src/component/Circle.mjs +14 -0
- package/src/component/Clock.mjs +4 -0
- package/src/component/DateSelector.mjs +12 -0
- package/src/component/Gallery.mjs +11 -0
- package/src/component/Helix.mjs +24 -0
- package/src/component/Label.mjs +1 -0
- package/src/component/Legend.mjs +3 -0
- package/src/component/MagicMoveText.mjs +4 -0
- package/src/component/Progress.mjs +3 -0
- package/src/component/Splitter.mjs +3 -0
- package/src/component/StatusBadge.mjs +6 -0
- package/src/component/Timer.mjs +4 -0
- package/src/component/Toast.mjs +6 -0
- package/src/component/Video.mjs +1 -0
- package/src/component/mwc/Button.mjs +7 -0
- package/src/component/mwc/TextField.mjs +9 -0
- package/src/component/wrapper/AmChart.mjs +2 -0
- package/src/component/wrapper/GoogleMaps.mjs +3 -0
- package/src/component/wrapper/MapboxGL.mjs +5 -0
- package/src/component/wrapper/MonacoEditor.mjs +12 -0
- package/src/container/Accordion.mjs +2 -0
- package/src/container/Base.mjs +34 -26
- package/src/container/Panel.mjs +1 -0
- package/src/container/Viewport.mjs +1 -0
- package/src/controller/Application.mjs +1 -0
- package/src/controller/Base.mjs +1 -0
- package/src/controller/Component.mjs +1 -0
- package/src/core/Base.mjs +193 -22
- package/src/core/Compare.mjs +4 -7
- package/src/core/Config.mjs +137 -33
- package/src/core/Effect.mjs +193 -0
- package/src/core/EffectBatchManager.mjs +67 -0
- package/src/core/EffectManager.mjs +60 -0
- package/src/core/IdGenerator.mjs +13 -44
- package/src/data/Model.mjs +2 -0
- package/src/data/Store.mjs +7 -0
- package/src/data/connection/WebSocket.mjs +2 -0
- package/src/date/DayViewComponent.mjs +2 -0
- package/src/date/SelectorContainer.mjs +14 -0
- package/src/dialog/Base.mjs +8 -0
- package/src/draggable/DragZone.mjs +5 -0
- package/src/draggable/tree/DragZone.mjs +1 -0
- package/src/filter/BooleanContainer.mjs +2 -0
- package/src/filter/NumberContainer.mjs +3 -0
- package/src/filter/ToggleOperatorsButton.mjs +2 -0
- package/src/form/Fieldset.mjs +6 -0
- package/src/form/field/Base.mjs +7 -0
- package/src/form/field/CheckBox.mjs +18 -0
- package/src/form/field/Chip.mjs +1 -0
- package/src/form/field/ComboBox.mjs +8 -0
- package/src/form/field/Country.mjs +1 -0
- package/src/form/field/Currency.mjs +2 -0
- package/src/form/field/Date.mjs +4 -0
- package/src/form/field/Display.mjs +1 -0
- package/src/form/field/Email.mjs +1 -0
- package/src/form/field/FileUpload.mjs +7 -0
- package/src/form/field/Hidden.mjs +1 -0
- package/src/form/field/Number.mjs +7 -0
- package/src/form/field/Password.mjs +1 -0
- package/src/form/field/Phone.mjs +3 -0
- package/src/form/field/Picker.mjs +2 -0
- package/src/form/field/Radio.mjs +1 -0
- package/src/form/field/Range.mjs +3 -0
- package/src/form/field/Search.mjs +2 -0
- package/src/form/field/Text.mjs +32 -0
- package/src/form/field/TextArea.mjs +7 -0
- package/src/form/field/Time.mjs +6 -0
- package/src/form/field/Url.mjs +3 -0
- package/src/form/field/ZipCode.mjs +2 -0
- package/src/form/field/trigger/Base.mjs +3 -0
- package/src/form/field/trigger/Clear.mjs +2 -0
- package/src/form/field/trigger/CopyToClipboard.mjs +2 -0
- package/src/form/field/trigger/Date.mjs +1 -0
- package/src/form/field/trigger/Picker.mjs +1 -0
- package/src/form/field/trigger/Search.mjs +1 -0
- package/src/form/field/trigger/SpinDown.mjs +2 -0
- package/src/form/field/trigger/SpinUp.mjs +1 -0
- package/src/form/field/trigger/Time.mjs +2 -0
- package/src/functional/_export.mjs +6 -0
- package/src/functional/component/Base.mjs +499 -0
- package/src/functional/defineComponent.mjs +102 -0
- package/src/functional/useConfig.mjs +52 -0
- package/src/functional/useEvent.mjs +43 -0
- package/src/grid/Body.mjs +20 -1
- package/src/grid/Container.mjs +57 -63
- package/src/grid/ScrollManager.mjs +2 -0
- package/src/grid/VerticalScrollbar.mjs +2 -0
- package/src/grid/column/Base.mjs +2 -0
- package/src/grid/column/Component.mjs +1 -1
- package/src/grid/header/Button.mjs +7 -0
- package/src/grid/header/Toolbar.mjs +6 -0
- package/src/grid/plugin/AnimateRows.mjs +2 -0
- package/src/layout/Base.mjs +3 -0
- package/src/layout/Card.mjs +1 -0
- package/src/layout/Cube.mjs +11 -1
- package/src/layout/Fit.mjs +1 -0
- package/src/layout/Flexbox.mjs +7 -0
- package/src/layout/Form.mjs +2 -0
- package/src/layout/Grid.mjs +1 -0
- package/src/layout/HBox.mjs +1 -0
- package/src/layout/VBox.mjs +1 -0
- package/src/list/Base.mjs +13 -0
- package/src/list/Chip.mjs +1 -0
- package/src/list/Circle.mjs +2 -0
- package/src/list/Color.mjs +1 -0
- package/src/list/plugin/Animate.mjs +2 -0
- package/src/main/DeltaUpdates.mjs +1 -0
- package/src/main/DomEvents.mjs +2 -0
- package/src/main/addon/CloneNode.mjs +1 -0
- package/src/main/addon/Cookie.mjs +1 -0
- package/src/main/addon/GoogleMaps.mjs +1 -0
- package/src/main/addon/LocalStorage.mjs +1 -0
- package/src/main/addon/MapboxGL.mjs +1 -0
- package/src/main/addon/Markdown.mjs +1 -0
- package/src/main/addon/Navigator.mjs +1 -0
- package/src/main/addon/Popover.mjs +1 -0
- package/src/main/addon/Stylesheet.mjs +1 -0
- package/src/main/addon/WindowPosition.mjs +1 -0
- package/src/manager/Component.mjs +0 -71
- package/src/manager/VDomUpdate.mjs +235 -0
- package/src/menu/List.mjs +6 -0
- package/src/menu/Model.mjs +1 -0
- package/src/menu/Panel.mjs +3 -0
- package/src/menu/Store.mjs +1 -0
- package/src/mixin/DomEvents.mjs +130 -0
- package/src/mixin/VdomLifecycle.mjs +667 -0
- package/src/plugin/Base.mjs +1 -0
- package/src/plugin/Resizable.mjs +2 -0
- package/src/selection/Model.mjs +15 -18
- package/src/selection/grid/BaseModel.mjs +1 -0
- package/src/sitemap/Component.mjs +1 -0
- package/src/state/Provider.mjs +376 -457
- package/src/state/createHierarchicalDataProxy.mjs +138 -0
- package/src/tab/Container.mjs +6 -0
- package/src/tab/Strip.mjs +1 -0
- package/src/tab/header/Button.mjs +2 -0
- package/src/tab/header/EffectButton.mjs +77 -0
- package/src/tab/header/Toolbar.mjs +1 -0
- package/src/table/Body.mjs +3 -0
- package/src/table/Container.mjs +10 -0
- package/src/table/header/Button.mjs +8 -0
- package/src/table/header/Toolbar.mjs +5 -0
- package/src/table/plugin/CellEditing.mjs +1 -0
- package/src/toolbar/Base.mjs +4 -0
- package/src/toolbar/Breadcrumb.mjs +3 -0
- package/src/toolbar/Paging.mjs +5 -0
- package/src/tooltip/Base.mjs +2 -0
- package/src/tree/List.mjs +3 -0
- package/src/util/HashHistory.mjs +1 -0
- package/src/util/KeyNavigation.mjs +2 -0
- package/src/util/Matrix.mjs +1 -0
- package/src/util/VDom.mjs +7 -1
- package/src/util/VNode.mjs +7 -1
- package/src/util/vdom/TreeBuilder.mjs +129 -0
- package/src/vdom/Helper.mjs +44 -33
- package/src/vdom/VNode.mjs +5 -7
- package/src/worker/App.mjs +1 -5
- package/src/worker/Base.mjs +2 -0
- package/src/worker/Manager.mjs +2 -0
- package/src/worker/ServiceBase.mjs +6 -1
- package/test/siesta/siesta.js +36 -1
- package/test/siesta/tests/CollectionBase.mjs +10 -10
- package/test/siesta/tests/VdomCalendar.mjs +13 -9
- package/test/siesta/tests/VdomHelper.mjs +22 -59
- package/test/siesta/tests/config/AfterSetConfig.mjs +100 -0
- package/test/siesta/tests/{ReactiveConfigs.mjs → config/Basic.mjs} +58 -21
- package/test/siesta/tests/config/CircularDependencies.mjs +166 -0
- package/test/siesta/tests/config/CustomFunctions.mjs +69 -0
- package/test/siesta/tests/config/Hierarchy.mjs +94 -0
- package/test/siesta/tests/config/MemoryLeak.mjs +92 -0
- package/test/siesta/tests/config/MultiLevelHierarchy.mjs +85 -0
- package/test/siesta/tests/core/Effect.mjs +127 -0
- package/test/siesta/tests/core/EffectBatching.mjs +310 -0
- package/test/siesta/tests/neo/MixinStaticConfig.mjs +138 -0
- package/test/siesta/tests/state/Provider.mjs +537 -0
- package/test/siesta/tests/state/ProviderNestedDataConfigs.mjs +255 -0
- package/test/siesta/tests/state/createHierarchicalDataProxy.mjs +204 -0
- package/test/siesta/tests/vdom/VdomAsymmetricUpdates.mjs +366 -0
- package/test/siesta/tests/vdom/VdomRealWorldUpdates.mjs +249 -0
- package/learn/javascript/NewNode.md +0 -31
package/src/layout/Grid.mjs
CHANGED
package/src/layout/HBox.mjs
CHANGED
package/src/layout/VBox.mjs
CHANGED
package/src/list/Base.mjs
CHANGED
@@ -22,6 +22,7 @@ class List extends Component {
|
|
22
22
|
ntype: 'list',
|
23
23
|
/**
|
24
24
|
* @member {Boolean} animate_=false
|
25
|
+
* @reactive
|
25
26
|
*/
|
26
27
|
animate_: false,
|
27
28
|
/**
|
@@ -41,6 +42,7 @@ class List extends Component {
|
|
41
42
|
disabledField: 'disabled',
|
42
43
|
/**
|
43
44
|
* @member {Boolean} disableSelection_=false
|
45
|
+
* @reactive
|
44
46
|
*/
|
45
47
|
disableSelection_: false,
|
46
48
|
/**
|
@@ -49,6 +51,7 @@ class List extends Component {
|
|
49
51
|
displayField: 'name',
|
50
52
|
/**
|
51
53
|
* @member {Boolean} draggable_=false
|
54
|
+
* @reactive
|
52
55
|
*/
|
53
56
|
draggable_: false,
|
54
57
|
/**
|
@@ -63,12 +66,14 @@ class List extends Component {
|
|
63
66
|
* Keeps track of the focussed item index and allows bindings and programmatic changes.
|
64
67
|
* You can either pass the index or the related record
|
65
68
|
* @member {Number|Object|null} focusIndex_=null
|
69
|
+
* @reactive
|
66
70
|
*/
|
67
71
|
focusIndex_: null,
|
68
72
|
/**
|
69
73
|
* In case we are using list item headers and want to bind list item indexes to e.g. a card layout
|
70
74
|
* for e.g. a sidenav, this config comes in handy.
|
71
75
|
* @member {Number|null} headerlessSelectedIndex_=null
|
76
|
+
* @reactive
|
72
77
|
*/
|
73
78
|
headerlessSelectedIndex_: null,
|
74
79
|
/**
|
@@ -82,6 +87,7 @@ class List extends Component {
|
|
82
87
|
/**
|
83
88
|
* Defaults to px
|
84
89
|
* @member {Number|null} itemHeight_=null
|
90
|
+
* @reactive
|
85
91
|
*/
|
86
92
|
itemHeight_: null,
|
87
93
|
/**
|
@@ -92,6 +98,7 @@ class List extends Component {
|
|
92
98
|
/**
|
93
99
|
* Defaults to px
|
94
100
|
* @member {Number|null} itemWidth_=null
|
101
|
+
* @reactive
|
95
102
|
*/
|
96
103
|
itemWidth_: null,
|
97
104
|
/**
|
@@ -117,11 +124,13 @@ class List extends Component {
|
|
117
124
|
/**
|
118
125
|
* Keeps track of the selected item index and allows bindings and programmatic changes
|
119
126
|
* @member {Number|null} selectedIndex_=null
|
127
|
+
* @reactive
|
120
128
|
*/
|
121
129
|
selectedIndex_: null,
|
122
130
|
/**
|
123
131
|
* Either pass a selection.Model module, an instance or a config object
|
124
132
|
* @member {Object|Neo.selection.Model} selectionModel_=null
|
133
|
+
* @reactive
|
125
134
|
*/
|
126
135
|
selectionModel_: null,
|
127
136
|
/**
|
@@ -136,21 +145,25 @@ class List extends Component {
|
|
136
145
|
silentSelect: false,
|
137
146
|
/**
|
138
147
|
* @member {Neo.data.Store|null} store_=null
|
148
|
+
* @reactive
|
139
149
|
*/
|
140
150
|
store_: null,
|
141
151
|
/**
|
142
152
|
* True will add a checkbox in front of each list item
|
143
153
|
* @member {Boolean} stacked_=true
|
154
|
+
* @reactive
|
144
155
|
*/
|
145
156
|
useCheckBoxes_: false,
|
146
157
|
/**
|
147
158
|
* Setting this config to true will switch to dl, dt & dd tags instead of using ul & li.
|
148
159
|
* Use the {Boolean} model field isHeader.
|
149
160
|
* @member {Boolean} useHeaders_=false
|
161
|
+
* @reactive
|
150
162
|
*/
|
151
163
|
useHeaders_: false,
|
152
164
|
/**
|
153
165
|
* @member {Boolean} useWrapperNode_=false
|
166
|
+
* @reactive
|
154
167
|
*/
|
155
168
|
useWrapperNode_: false,
|
156
169
|
/**
|
package/src/list/Chip.mjs
CHANGED
package/src/list/Circle.mjs
CHANGED
@@ -30,11 +30,13 @@ class Circle extends ComponentList {
|
|
30
30
|
/**
|
31
31
|
* Defaults to px
|
32
32
|
* @member {Number|null} itemHeight=300
|
33
|
+
* @reactive
|
33
34
|
*/
|
34
35
|
itemHeight: 300,
|
35
36
|
/**
|
36
37
|
* Defaults to px
|
37
38
|
* @member {Number|null} itemWidth=300
|
39
|
+
* @reactive
|
38
40
|
*/
|
39
41
|
itemWidth: 300,
|
40
42
|
/**
|
package/src/list/Color.mjs
CHANGED
@@ -47,12 +47,14 @@ class Animate extends Base {
|
|
47
47
|
/**
|
48
48
|
* Time in ms. Please ensure to match the CSS based value, in case you change the default.
|
49
49
|
* @member {Number} transitionDuration_=500
|
50
|
+
* @reactive
|
50
51
|
*/
|
51
52
|
transitionDuration_: 500,
|
52
53
|
/**
|
53
54
|
* The easing used for fadeIn, fadeOut and position changes.
|
54
55
|
* Valid values: 'ease','ease-in','ease-out','ease-in-out','linear'
|
55
56
|
* @member {String} transitionEasing_='ease-in-out'
|
57
|
+
* @reactive
|
56
58
|
*/
|
57
59
|
transitionEasing_: 'ease-in-out',
|
58
60
|
/**
|
package/src/main/DomEvents.mjs
CHANGED
@@ -394,77 +394,6 @@ class Component extends Manager {
|
|
394
394
|
return parents
|
395
395
|
}
|
396
396
|
|
397
|
-
/**
|
398
|
-
* Copies a given vdom tree and replaces child component references with the vdom of their matching components
|
399
|
-
* @param {Object} vdom
|
400
|
-
* @param {Number} depth=-1
|
401
|
-
* The component replacement depth.
|
402
|
-
* -1 will parse the full tree, 1 top level only, 2 include children, 3 include grandchildren
|
403
|
-
* @returns {Object}
|
404
|
-
*/
|
405
|
-
getVdomTree(vdom, depth=-1) {
|
406
|
-
let output = {...vdom}, // shallow copy
|
407
|
-
childDepth;
|
408
|
-
|
409
|
-
if (vdom.cn) {
|
410
|
-
output.cn = [];
|
411
|
-
|
412
|
-
vdom.cn.forEach(item => {
|
413
|
-
childDepth = depth;
|
414
|
-
|
415
|
-
if (item.componentId) {
|
416
|
-
childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
|
417
|
-
|
418
|
-
if (depth === -1 || depth > 1) {
|
419
|
-
item = this.get(item.componentId).vdom
|
420
|
-
}
|
421
|
-
}
|
422
|
-
|
423
|
-
output.cn.push(this.getVdomTree(item, childDepth))
|
424
|
-
})
|
425
|
-
}
|
426
|
-
|
427
|
-
return output
|
428
|
-
}
|
429
|
-
|
430
|
-
/**
|
431
|
-
* Copies a given vnode tree and replaces child component references with the vnode of their matching components
|
432
|
-
* @param {Object} vnode
|
433
|
-
* @param {Number} depth=-1
|
434
|
-
* The component replacement depth.
|
435
|
-
* -1 will parse the full tree, 1 top level only, 2 include children, 3 include grandchildren
|
436
|
-
* @returns {Object}
|
437
|
-
*/
|
438
|
-
getVnodeTree(vnode, depth=-1) {
|
439
|
-
let output = {...vnode}, // shallow copy
|
440
|
-
childDepth, component;
|
441
|
-
|
442
|
-
if (vnode.childNodes) {
|
443
|
-
output.childNodes = [];
|
444
|
-
|
445
|
-
vnode.childNodes.forEach(item => {
|
446
|
-
childDepth = depth;
|
447
|
-
|
448
|
-
if (item.componentId) {
|
449
|
-
childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
|
450
|
-
|
451
|
-
if (depth === -1 || depth > 1) {
|
452
|
-
component = this.get(item.componentId);
|
453
|
-
|
454
|
-
// keep references in case there is no vnode (cmp not mounted)
|
455
|
-
if (component?.vnode) {
|
456
|
-
item = component.vnode
|
457
|
-
}
|
458
|
-
}
|
459
|
-
}
|
460
|
-
|
461
|
-
output.childNodes.push(this.getVnodeTree(item, childDepth))
|
462
|
-
})
|
463
|
-
}
|
464
|
-
|
465
|
-
return output
|
466
|
-
}
|
467
|
-
|
468
397
|
/**
|
469
398
|
* Check if the component had a property of any value somewhere in the Prototype chain
|
470
399
|
*
|
@@ -0,0 +1,235 @@
|
|
1
|
+
import Collection from '../collection/Base.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @class Neo.manager.VDomUpdate
|
5
|
+
* @extends Neo.collection.Base
|
6
|
+
* @singleton
|
7
|
+
*/
|
8
|
+
class VDomUpdate extends Collection {
|
9
|
+
static config = {
|
10
|
+
/**
|
11
|
+
* @member {String} className='Neo.manager.VDomUpdate'
|
12
|
+
* @protected
|
13
|
+
*/
|
14
|
+
className: 'Neo.manager.VDomUpdate',
|
15
|
+
/**
|
16
|
+
* @member {Boolean} singleton=true
|
17
|
+
* @protected
|
18
|
+
*/
|
19
|
+
singleton: true,
|
20
|
+
/**
|
21
|
+
* @member {Neo.collection.Base|null} mergedCallbackMap=null
|
22
|
+
* @protected
|
23
|
+
*/
|
24
|
+
mergedCallbackMap: null,
|
25
|
+
/**
|
26
|
+
* @member {Neo.collection.Base|null} postUpdateQueueMap=null
|
27
|
+
* @protected
|
28
|
+
*/
|
29
|
+
postUpdateQueueMap: null,
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @member {Map|null} inFlightUpdateMap=null
|
34
|
+
* @protected
|
35
|
+
*/
|
36
|
+
inFlightUpdateMap = null;
|
37
|
+
/**
|
38
|
+
* @member {Map|null} promiseCallbackMap=null
|
39
|
+
* @protected
|
40
|
+
*/
|
41
|
+
promiseCallbackMap = null;
|
42
|
+
|
43
|
+
/**
|
44
|
+
* @param {Object} config
|
45
|
+
*/
|
46
|
+
construct(config) {
|
47
|
+
super.construct(config);
|
48
|
+
|
49
|
+
const me = this;
|
50
|
+
|
51
|
+
me.inFlightUpdateMap = new Map();
|
52
|
+
me.mergedCallbackMap = Neo.create(Collection, {keyProperty: 'ownerId'});
|
53
|
+
me.postUpdateQueueMap = Neo.create(Collection, {keyProperty: 'ownerId'});
|
54
|
+
me.promiseCallbackMap = new Map();
|
55
|
+
}
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @param {String} ownerId
|
59
|
+
* @param {Function} callback
|
60
|
+
*/
|
61
|
+
addPromiseCallback(ownerId, callback) {
|
62
|
+
let me = this;
|
63
|
+
|
64
|
+
if (!me.promiseCallbackMap.has(ownerId)) {
|
65
|
+
me.promiseCallbackMap.set(ownerId, [])
|
66
|
+
}
|
67
|
+
|
68
|
+
me.promiseCallbackMap.get(ownerId).push(callback)
|
69
|
+
}
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Registers an update that is currently in-flight to the worker.
|
73
|
+
* @param {String} ownerId The ID of the component owning the update.
|
74
|
+
* @param {Number} updateDepth The depth of the in-flight update.
|
75
|
+
*/
|
76
|
+
registerInFlightUpdate(ownerId, updateDepth) {
|
77
|
+
this.inFlightUpdateMap.set(ownerId, updateDepth);
|
78
|
+
}
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Retrieves the update depth for an in-flight update.
|
82
|
+
* @param {String} ownerId The ID of the component owning the update.
|
83
|
+
* @returns {Number|undefined} The update depth, or undefined if not found.
|
84
|
+
*/
|
85
|
+
getInFlightUpdateDepth(ownerId) {
|
86
|
+
return this.inFlightUpdateMap.get(ownerId);
|
87
|
+
}
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Unregisters an in-flight update once it has completed.
|
91
|
+
* @param {String} ownerId The ID of the component owning the update.
|
92
|
+
*/
|
93
|
+
unregisterInFlightUpdate(ownerId) {
|
94
|
+
this.inFlightUpdateMap.delete(ownerId);
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* @param {String} ownerId
|
99
|
+
* @param {String} childId
|
100
|
+
* @param {Number} childUpdateDepth
|
101
|
+
* @param {Number} distance
|
102
|
+
*/
|
103
|
+
registerMerged(ownerId, childId, childUpdateDepth, distance) {
|
104
|
+
let me = this,
|
105
|
+
item = me.mergedCallbackMap.get(ownerId);
|
106
|
+
|
107
|
+
if (!item) {
|
108
|
+
item = {ownerId, children: new Map()};
|
109
|
+
me.mergedCallbackMap.add(item);
|
110
|
+
}
|
111
|
+
|
112
|
+
item.children.set(childId, {childUpdateDepth, distance});
|
113
|
+
}
|
114
|
+
|
115
|
+
/**
|
116
|
+
* @param {String} ownerId
|
117
|
+
* @param {String} childId
|
118
|
+
* @param {Function} [resolve]
|
119
|
+
*/
|
120
|
+
registerPostUpdate(ownerId, childId, resolve) {
|
121
|
+
let me = this,
|
122
|
+
item = me.postUpdateQueueMap.get(ownerId),
|
123
|
+
childCallbacks;
|
124
|
+
|
125
|
+
if (!item) {
|
126
|
+
item = {ownerId, children: []};
|
127
|
+
me.postUpdateQueueMap.add(item);
|
128
|
+
}
|
129
|
+
|
130
|
+
item.children.push({childId, resolve})
|
131
|
+
}
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Calculates the adjusted updateDepth for a parent component based on its merged children.
|
135
|
+
* This method is called by the parent component right before it executes its own VDOM update.
|
136
|
+
* @param {String} ownerId
|
137
|
+
* @returns {Number|null} The adjusted update depth or null if no merged children are found
|
138
|
+
*/
|
139
|
+
getAdjustedUpdateDepth(ownerId) {
|
140
|
+
let me = this,
|
141
|
+
owner = Neo.getComponent(ownerId),
|
142
|
+
item = me.mergedCallbackMap.get(ownerId),
|
143
|
+
maxDepth = owner?.updateDepth ?? 1,
|
144
|
+
newDepth;
|
145
|
+
|
146
|
+
if (item) {
|
147
|
+
item.children.forEach(value => {
|
148
|
+
if (value.childUpdateDepth === -1) {
|
149
|
+
newDepth = -1;
|
150
|
+
} else {
|
151
|
+
// The new depth is the distance to the child plus the child's own required update depth.
|
152
|
+
newDepth = value.distance + value.childUpdateDepth;
|
153
|
+
}
|
154
|
+
|
155
|
+
if (newDepth === -1) {
|
156
|
+
maxDepth = -1;
|
157
|
+
} else if (maxDepth !== -1) {
|
158
|
+
maxDepth = Math.max(maxDepth, newDepth);
|
159
|
+
}
|
160
|
+
});
|
161
|
+
|
162
|
+
return maxDepth;
|
163
|
+
}
|
164
|
+
|
165
|
+
return null;
|
166
|
+
}
|
167
|
+
|
168
|
+
/**
|
169
|
+
* Returns a Set of child IDs that have been merged into a parent's update.
|
170
|
+
* @param {String} ownerId The ID of the parent component owning the update.
|
171
|
+
* @returns {Set<String>|null} A Set containing the IDs of the merged children, or null.
|
172
|
+
*/
|
173
|
+
getMergedChildIds(ownerId) {
|
174
|
+
const item = this.mergedCallbackMap.get(ownerId);
|
175
|
+
if (item) {
|
176
|
+
return new Set(item.children.keys());
|
177
|
+
}
|
178
|
+
return null;
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* @param {String} ownerId
|
183
|
+
* @param {Object} [data]
|
184
|
+
*/
|
185
|
+
executeCallbacks(ownerId, data) {
|
186
|
+
let me = this,
|
187
|
+
item = me.mergedCallbackMap.get(ownerId),
|
188
|
+
callbackData = data ? [data] : [];
|
189
|
+
|
190
|
+
if (item) {
|
191
|
+
item.children.forEach((value, key) => {
|
192
|
+
me.executePromiseCallbacks(key, ...callbackData)
|
193
|
+
});
|
194
|
+
me.mergedCallbackMap.remove(item);
|
195
|
+
}
|
196
|
+
|
197
|
+
me.executePromiseCallbacks(ownerId, ...callbackData)
|
198
|
+
}
|
199
|
+
|
200
|
+
/**
|
201
|
+
* @param {String} ownerId
|
202
|
+
* @param {Object} [data]
|
203
|
+
*/
|
204
|
+
executePromiseCallbacks(ownerId, data) {
|
205
|
+
let me = this,
|
206
|
+
callbacks = me.promiseCallbackMap.get(ownerId);
|
207
|
+
|
208
|
+
callbacks?.forEach(callback => callback(data));
|
209
|
+
me.promiseCallbackMap.delete(ownerId);
|
210
|
+
}
|
211
|
+
|
212
|
+
/**
|
213
|
+
* @param {String} ownerId
|
214
|
+
*/
|
215
|
+
triggerPostUpdates(ownerId) {
|
216
|
+
let me = this,
|
217
|
+
item = me.postUpdateQueueMap.get(ownerId),
|
218
|
+
component;
|
219
|
+
|
220
|
+
if (item) {
|
221
|
+
item.children.forEach(entry => {
|
222
|
+
component = Neo.getComponent(entry.childId);
|
223
|
+
|
224
|
+
if (component) {
|
225
|
+
entry.resolve && me.addPromiseCallback(component.id, entry.resolve);
|
226
|
+
component.update();
|
227
|
+
}
|
228
|
+
});
|
229
|
+
|
230
|
+
me.postUpdateQueueMap.remove(item);
|
231
|
+
}
|
232
|
+
}
|
233
|
+
}
|
234
|
+
|
235
|
+
export default Neo.setupClass(VDomUpdate);
|
package/src/menu/List.mjs
CHANGED
@@ -41,6 +41,7 @@ class List extends BaseList {
|
|
41
41
|
/**
|
42
42
|
* Optionally pass menu.Store data directly
|
43
43
|
* @member {Object[]|null} items_=null
|
44
|
+
* @reactive
|
44
45
|
*/
|
45
46
|
items_: null,
|
46
47
|
/**
|
@@ -48,6 +49,7 @@ class List extends BaseList {
|
|
48
49
|
* Sub-menus will bubble focus changes to the top level.
|
49
50
|
* @member {Boolean} menuFocus_=false
|
50
51
|
* @protected
|
52
|
+
* @reactive
|
51
53
|
*/
|
52
54
|
menuFocus_: false,
|
53
55
|
/**
|
@@ -72,11 +74,13 @@ class List extends BaseList {
|
|
72
74
|
/**
|
73
75
|
* Value for the list.Base selectionModel_ config
|
74
76
|
* @member {Neo.selection.menu.ListModel} selectionModel=ListModel
|
77
|
+
* @reactive
|
75
78
|
*/
|
76
79
|
selectionModel: ListModel,
|
77
80
|
/**
|
78
81
|
* Value for the list.Base store_ config
|
79
82
|
* @member {Neo.menu.Store} store=Store
|
83
|
+
* @reactive
|
80
84
|
*/
|
81
85
|
store: Store,
|
82
86
|
/**
|
@@ -94,6 +98,7 @@ class List extends BaseList {
|
|
94
98
|
/**
|
95
99
|
* We are applying a z-index style which is 1 number higher to each sub-menu
|
96
100
|
* @member {Number} zIndex_=100
|
101
|
+
* @reactive
|
97
102
|
*/
|
98
103
|
zIndex_: 100,
|
99
104
|
/**
|
@@ -106,6 +111,7 @@ class List extends BaseList {
|
|
106
111
|
/**
|
107
112
|
* If the menu is floating, it will anchor itself to the parentRect
|
108
113
|
* @member {Neo.component.Base|null} parentComponent=null
|
114
|
+
* @reactive
|
109
115
|
*/
|
110
116
|
parentComponent = null
|
111
117
|
|
package/src/menu/Model.mjs
CHANGED
package/src/menu/Panel.mjs
CHANGED
@@ -25,6 +25,7 @@ class Panel extends BasePanel {
|
|
25
25
|
/**
|
26
26
|
* @member {Neo.menu.List} list_=List
|
27
27
|
* @protected
|
28
|
+
* @reactive
|
28
29
|
*/
|
29
30
|
list_: List,
|
30
31
|
/**
|
@@ -35,12 +36,14 @@ class Panel extends BasePanel {
|
|
35
36
|
/**
|
36
37
|
* Optionally pass menu.Store data directly
|
37
38
|
* @member {Object[]|null} listItems_=null
|
39
|
+
* @reactive
|
38
40
|
*/
|
39
41
|
listItems_: null,
|
40
42
|
/**
|
41
43
|
* The distance in px between a menu and a child menu
|
42
44
|
* See: https://github.com/neomjs/neo/issues/2569
|
43
45
|
* @member {Number} subMenuGap_=0
|
46
|
+
* @reactive
|
44
47
|
*/
|
45
48
|
subMenuGap_: 0
|
46
49
|
}
|