import { AlignSelf, FlexGrow, FlexShrink, FlexWrapBefore, Order } from '../../layouts/flexbox-layout'; import { Page } from '../../page'; import { CoreTypes } from '../../../core-types'; import { Property, CssProperty, CssAnimationProperty, InheritedProperty } from '../properties'; import { BindingOptions } from '../bindable'; import { Observable } from '../../../data/observable'; import { Style } from '../../styling/style'; import type { ModalTransition } from '../../transition/modal-transition'; import * as dnm from '../../../debugger/dom-node'; import * as ssm from '../../styling/style-scope'; import { ViewBase as ViewBaseDefinition } from '.'; export interface ModalTransitionType { name?: string; instance?: ModalTransition; duration?: number; curve?: any; } export interface ShowModalOptions { /** * Any context you want to pass to the modally shown view. This same context will be available in the arguments of the shownModally event handler. */ context: any; /** * A function that will be called when the view is closed. Any arguments provided when calling ShownModallyData.closeCallback will be available here. */ closeCallback: (...args: any[]) => void; /** * An optional parameter specifying whether to show the modal view in full-screen mode. */ fullscreen?: boolean; /** * An optional parameter specifying whether to show the modal view with animation. */ animated?: boolean; /** * An optional parameter specifying whether to stretch the modal view when not in full-screen mode. */ stretched?: boolean; /** * An optional custom transition effect */ transition?: ModalTransitionType; /** * An optional parameter that specify options specific to iOS as an object. */ ios?: { /** * The UIModalPresentationStyle to be used when showing the dialog in iOS . */ presentationStyle?: any; /** * width of the popup dialog */ width?: number; /** * height of the popup dialog */ height?: number; }; android?: { /** * @deprecated Use ShowModalOptions.cancelable instead. * An optional parameter specifying whether the modal view can be dismissed when not in full-screen mode. */ cancelable?: boolean; /** * An optional parameter specifying the windowSoftInputMode of the dialog window. * For possible values see https://developer.android.com/reference/android/view/WindowManager.LayoutParams#softInputMode */ windowSoftInputMode?: number; }; /** * An optional parameter specifying whether the modal view can be dismissed when not in full-screen mode. */ cancelable?: boolean; } /** * Gets an ancestor from a given type. * @param view - Starting view (child view). * @param criterion - The type of ancestor view we are looking for. Could be a string containing a class name or an actual type. * Returns an instance of a view (if found), otherwise undefined. */ export declare function getAncestor(view: ViewBaseDefinition, criterion: string | { new (): any; }): ViewBaseDefinition; /** * Gets a child view by id. * @param view - The parent (container) view of the view to look for. * @param id - The id of the view to look for. * Returns an instance of a view (if found), otherwise undefined. */ export declare function getViewById(view: ViewBaseDefinition, id: string): ViewBaseDefinition; /** * Gets a child view by domId. * @param view - The parent (container) view of the view to look for. * @param domId - The id of the view to look for. * Returns an instance of a view (if found), otherwise undefined. */ export declare function getViewByDomId(view: ViewBaseDefinition, domId: number): ViewBaseDefinition; /** * Gets a child view by selector. * @param view - The parent (container) view of the view to look for. * @param selector - The selector of the view to look for. * Returns an instance of a view (if found), otherwise undefined. */ export declare function querySelectorAll(view: ViewBaseDefinition, selector: string): Array; /** * Iterates through all child views (via visual tree) and executes a function. * @param view - Starting view (parent container). * @param callback - A function to execute on every child. If function returns false it breaks the iteration. */ export declare function eachDescendant(view: ViewBaseDefinition, callback: (child: ViewBaseDefinition) => boolean): void; declare enum SuspendType { Incremental = 0, Loaded = 1048576, NativeView = 2097152, UISetup = 4194304, IncrementalCountMask = -7340033 } declare namespace SuspendType { function toString(type: SuspendType): string; } export declare abstract class ViewBase extends Observable implements ViewBaseDefinition { /** * String value used when hooking to loaded event. */ static loadedEvent: string; /** * String value used when hooking to unloaded event. */ static unloadedEvent: string; /** * String value used when hooking to creation event */ static createdEvent: string; /** * String value used when hooking to disposeNativeView event */ static disposeNativeViewEvent: string; private _onLoadedCalled; private _onUnloadedCalled; private _iosView; private _androidView; private _style; private _isLoaded; private _visualState; private _templateParent; private __nativeView; domNode: dnm.DOMNode; recycleNativeView: 'always' | 'never' | 'auto'; /** * returns the native UIViewController. */ viewController: any; bindingContext: any; /** * read-only. If you want to set out-of-band the nativeView use the setNativeView method. */ nativeViewProtected: any; /** * Gets the parent view. This property is read-only. */ parent: ViewBase; /** * Returns true if visibility is set to 'collapse'. * Default(false) set in prototype * Readonly property */ isCollapsed: any; /** * Gets or sets the id for this view. */ id: string; /** * Gets or sets the CSS class name for this view. */ className: string; /** * Gets or sets the shared transition tag for animated view transitions */ sharedTransitionTag: string; /** * Opt out of shared transition under different binding conditions */ sharedTransitionIgnore: boolean; /** * Default visual state, defaults to 'normal' */ defaultVisualState: string; _domId: number; _context: any; _isAddedToNativeVisualTree: boolean; _cssState: ssm.CssState; _styleScope: ssm.StyleScope; /** * A property bag holding suspended native updates. * Native setters that had to execute while there was no native view, * or the view was detached from the visual tree etc. will accumulate in this object, * and will be applied when all prerequisites are met. * @private */ _suspendedUpdates: { [propertyName: string]: Property | CssProperty | CssAnimationProperty; }; /** * Determines the depth of suspended updates. * When the value is 0 the current property updates are not batched nor scoped and must be immediately applied. * If the value is 1 or greater, the current updates are batched and does not have to provide immediate update. * Do not set this field, the _batchUpdate method is responsible to keep the count up to date, * as well as adding/rmoving the view to/from the visual tree. */ _suspendNativeUpdatesCount: number; _isStyleScopeHost: boolean; _automaticallyAdjustsScrollViewInsets: boolean; left: CoreTypes.LengthType; top: CoreTypes.LengthType; effectiveLeft: number; effectiveTop: number; dock: 'left' | 'top' | 'right' | 'bottom'; row: number; col: number; column: number; rowSpan: number; colSpan: number; columnSpan: number; order: Order; flexGrow: FlexGrow; flexShrink: FlexShrink; flexWrapBefore: FlexWrapBefore; alignSelf: AlignSelf; _oldLeft: number; _oldTop: number; _oldRight: number; _oldBottom: number; _ignoreFlexMinWidthHeightReset: boolean; effectiveMinWidth: number; effectiveMinHeight: number; effectiveWidth: number; effectiveHeight: number; effectiveMarginTop: number; effectiveMarginRight: number; effectiveMarginBottom: number; effectiveMarginLeft: number; effectivePaddingTop: number; effectivePaddingRight: number; effectivePaddingBottom: number; effectivePaddingLeft: number; effectiveBorderTopWidth: number; effectiveBorderRightWidth: number; effectiveBorderBottomWidth: number; effectiveBorderLeftWidth: number; _defaultPaddingTop: number; _defaultPaddingRight: number; _defaultPaddingBottom: number; _defaultPaddingLeft: number; _isPaddingRelative: boolean; /** * @private * Module name when the view is a module root. Otherwise, it is undefined. */ _moduleName: string; /** * Gets or sets if the view is reusable. * Reusable views are not automatically destroyed when removed from the View tree. */ reusable: boolean; constructor(); /** * Gets the template parent or the native parent. Sets the template parent. */ get parentNode(): ViewBase; set parentNode(node: ViewBase); get nativeView(): any; set nativeView(value: any); /** * Gets the name of the constructor function for this instance. E.g. for a Button class this will return "Button". */ get typeName(): string; /** * Gets the style object associated to this view. */ get style(): Style; set style(inlineStyle: Style); get android(): any; get ios(): any; get isLoaded(): boolean; get ['class'](): string; set ['class'](v: string); /** * Returns the child view with the specified id. */ getViewById(id: string): T; /** * Returns the child view with the specified domId. */ getViewByDomId(domId: number): T; /** * Gets owner page. This is a read-only property. */ get page(): Page; /** * @unstable * Ensures a dom-node for this view. */ ensureDomNode(): void; set(name: string, value: any): void; onLoaded(): void; onUnloaded(): void; _layoutParent(): void; _suspendNativeUpdates(type: SuspendType): void; _resumeNativeUpdates(type: SuspendType): void; /** * Allow multiple updates to be performed on the instance at once. */ _batchUpdate(callback: () => T): T; private setFlag; private isFlagSet; private callFunctionWithSuper; callLoaded(): void; callUnloaded(): void; private notifyPseudoClassChanged; private pseudoClassAliases; cssClasses: Set; cssPseudoClasses: Set; private getAllAliasedStates; /** * @protected * @unstable * A widget can call this method to add a matching css pseudo class. */ addPseudoClass(name: string): void; /** * @protected * @unstable * A widget can call this method to discard matching css pseudo class. */ deletePseudoClass(name: string): void; private bindingContextChanged; private bindings; private shouldAddHandlerToParentBindingContextChanged; private bindingContextBoundToParentBindingContextChanged; bind(options: BindingOptions, source?: Object): void; unbind(property: string): void; private performLayout; /** * Invalidates the layout of the view and triggers a new layout pass. */ requestLayout(): void; /** * Iterates over children of type ViewBase. * @param callback Called for each child of type ViewBase. Iteration stops if this method returns falsy value. */ eachChild(callback: (child: ViewBase) => boolean): void; _inheritStyles(view: ViewBase): void; _addView(view: ViewBase, atIndex?: number): void; /** * Method is intended to be overridden by inheritors and used as "protected" */ _addViewCore(view: ViewBase, atIndex?: number): void; /** * Load view. * @param view to load. */ loadView(view: ViewBase): void; /** * When returning true the callLoaded method will be run in setTimeout * Method is intended to be overridden by inheritors and used as "protected" */ _shouldDelayLayout(): boolean; /** * Unload view. * @param view to unload. */ unloadView(view: ViewBase): void; /** * Core logic for removing a child view from this instance. Used by the framework to handle lifecycle events more centralized. Do not use outside the UI Stack implementation. */ _removeView(view: ViewBase): void; /** * Method is intended to be overridden by inheritors and used as "protected" */ _removeViewCore(view: ViewBase): void; /** * Creates a native view. * Returns either android.view.View or UIView. */ createNativeView(): Object; /** * Clean up references to the native view. */ disposeNativeView(): void; /** * Initializes properties/listeners of the native view. */ initNativeView(): void; /** * Resets properties/listeners set to the native view. */ resetNativeView(): void; private resetNativeViewInternal; _setupAsRootView(context: any): void; /** * Setups the UI for ViewBase and all its children recursively. * This method should *not* be overridden by derived views. */ _setupUI(context: any, atIndex?: number, parentIsLoaded?: boolean): void; /** * Set the nativeView field performing extra checks and updates to the native properties on the new view. * Use in cases where the createNativeView is not suitable. * As an example use in item controls where the native parent view will create the native views for child items. */ setNativeView(value: any): void; /** * Tears down the UI of a reusable node by making it no longer reusable. * @see _tearDownUI * @param forceDestroyChildren Force destroy the children (even if they are reusable) */ destroyNode(forceDestroyChildren?: boolean): void; /** * Tears down the UI for ViewBase and all its children recursively. * This method should *not* be overridden by derived views. */ _tearDownUI(force?: boolean): void; _childIndexToNativeChildIndex(index?: number): number; /** * Performs the core logic of adding a child view to the native visual tree. Returns true if the view's native representation has been successfully added, false otherwise. * Method is intended to be overridden by inheritors and used as "protected". */ _addViewToNativeVisualTree(view: ViewBase, atIndex?: number): boolean; /** * Method is intended to be overridden by inheritors and used as "protected" */ _removeViewFromNativeVisualTree(view: ViewBase): void; get visualState(): string; _goToVisualState(state: string): void; /** * @deprecated * * This used to be the way to set attribute values in early {N} versions. * Now attributes are expected to be set as plain properties on the view instances. */ _applyXmlAttribute(attribute: string, value: string): boolean; setInlineStyle(style: string): void; _parentChanged(oldParent: ViewBase): void; onResumeNativeUpdates(): void; toString(): string; /** * @private * Notifies each child's css state for change, recursively. * Either the style scope, className or id properties were changed. */ _onCssStateChange(): void; _inheritStyleScope(styleScope: ssm.StyleScope): void; /** * Shows the view passed as parameter as a modal view. * @param view - View instance to be shown modally. * @param modalOptions - A ShowModalOptions instance */ showModal(view: ViewBase, modalOptions?: ShowModalOptions): ViewBase; /** * Shows the View contained in moduleName as a modal view. * @param moduleName - The name of the module to load starting from the application root. * @param modalOptions - A ShowModalOptions instance */ showModal(moduleName: string, modalOptions?: ShowModalOptions): ViewBase; /** * Closes the current modal view that this page is showing. * @param context - Any context you want to pass back to the host when closing the modal view. */ closeModal(...args: any[]): void; /** * Method is intended to be overridden by inheritors and used as "protected" */ _dialogClosed(): void; /** * Method is intended to be overridden by inheritors and used as "protected" */ _onRootViewReset(): void; } export declare const bindingContextProperty: InheritedProperty; export declare const hiddenProperty: Property; export declare const classNameProperty: Property; export declare const idProperty: Property; export declare function booleanConverter(v: string | boolean): boolean; export {};