From fc9a0b7ad8f755e17e7c9737f7a0bd1c3d7668c5 Mon Sep 17 00:00:00 2001 From: Alexander Djenkov Date: Wed, 15 Nov 2017 14:07:40 +0200 Subject: [PATCH] Introduce background shorthand property (#5053) * Introduce background shorthand style property * Add text property in parser for BackgroundPosition value reason: prevent parsing of background position (pass it as sample string) * Introduce background-shorthand test page * Modify parser unit tests to respect the new BackgroundPosition 'text' property --- .../ui-tests-app/css/background-shorthand.ts | 48 +++++++++++++++++++ .../ui-tests-app/css/background-shorthand.xml | 7 +++ apps/app/ui-tests-app/css/main-page.ts | 1 + tns-core-modules/css/parser.ts | 2 + tns-core-modules/ui/core/view/view-common.ts | 7 +++ tns-core-modules/ui/core/view/view.d.ts | 5 ++ .../ui/styling/style-properties.d.ts | 1 + .../ui/styling/style-properties.ts | 35 ++++++++++++++ tns-core-modules/ui/styling/style/style.d.ts | 2 +- tns-core-modules/ui/styling/style/style.ts | 2 +- unit-tests/css/parser.ts | 2 + 11 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 apps/app/ui-tests-app/css/background-shorthand.ts create mode 100644 apps/app/ui-tests-app/css/background-shorthand.xml diff --git a/apps/app/ui-tests-app/css/background-shorthand.ts b/apps/app/ui-tests-app/css/background-shorthand.ts new file mode 100644 index 000000000..2721d17c1 --- /dev/null +++ b/apps/app/ui-tests-app/css/background-shorthand.ts @@ -0,0 +1,48 @@ +import * as pages from "tns-core-modules/ui/page"; +import { EventData } from "tns-core-modules/data/observable"; +import * as button from "tns-core-modules/ui/button"; + +import { GridLayout } from "tns-core-modules/ui/layouts/grid-layout"; + +let testIndex = 0; +const tests = [ + { name: "black hex color only", background: "#000000" }, + { name: "yellow hex color only", background: "#ffff00" }, + { name: "blue color only", background: "blue" }, + { name: "repeat image only", background: 'url("~/ui-tests-app/resources/images/icon.png")' }, + + { name: "[straight] image only, no-repeat ", background: 'url("~/ui-tests-app/resources/images/icon.png") no-repeat' }, + { name: "[straight] green color, image, no-repeat", background: 'green url("~/ui-tests-app/resources/images/icon.png") no-repeat' }, + { name: "[straight] yellow hex color, image, no-repeat, position pixels", background: '#ffff00 url("~/ui-tests-app/resources/images/icon.png") no-repeat 200px 200px' }, + { name: "[straight] yellow hex color, image, repeat-y, position pixels", background: '#ffff00 url("~/ui-tests-app/resources/images/icon.png") repeat-y 100px 500px' }, + { name: "[straight] orange hex color, image, no-repeat, position percents", background: '#F9791F url("~/ui-tests-app/resources/images/icon.png") no-repeat 100% 100%' }, + { name: "[straight] green color, image, repeat-x, position percents", background: 'green url("~/ui-tests-app/resources/images/icon.png") repeat-x 100% 100%' }, + { name: "[straight] blue color, image, repeat-x, position", background: 'blue url("~/ui-tests-app/resources/images/icon.png") repeat-x 150 150' }, + + { name: "[shuffle] no-repeat, image only", background: 'no-repeat url("~/ui-tests-app/resources/images/icon.png")' }, + { name: "[shuffle] no-repeat, green color, image, ", background: 'no-repeat green url("~/ui-tests-app/resources/images/icon.png")' }, + { name: "[shuffle] yellow hex color, position pixels, image, no-repeat", background: '#ffff00 200px 200px url("~/ui-tests-app/resources/images/icon.png") no-repeat' }, + { name: "[shuffle] image, repeat-y, yellow hex color, position pixels", background: 'url("~/ui-tests-app/resources/images/icon.png") repeat-y #ffff00 100px 500px' }, + { name: "[shuffle] position percents, image, no-repeat, orange hex color", background: '100% 100% url("~/ui-tests-app/resources/images/icon.png") no-repeat #F9791F' }, + { name: "[shuffle] position percents, image, repeat-x, green color", background: '100% 100% url("~/ui-tests-app/resources/images/icon.png") repeat-x green' }, + { name: "[shuffle] image, repeat-x, position, blue color,", background: 'url("~/ui-tests-app/resources/images/icon.png") repeat-x 150 150 blue' }, +] + +export function onLoaded(args) { + applyNextStyle(args); +} + +export function onButtonTap(args) { + applyNextStyle(args); +} + +function applyNextStyle(args) { + let page = args.object.page; + let btn = args.object; + let gridElement = page.getViewById("Container"); + + btn.text = tests[testIndex].name; + gridElement.background = tests[testIndex].background; + + testIndex = testIndex < tests.length - 1 ? ++testIndex : 0; +} \ No newline at end of file diff --git a/apps/app/ui-tests-app/css/background-shorthand.xml b/apps/app/ui-tests-app/css/background-shorthand.xml new file mode 100644 index 000000000..9349e820b --- /dev/null +++ b/apps/app/ui-tests-app/css/background-shorthand.xml @@ -0,0 +1,7 @@ + + +