From d3c39c1a9f560277b6c22f1da1ea6d4962bf86da Mon Sep 17 00:00:00 2001 From: Alexander Vakrilov Date: Mon, 5 Aug 2019 13:56:22 +0300 Subject: [PATCH] feat(GridLayout): Add synonym property column[Span] for col[Span] in GridLayout (#7641) * add column synonym for col property grid layout * refactoring * refactor: implement column proxy props * test: add tests for column and columnSpan props --- .../app/layouts/grid-7295-page.ts | 45 ++++++++++++++ .../app/layouts/grid-7295-page.xml | 18 ++++++ e2e/ui-tests-app/app/layouts/main-page.ts | 1 + tests/app/ui/layouts/grid-layout-tests.ts | 60 ++++++++++++++++++- .../ui/core/view-base/view-base.d.ts | 8 +++ .../ui/core/view-base/view-base.ts | 2 + .../layouts/grid-layout/grid-layout-common.ts | 14 +++++ 7 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 e2e/ui-tests-app/app/layouts/grid-7295-page.ts create mode 100644 e2e/ui-tests-app/app/layouts/grid-7295-page.xml diff --git a/e2e/ui-tests-app/app/layouts/grid-7295-page.ts b/e2e/ui-tests-app/app/layouts/grid-7295-page.ts new file mode 100644 index 000000000..992deed64 --- /dev/null +++ b/e2e/ui-tests-app/app/layouts/grid-7295-page.ts @@ -0,0 +1,45 @@ +import * as model from "./myview"; +import { Button } from "tns-core-modules/ui/button"; +import { Page } from "tns-core-modules/ui/page"; +import { GridLayout, ItemSpec } from "tns-core-modules/ui/layouts/grid-layout"; + +export function onLoaded(args: { eventName: string, object: any }) { + var page = args.object; + page.bindingContext = new model.ViewModel(); +} + +export function onAddRowColumn(args: { eventName: string, object: any }) { + + var layout = args.object.parent.parent; + var row = new ItemSpec(1, "auto"); + var column = new ItemSpec(1, "auto"); + + layout.addRow(row); + layout.addColumn(column); + + var btn0 = new Button(); + var btn1 = new Button(); + btn0.id = "b0"; + btn1.id = "b1"; + btn0.text = "b0"; + btn1.text = "b1"; + layout.addChild(btn0); + layout.addChild(btn1); + GridLayout.setRow(btn0, 0); + GridLayout.setColumn(btn0, 4); + GridLayout.setRow(btn1, 4); + GridLayout.setColumn(btn1, 0); + GridLayout.setColumnSpan(btn1, 2); + GridLayout.setRowSpan(btn0, 3); +} + +export function onRemoveRowColumn(args: { eventName: string, object: any }) { + var layout = args.object.parent.parent; + var itemSpecs, count; + itemSpecs = layout.getRows(); + count = itemSpecs.length; + layout.removeRow(itemSpecs[count - 1]); + itemSpecs = layout.getColumns(); + count = itemSpecs.length; + layout.removeColumn(itemSpecs[count - 1]); +} diff --git a/e2e/ui-tests-app/app/layouts/grid-7295-page.xml b/e2e/ui-tests-app/app/layouts/grid-7295-page.xml new file mode 100644 index 000000000..1a7ceb5db --- /dev/null +++ b/e2e/ui-tests-app/app/layouts/grid-7295-page.xml @@ -0,0 +1,18 @@ + + + +