neo.mjs 10.0.0-beta.5 → 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.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/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 +130 -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 +10 -8
- 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 -64
- 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 +217 -166
- package/src/Xhr.mjs +1 -0
- package/src/button/Base.mjs +13 -0
- package/src/button/Effect.mjs +16 -2
- 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 +7 -10
- package/src/collection/Filter.mjs +6 -0
- package/src/collection/Sorter.mjs +3 -0
- package/src/component/Base.mjs +104 -771
- 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 +7 -3
- 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 +55 -3
- package/src/core/Compare.mjs +4 -7
- package/src/core/Config.mjs +65 -52
- package/src/core/Effect.mjs +79 -13
- package/src/core/EffectBatchManager.mjs +18 -19
- package/src/core/EffectManager.mjs +25 -3
- 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 +50 -60
- 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/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 +98 -70
- package/src/state/createHierarchicalDataProxy.mjs +39 -25
- 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 +2 -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 +35 -23
- package/src/vdom/VNode.mjs +4 -6
- package/src/worker/App.mjs +1 -0
- 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 +5 -2
- package/test/siesta/tests/VdomCalendar.mjs +13 -9
- package/test/siesta/tests/core/Effect.mjs +10 -14
- package/test/siesta/tests/core/EffectBatching.mjs +25 -37
- package/test/siesta/tests/state/ProviderNestedDataConfigs.mjs +255 -0
- package/test/siesta/tests/state/createHierarchicalDataProxy.mjs +42 -55
- 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/core/Effect.mjs
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import
|
1
|
+
import Config from './Config.mjs';
|
2
|
+
import EffectManager from './EffectManager.mjs';
|
2
3
|
import EffectBatchManager from './EffectBatchManager.mjs';
|
3
4
|
import IdGenerator from './IdGenerator.mjs';
|
4
5
|
|
@@ -9,6 +10,11 @@ import IdGenerator from './IdGenerator.mjs';
|
|
9
10
|
* @class Neo.core.Effect
|
10
11
|
*/
|
11
12
|
class Effect {
|
13
|
+
/**
|
14
|
+
* The optional component id this effect belongs to.
|
15
|
+
* @member {String|null} componentId=null
|
16
|
+
*/
|
17
|
+
componentId = null
|
12
18
|
/**
|
13
19
|
* A Map containing Config instances as keys and their cleanup functions as values.
|
14
20
|
* @member {Map} dependencies=new Map()
|
@@ -31,10 +37,10 @@ class Effect {
|
|
31
37
|
*/
|
32
38
|
isDestroyed = false
|
33
39
|
/**
|
34
|
-
* @member {
|
40
|
+
* @member {Neo.core.Config}
|
35
41
|
* @protected
|
36
42
|
*/
|
37
|
-
isRunning =
|
43
|
+
isRunning = null
|
38
44
|
|
39
45
|
/**
|
40
46
|
* @member fn
|
@@ -51,11 +57,52 @@ class Effect {
|
|
51
57
|
}
|
52
58
|
|
53
59
|
/**
|
54
|
-
* @param {Object} config
|
55
|
-
* @param {Function}
|
60
|
+
* @param {Function|Object} fn - The function to execute, or a config object for the effect.
|
61
|
+
* @param {Function} [fn.fn] - The function to execute for the effect (if the first argument is an object).
|
62
|
+
* @param {String} [fn.componentId] - The component id this effect belongs to.
|
63
|
+
* @param {Boolean} [fn.lazy=false] - If true, the effect will not run immediately upon creation.
|
64
|
+
* @param {Object|Object[]} [fn.subscriber] - A single subscriber or an array of subscribers for the isRunning config.
|
65
|
+
* @param {Object} [options={}] - Optional. Used if the first argument is a function, this object contains the options.
|
66
|
+
* @example
|
67
|
+
* // Signature 1: Function and Options
|
68
|
+
* const myEffect = new Effect(() => console.log('Run'), {lazy: true});
|
69
|
+
* @example
|
70
|
+
* // Signature 2: Single Config Object
|
71
|
+
* const myEffect = new Effect({fn: () => console.log('Run'), lazy: true});
|
56
72
|
*/
|
57
|
-
constructor({
|
58
|
-
|
73
|
+
constructor(fn, options={}) {
|
74
|
+
const me = this;
|
75
|
+
|
76
|
+
// This single statement handles both (fn, options) and ({...}) signatures
|
77
|
+
// by normalizing them into a single object that we can destructure.
|
78
|
+
const {
|
79
|
+
fn: effectFn,
|
80
|
+
componentId,
|
81
|
+
lazy = false,
|
82
|
+
subscriber
|
83
|
+
} = (typeof fn === 'function') ? { ...options, fn } : (fn || {});
|
84
|
+
|
85
|
+
if (componentId) {
|
86
|
+
me.componentId = componentId
|
87
|
+
}
|
88
|
+
|
89
|
+
me.isRunning = new Config(false);
|
90
|
+
|
91
|
+
// The subscriber(s) must be added *before* the first run is triggered.
|
92
|
+
// This is critical for consumers like functional components, which need to process
|
93
|
+
// the initial VDOM synchronously within the constructor lifecycle.
|
94
|
+
if (subscriber) {
|
95
|
+
// A concise way to handle both single and array subscribers.
|
96
|
+
[].concat(subscriber).forEach(sub => me.isRunning.subscribe(sub))
|
97
|
+
}
|
98
|
+
|
99
|
+
// If lazy, just store the function without running it.
|
100
|
+
// Otherwise, use the setter to trigger the initial run.
|
101
|
+
if (lazy) {
|
102
|
+
me._fn = effectFn
|
103
|
+
} else {
|
104
|
+
me.fn = effectFn
|
105
|
+
}
|
59
106
|
}
|
60
107
|
|
61
108
|
/**
|
@@ -79,25 +126,32 @@ class Effect {
|
|
79
126
|
run() {
|
80
127
|
const me = this;
|
81
128
|
|
82
|
-
|
129
|
+
EffectManager.pause(); // Pause dependency tracking for isRunning.get()
|
130
|
+
if (me.isDestroyed || me.isRunning.get()) {
|
131
|
+
EffectManager.resume(); // Resume if we return early
|
132
|
+
return
|
133
|
+
}
|
83
134
|
|
84
135
|
if (EffectBatchManager.isBatchActive()) {
|
85
136
|
EffectBatchManager.queueEffect(me);
|
86
137
|
return
|
87
138
|
}
|
88
139
|
|
89
|
-
me.isRunning
|
140
|
+
me.isRunning.set(true);
|
90
141
|
|
91
142
|
me.dependencies.forEach(cleanup => cleanup());
|
92
143
|
me.dependencies.clear();
|
93
144
|
|
94
145
|
EffectManager.push(me);
|
146
|
+
EffectManager.resume();
|
95
147
|
|
96
148
|
try {
|
97
149
|
me.fn()
|
98
150
|
} finally {
|
99
151
|
EffectManager.pop();
|
100
|
-
|
152
|
+
EffectManager.pause(); // Pause dependency tracking for isRunning.set(false)
|
153
|
+
me.isRunning.set(false);
|
154
|
+
EffectManager.resume() // Resume after isRunning.set(false)
|
101
155
|
}
|
102
156
|
}
|
103
157
|
|
@@ -121,7 +175,19 @@ class Effect {
|
|
121
175
|
}
|
122
176
|
}
|
123
177
|
|
124
|
-
|
125
|
-
|
178
|
+
Neo.core ??= {};
|
179
|
+
|
180
|
+
if (!Neo.core.Effect) {
|
181
|
+
Neo.core.Effect = Effect;
|
182
|
+
|
183
|
+
/**
|
184
|
+
* Factory shortcut to create a new Neo.core.Effect instance.
|
185
|
+
* @function Neo.effect
|
186
|
+
* @param {Function|Object} fn - The function to execute, or a config object for the effect.
|
187
|
+
* @param {Object} [options] - Optional. Used if the first argument is a function.
|
188
|
+
* @returns {Neo.core.Effect}
|
189
|
+
*/
|
190
|
+
Neo.effect = (fn, options) => new Effect(fn, options)
|
191
|
+
}
|
126
192
|
|
127
|
-
export default Effect;
|
193
|
+
export default Neo.core.Effect;
|
@@ -19,27 +19,22 @@ const EffectBatchManager = {
|
|
19
19
|
*/
|
20
20
|
pendingEffects: new Set(),
|
21
21
|
|
22
|
-
/**
|
23
|
-
* Increments the batch counter. When `batchCount` is greater than 0,
|
24
|
-
* effects will be queued instead of running immediately.
|
25
|
-
*/
|
26
|
-
startBatch() {
|
27
|
-
this.batchCount++
|
28
|
-
},
|
29
|
-
|
30
22
|
/**
|
31
23
|
* Decrements the batch counter. If `batchCount` reaches 0, all queued effects
|
32
24
|
* are executed and the `pendingEffects` Set is cleared.
|
33
25
|
*/
|
34
26
|
endBatch() {
|
35
|
-
this
|
27
|
+
const me = this;
|
28
|
+
|
29
|
+
me.batchCount--;
|
36
30
|
|
37
|
-
if (
|
38
|
-
|
39
|
-
|
40
|
-
});
|
31
|
+
if (me.batchCount === 0) {
|
32
|
+
const effectsToRun = [...me.pendingEffects]; // Create a snapshot
|
33
|
+
me.pendingEffects.clear();
|
41
34
|
|
42
|
-
|
35
|
+
effectsToRun.forEach(effect => {
|
36
|
+
effect.run()
|
37
|
+
})
|
43
38
|
}
|
44
39
|
},
|
45
40
|
|
@@ -58,11 +53,15 @@ const EffectBatchManager = {
|
|
58
53
|
*/
|
59
54
|
queueEffect(effect) {
|
60
55
|
this.pendingEffects.add(effect)
|
56
|
+
},
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Increments the batch counter. When `batchCount` is greater than 0,
|
60
|
+
* effects will be queued instead of running immediately.
|
61
|
+
*/
|
62
|
+
startBatch() {
|
63
|
+
this.batchCount++
|
61
64
|
}
|
62
65
|
};
|
63
66
|
|
64
|
-
|
65
|
-
const ns = Neo.ns('Neo.core', true);
|
66
|
-
ns.EffectBatchManager = EffectBatchManager;
|
67
|
-
|
68
|
-
export default EffectBatchManager;
|
67
|
+
export default Neo.gatekeep(EffectBatchManager, 'Neo.core.EffectBatchManager');
|
@@ -6,6 +6,16 @@
|
|
6
6
|
*/
|
7
7
|
const EffectManager = {
|
8
8
|
effectStack: [],
|
9
|
+
isPaused : false,
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Adds a `Neo.core.Config` instance as a dependency for the currently active effect.
|
13
|
+
* This method checks if the EffectManager is paused before adding the dependency.
|
14
|
+
* @param {Neo.core.Config} config The config instance to add as a dependency.
|
15
|
+
*/
|
16
|
+
addDependency(config) {
|
17
|
+
!this.isPaused && this.getActiveEffect()?.addDependency(config)
|
18
|
+
},
|
9
19
|
|
10
20
|
/**
|
11
21
|
* Returns the effect currently at the top of the stack (i.e., the one currently running).
|
@@ -15,6 +25,13 @@ const EffectManager = {
|
|
15
25
|
return this.effectStack[this.effectStack.length - 1]
|
16
26
|
},
|
17
27
|
|
28
|
+
/**
|
29
|
+
* Pauses dependency tracking for effects. While paused, calls to `addDependency` will be ignored.
|
30
|
+
*/
|
31
|
+
pause() {
|
32
|
+
this.isPaused = true;
|
33
|
+
},
|
34
|
+
|
18
35
|
/**
|
19
36
|
* Pops the current effect from the stack, returning to the previous effect (if any).
|
20
37
|
* @returns {Neo.core.Effect|null}
|
@@ -29,10 +46,15 @@ const EffectManager = {
|
|
29
46
|
*/
|
30
47
|
push(effect) {
|
31
48
|
this.effectStack.push(effect)
|
49
|
+
},
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Resumes dependency tracking for effects.
|
53
|
+
*/
|
54
|
+
resume() {
|
55
|
+
this.isPaused = false;
|
32
56
|
}
|
33
57
|
};
|
34
58
|
|
35
|
-
|
36
|
-
ns.EffectManager = EffectManager;
|
59
|
+
export default Neo.gatekeep(EffectManager, 'Neo.core.EffectManager');
|
37
60
|
|
38
|
-
export default EffectManager;
|
package/src/core/IdGenerator.mjs
CHANGED
@@ -1,44 +1,17 @@
|
|
1
1
|
/**
|
2
|
-
*
|
3
|
-
*
|
4
|
-
* @class Neo.core.IdGenerator
|
5
|
-
* @singleton
|
2
|
+
* Provides a singleton utility for generating unique IDs.
|
3
|
+
* @namespace Neo.core.IdGenerator
|
6
4
|
*/
|
7
|
-
|
8
|
-
static config = {
|
9
|
-
/**
|
10
|
-
* @member {String} className='Neo.core.IdGenerator'
|
11
|
-
* @protected
|
12
|
-
*/
|
13
|
-
className: 'Neo.core.IdGenerator',
|
14
|
-
/**
|
15
|
-
* @member {String} ntype='id-generator'
|
16
|
-
* @protected
|
17
|
-
*/
|
18
|
-
ntype: 'id-generator',
|
19
|
-
/**
|
20
|
-
* The default prefix for neo instance ids
|
21
|
-
* @member {String} base='neo-'
|
22
|
-
*/
|
23
|
-
base: 'neo-',
|
24
|
-
/**
|
25
|
-
* @member {Boolean} singleton='true
|
26
|
-
* @protected
|
27
|
-
*/
|
28
|
-
singleton: true
|
29
|
-
}
|
30
|
-
|
5
|
+
const IdGenerator = {
|
31
6
|
/**
|
32
|
-
*
|
7
|
+
* The default prefix for neo instance ids
|
8
|
+
* @member {String} base='neo-'
|
33
9
|
*/
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
// alias
|
40
|
-
Neo.getId = me.getId.bind(me);
|
41
|
-
}
|
10
|
+
base: 'neo-',
|
11
|
+
/**
|
12
|
+
* @member {Object} idCounter={}
|
13
|
+
*/
|
14
|
+
idCounter: {},
|
42
15
|
|
43
16
|
/**
|
44
17
|
* @param name
|
@@ -55,12 +28,8 @@ class IdGenerator {
|
|
55
28
|
|
56
29
|
return me.base + (name === 'neo' ? '' : name + '-') + count;
|
57
30
|
}
|
58
|
-
|
59
|
-
init() {}
|
60
|
-
|
61
|
-
onAfterConstructed() {}
|
62
|
-
|
63
|
-
onConstructed() {}
|
64
31
|
}
|
65
32
|
|
66
|
-
export default Neo.
|
33
|
+
export default Neo.gatekeep(IdGenerator, 'Neo.core.IdGenerator', () => {
|
34
|
+
Neo.getId = IdGenerator.getId.bind(IdGenerator);
|
35
|
+
});
|
package/src/data/Model.mjs
CHANGED
package/src/data/Store.mjs
CHANGED
@@ -7,6 +7,7 @@ import RecordFactory from './RecordFactory.mjs';
|
|
7
7
|
/**
|
8
8
|
* @class Neo.data.Store
|
9
9
|
* @extends Neo.collection.Base
|
10
|
+
* @mixes Neo.core.Observable
|
10
11
|
*/
|
11
12
|
class Store extends Base {
|
12
13
|
/**
|
@@ -42,6 +43,7 @@ class Store extends Base {
|
|
42
43
|
* @example
|
43
44
|
* api: 'MyApp.backend.UserService'
|
44
45
|
* @member {Object|String|null} api_=null
|
46
|
+
* @reactive
|
45
47
|
*/
|
46
48
|
api_: null,
|
47
49
|
/**
|
@@ -50,14 +52,17 @@ class Store extends Base {
|
|
50
52
|
autoLoad: false,
|
51
53
|
/**
|
52
54
|
* @member {Number} currentPage_=1
|
55
|
+
* @reactive
|
53
56
|
*/
|
54
57
|
currentPage_: 1,
|
55
58
|
/**
|
56
59
|
* @member {Array|null} data_=null
|
60
|
+
* @reactive
|
57
61
|
*/
|
58
62
|
data_: null,
|
59
63
|
/**
|
60
64
|
* @member {Array|null} initialData_=null
|
65
|
+
* @reactive
|
61
66
|
*/
|
62
67
|
initialData_: null,
|
63
68
|
/**
|
@@ -74,11 +79,13 @@ class Store extends Base {
|
|
74
79
|
isLoading: false,
|
75
80
|
/**
|
76
81
|
* @member {Neo.data.Model} model_=null
|
82
|
+
* @reactive
|
77
83
|
*/
|
78
84
|
model_: null,
|
79
85
|
/**
|
80
86
|
* Use a value of 0 to not limit the pageSize
|
81
87
|
* @member {Number} pageSize_=0
|
88
|
+
* @reactive
|
82
89
|
*/
|
83
90
|
pageSize_: 0,
|
84
91
|
/**
|
@@ -5,6 +5,7 @@ import Observable from '../../core/Observable.mjs';
|
|
5
5
|
/**
|
6
6
|
* @class Neo.data.connection.WebSocket
|
7
7
|
* @extends Neo.core.Base
|
8
|
+
* @mixes Neo.core.Observable
|
8
9
|
*/
|
9
10
|
class Socket extends Base {
|
10
11
|
/**
|
@@ -28,6 +29,7 @@ class Socket extends Base {
|
|
28
29
|
/**
|
29
30
|
* @member {WebSocket|null} socket_=null
|
30
31
|
* @protected
|
32
|
+
* @reactive
|
31
33
|
*/
|
32
34
|
socket_: null
|
33
35
|
}
|
@@ -41,6 +41,7 @@ class DayViewComponent extends Base {
|
|
41
41
|
/**
|
42
42
|
* @member {Date|null} currentDate_=null
|
43
43
|
* @protected
|
44
|
+
* @reactive
|
44
45
|
*/
|
45
46
|
currentDate_: null,
|
46
47
|
/**
|
@@ -51,6 +52,7 @@ class DayViewComponent extends Base {
|
|
51
52
|
/**
|
52
53
|
* 0-6 => Sun-Sat
|
53
54
|
* @member {Number} weekStartDay_=0
|
55
|
+
* @reactive
|
54
56
|
*/
|
55
57
|
weekStartDay_: 0,
|
56
58
|
/**
|
@@ -40,6 +40,7 @@ class SelectorContainer extends Container {
|
|
40
40
|
* Date object created on the value config
|
41
41
|
* @member {Date|null} currentDate_=null
|
42
42
|
* @protected
|
43
|
+
* @reactive
|
43
44
|
*/
|
44
45
|
currentDate_: null,
|
45
46
|
/**
|
@@ -50,17 +51,20 @@ class SelectorContainer extends Container {
|
|
50
51
|
* The format of the column headers.
|
51
52
|
* Valid values are: narrow, short & long
|
52
53
|
* @member {String} dayNameFormat_='short'
|
54
|
+
* @reactive
|
53
55
|
*/
|
54
56
|
dayNameFormat_: 'short',
|
55
57
|
/**
|
56
58
|
* @member {Intl.DateTimeFormat|null} intlFormatDay_=null
|
57
59
|
* @protected
|
60
|
+
* @reactive
|
58
61
|
*/
|
59
62
|
intlFormatDay_: null,
|
60
63
|
/**
|
61
64
|
* Internal flag to prevent changing the date while change animations are still running
|
62
65
|
* @member {Boolean} isUpdating_=false
|
63
66
|
* @protected
|
67
|
+
* @reactive
|
64
68
|
*/
|
65
69
|
isUpdating_: false,
|
66
70
|
/**
|
@@ -104,14 +108,17 @@ class SelectorContainer extends Container {
|
|
104
108
|
keys: {},
|
105
109
|
/**
|
106
110
|
* @member {String} locale_=Neo.config.locale
|
111
|
+
* @reactive
|
107
112
|
*/
|
108
113
|
locale_: Neo.config.locale,
|
109
114
|
/**
|
110
115
|
* @member {String|null} maxValue_=null
|
116
|
+
* @reactive
|
111
117
|
*/
|
112
118
|
maxValue_: null,
|
113
119
|
/**
|
114
120
|
* @member {String|null} minValue_=null
|
121
|
+
* @reactive
|
115
122
|
*/
|
116
123
|
minValue_: null,
|
117
124
|
/**
|
@@ -129,24 +136,29 @@ class SelectorContainer extends Container {
|
|
129
136
|
/**
|
130
137
|
* Either pass a selection.Model module, an instance or a config object
|
131
138
|
* @member {Object|Neo.selection.Model} selectionModel_=null
|
139
|
+
* @reactive
|
132
140
|
*/
|
133
141
|
selectionModel_: null,
|
134
142
|
/**
|
135
143
|
* True to show inner cell & header cell borders
|
136
144
|
* @member {Boolean} showCellBorders_=true
|
145
|
+
* @reactive
|
137
146
|
*/
|
138
147
|
showCellBorders_: false,
|
139
148
|
/**
|
140
149
|
* True to show the days of the previous or next month (not selectable)
|
141
150
|
* @member {Boolean} showDisabledDays_=true
|
151
|
+
* @reactive
|
142
152
|
*/
|
143
153
|
showDisabledDays_: true,
|
144
154
|
/**
|
145
155
|
* @member {Boolean} showWeekends_=true
|
156
|
+
* @reactive
|
146
157
|
*/
|
147
158
|
showWeekends_: true,
|
148
159
|
/**
|
149
160
|
* @member {Neo.state.Provider} stateProvider=SelectorContainerStateProvider
|
161
|
+
* @reactive
|
150
162
|
*/
|
151
163
|
stateProvider: SelectorContainerStateProvider,
|
152
164
|
/**
|
@@ -156,11 +168,13 @@ class SelectorContainer extends Container {
|
|
156
168
|
useAnimations: true,
|
157
169
|
/**
|
158
170
|
* @member {String} value_=DateUtil.convertToyyyymmdd(new Date())
|
171
|
+
* @reactive
|
159
172
|
*/
|
160
173
|
value_: DateUtil.convertToyyyymmdd(todayDate),
|
161
174
|
/**
|
162
175
|
* 0-6 => Sun-Sat
|
163
176
|
* @member {Number} weekStartDay_=0
|
177
|
+
* @reactive
|
164
178
|
*/
|
165
179
|
weekStartDay_: 0
|
166
180
|
}
|
package/src/dialog/Base.mjs
CHANGED
@@ -35,6 +35,7 @@ class Dialog extends Panel {
|
|
35
35
|
animateOnDragEnd: false,
|
36
36
|
/**
|
37
37
|
* @member {String|null} animateTargetId_=null
|
38
|
+
* @reactive
|
38
39
|
*/
|
39
40
|
animateTargetId_: null,
|
40
41
|
/**
|
@@ -68,6 +69,7 @@ class Dialog extends Panel {
|
|
68
69
|
closeAction: 'close',
|
69
70
|
/**
|
70
71
|
* @member {Boolean} draggable_=true
|
72
|
+
* @reactive
|
71
73
|
*/
|
72
74
|
draggable_: true,
|
73
75
|
/**
|
@@ -102,6 +104,7 @@ class Dialog extends Panel {
|
|
102
104
|
isDragging: false,
|
103
105
|
/**
|
104
106
|
* @member {Object} keys={Escape:'onKeyDownEscape'}
|
107
|
+
* @reactive
|
105
108
|
*/
|
106
109
|
keys: {
|
107
110
|
Escape: 'onKeyDownEscape'
|
@@ -112,6 +115,7 @@ class Dialog extends Panel {
|
|
112
115
|
maximizeCls: 'far fa-window-maximize',
|
113
116
|
/**
|
114
117
|
* @member {Boolean} maximized_=false
|
118
|
+
* @reactive
|
115
119
|
*/
|
116
120
|
maximized_: false,
|
117
121
|
/**
|
@@ -120,10 +124,12 @@ class Dialog extends Panel {
|
|
120
124
|
minimizeCls: 'far fa-window-minimize',
|
121
125
|
/**
|
122
126
|
* @member {Boolean} modal_=false
|
127
|
+
* @reactive
|
123
128
|
*/
|
124
129
|
modal_: false,
|
125
130
|
/**
|
126
131
|
* @member {Boolean} resizable_=true
|
132
|
+
* @reactive
|
127
133
|
*/
|
128
134
|
resizable_: true,
|
129
135
|
/**
|
@@ -132,12 +138,14 @@ class Dialog extends Panel {
|
|
132
138
|
resizablePluginConfig: null,
|
133
139
|
/**
|
134
140
|
* @member {String|null} title_=null
|
141
|
+
* @reactive
|
135
142
|
*/
|
136
143
|
title_: null,
|
137
144
|
/**
|
138
145
|
* Set to `true` to have tabbing wrap within this Dialog.
|
139
146
|
* Should be used with `modal`.
|
140
147
|
* @member {Boolean} trapFocus_=false
|
148
|
+
* @reactive
|
141
149
|
*/
|
142
150
|
trapFocus_: false
|
143
151
|
}
|
@@ -7,6 +7,7 @@ import VDomUtil from '../util/VDom.mjs';
|
|
7
7
|
/**
|
8
8
|
* @class Neo.draggable.DragZone
|
9
9
|
* @extends Neo.core.Base
|
10
|
+
* @mixes Neo.core.Observable
|
10
11
|
*/
|
11
12
|
class DragZone extends Base {
|
12
13
|
/**
|
@@ -42,6 +43,7 @@ class DragZone extends Base {
|
|
42
43
|
/**
|
43
44
|
* The name of the App this instance belongs to
|
44
45
|
* @member {String|null} appName_=null
|
46
|
+
* @reactive
|
45
47
|
*/
|
46
48
|
appName_: null,
|
47
49
|
/**
|
@@ -85,6 +87,7 @@ class DragZone extends Base {
|
|
85
87
|
dragProxy: null,
|
86
88
|
/**
|
87
89
|
* @member {Object|null} dragProxyConfig_=null
|
90
|
+
* @reactive
|
88
91
|
*/
|
89
92
|
dragProxyConfig_: null,
|
90
93
|
/**
|
@@ -135,6 +138,7 @@ class DragZone extends Base {
|
|
135
138
|
owner: null,
|
136
139
|
/**
|
137
140
|
* @member {String} proxyParentId_='document.body'
|
141
|
+
* @reactive
|
138
142
|
*/
|
139
143
|
proxyParentId_: 'document.body',
|
140
144
|
/**
|
@@ -156,6 +160,7 @@ class DragZone extends Base {
|
|
156
160
|
useProxyWrapper: true,
|
157
161
|
/**
|
158
162
|
* @member {Number|null} windowId_=null
|
163
|
+
* @reactive
|
159
164
|
*/
|
160
165
|
windowId_: null
|
161
166
|
}
|
@@ -23,6 +23,7 @@ class BooleanContainer extends Container {
|
|
23
23
|
baseCls: ['neo-filter-booleancontainer'],
|
24
24
|
/**
|
25
25
|
* @member {Object} layout={ntype: 'hbox', align: 'center'}
|
26
|
+
* @reactive
|
26
27
|
*/
|
27
28
|
layout: {ntype: 'hbox', align: 'center'},
|
28
29
|
/**
|
@@ -32,6 +33,7 @@ class BooleanContainer extends Container {
|
|
32
33
|
radioConfig: null,
|
33
34
|
/**
|
34
35
|
* @member {Boolean|null} value_=null
|
36
|
+
* @reactive
|
35
37
|
*/
|
36
38
|
value_: null
|
37
39
|
}
|
@@ -33,6 +33,7 @@ class NumberContainer extends Container {
|
|
33
33
|
fieldModule: Number,
|
34
34
|
/**
|
35
35
|
* @member {Object} layout={ntype: 'hbox', align: 'stretch'}
|
36
|
+
* @reactive
|
36
37
|
*/
|
37
38
|
layout: {ntype: 'hbox', align: 'stretch'},
|
38
39
|
/**
|
@@ -42,10 +43,12 @@ class NumberContainer extends Container {
|
|
42
43
|
fieldConfig: null,
|
43
44
|
/**
|
44
45
|
* @member {String|null} operator_=null
|
46
|
+
* @reactive
|
45
47
|
*/
|
46
48
|
operator_: null,
|
47
49
|
/**
|
48
50
|
* @member {Boolean|null} value_=null
|
51
|
+
* @reactive
|
49
52
|
*/
|
50
53
|
value_: null
|
51
54
|
}
|
@@ -19,10 +19,12 @@ class ToggleOperatorsButton extends Button {
|
|
19
19
|
ntype: 'filter-toggleoperatorsbutton',
|
20
20
|
/**
|
21
21
|
* @member {String[]} operators_=['===', '>', '<']
|
22
|
+
* @reactive
|
22
23
|
*/
|
23
24
|
operators_: ['===', '>', '<'],
|
24
25
|
/**
|
25
26
|
* @member {String|null} value_=null
|
27
|
+
* @reactive
|
26
28
|
*/
|
27
29
|
value_: null
|
28
30
|
}
|