diff --git a/.project b/.project new file mode 100644 index 0000000..0c94d3d --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + F_WebAPI + + + + + + + + diff --git a/Contacts/contact_create.html b/Contacts/contact_create.html new file mode 100644 index 0000000..d24312d --- /dev/null +++ b/Contacts/contact_create.html @@ -0,0 +1,53 @@ + + + +Contacts + + + + + + + + +
+
+ back +

create

+
+
+
+
+ Name +
+

+ + +

+
+
+
+ Tel +
+

+ + +

+
+
+
+ +
+
+
+
+ + + \ No newline at end of file diff --git a/Contacts/contact_read.html b/Contacts/contact_read.html new file mode 100644 index 0000000..3d1c9d6 --- /dev/null +++ b/Contacts/contact_read.html @@ -0,0 +1,56 @@ + + + +Contacts + + + + + + + + +
+ +
+ back +

Contacts

+
+
+
+
+ Name +
+

+ + +

+
+
+
+ Tel +
+

+ + + +

+
+
+
+ + +
+
+
+ +
+ + + \ No newline at end of file diff --git a/Contacts/css/headers.css b/Contacts/css/headers.css new file mode 100644 index 0000000..4c6297d --- /dev/null +++ b/Contacts/css/headers.css @@ -0,0 +1,257 @@ +/* ---------------------------------- + * HEADERS: default + * ---------------------------------- */ +section[role="region"]>header:first-child { + position: relative; z-index: 10; padding: 0; height: 5rem; color: #fff; + background: url(../images/headers/ui/header.png) repeat-x 0 0; background-size: auto 100%; border: none; +} + +section[role="region"]>header:first-child:after { + content: ""; display: block; height: 0.3rem; position: absolute; top: 100%; left: 0; right: 0; + background: url(../images/headers/ui/shadow.png) repeat-x; background-size: auto 100%; +} + +section[role="region"]>header:first-child h1 { + font-size: 2.5rem; line-height: 4.8rem; text-align: left; color: #fff; white-space: nowrap; text-overflow: ellipsis; + display: block; overflow: hidden; margin: 0 0 0 3rem; padding-right: 1rem; height: 100%; font-weight: normal; +} + +section[role="region"]>header:first-child h1 em { + font-weight: 400; font-size: 1.5rem; line-height: 1em; font-style: normal; +} + +section[role="region"]>header:first-child form { + display: block; overflow: hidden; position: relative; padding: 1rem 1rem 0 0.5rem; margin-left: 2.5rem; +} + +section[role="region"]>header:first-child input[type="text"] { + width: 100%; height: 3rem; -moz-box-sizing: border-box; padding: 0 0.8rem; border: solid 0.1rem #9d4123; + border-top-color: #a6501e; border-radius: 0.3rem; + background: #fff url(../images/headers/ui/shadow.png) repeat-x left -0.1rem; font-size: 1.5rem; line-height: 3em; + box-shadow: none; +} + +section[role="region"]>header:first-child form button[type="reset"] { + font-size: 0; overflow: hidden; position: absolute; right: 1rem; top: 1rem; bottom: 0; width: 3rem; height: auto; + margin: 0; display: none; border: none; + background: url(../images/headers/icons/clear.png) no-repeat center center/1.7rem auto; +} + +section[role="region"]>header:first-child input[type="text"]:valid+button[type="reset"] { + display: block; +} + +/* Generic set of actions in toolbar */ +section[role="region"]>header:first-child menu[type="toolbar"] { + height: 100%; float: right; +} + +section[role="region"]>header:first-child menu[type="toolbar"] a,section[role="region"]>header:first-child menu[type="toolbar"] button + { + -moz-box-sizing: border-box; position: relative; float: left; width: auto; min-width: 5rem; height: 5rem; + margin-bottom: 0; padding: 0 1rem; border-radius: 0; line-height: 5rem; background: none; text-align: center; + text-shadow: none; z-index: 5; +} + +section[role="region"]>header:first-child menu[type="toolbar"] a:last-child,section[role="region"]>header:first-child menu[type="toolbar"] button:last-child + { + background: url(../images/headers/ui/separator.png) no-repeat left center/auto 4.8rem; margin-left: -0.2rem; z-index: 1; +} + +section[role="region"]>header:first-child menu[type="toolbar"] { + padding: 0; margin: 0; +} + +section[role="region"]>header:first-child a,section[role="region"]>header:first-child button { + border: none; padding: 0; overflow: hidden; font-weight: 400; font-size: 1.5rem; line-height: 1.1em; color: #fff; + border-radius: 0; text-decoration: none; +} + +/* Pressed state */ +section[role="region"]>header:first-child a::-moz-focus-inner,section[role="region"]>header:first-child button::-moz-focus-inner,section[role="region"]>header:first-child a:active,section[role="region"]>header:first-child button:active,section[role="region"]>header:first-child a:focus,section[role="region"]>header:first-child button:focus + { + outline: none !important; border: none !important; +} + +section[role="region"]>header:first-child a:not ([aria-disabled="true"] + ):active .icon:after,section[role="region"]>header:first-child button:not + (:disabled ):active .icon:after,section[role="region"]>header:first-child menu[type="toolbar"] a:not + ([aria-disabled="true"] ):active,section[role="region"]>header:first-child menu[type="toolbar"] button:not + (:disabled ):active { + background: #008aaa !important; transition: background 0.2s ease; +} + +/* Disabled state */ +section[role="region"]>header:first-child menu[type="toolbar"] a[aria-disabled="true"],section[role="region"]>header:first-child menu[type="toolbar"] button[disabled] + { + opacity: 0.5; +} + +section[role="region"]>header:first-child a:first-letter,section[role="region"]>header:first-child button:first-letter { + text-transform: uppercase; +} + +/* Icon definitions */ +section[role="region"]>header:first-child .icon { + position: relative; float: none; display: inline-block; vertical-align: top; width: 3rem; height: 4.9rem; + margin: 0 -1rem; background: transparent no-repeat center center/3rem auto; font-size: 0; overflow: hidden; +} + +section[role="region"]>header:first-child .icon.icon-add { + background-image: url(../images/headers/icons/add.png); +} + +section[role="region"]>header:first-child .icon.icon-compose { + background-image: url(../images/headers/icons/compose.png); +} + +section[role="region"]>header:first-child .icon.icon-edit { + background-image: url(../images/headers/icons/edit.png); +} + +section[role="region"]>header:first-child .icon.icon-send { + background-image: url(../images/headers/icons/send.png); +} + +section[role="region"]>header:first-child .icon.icon-close { + background-image: url(../images/headers/icons/close.png); +} + +section[role="region"]>header:first-child .icon.icon-back { + background-image: url(../images/headers/icons/back.png); +} + +section[role="region"]>header:first-child .icon.icon-menu { + background-image: url(../images/headers/icons/menu.png); +} + +section[role="region"]>header:first-child .icon.icon-user { + background-image: url(../images/headers/icons/user.png); +} + +section[role="region"]>header:first-child .icon.icon-reply { + background-image: url(../images/headers/icons/reply.png); +} + +section[role="region"]>header:first-child .icon.icon-reply-all { + background-image: url(../images/headers/icons/reply-all.png); +} + +/* Navigation links (back, cancel, etc) */ +section[role="region"]>header:first-child>button,section[role="region"]>header:first-child>a { + position: absolute; left: 0; width: 5rem; height: 5rem; + background: url(../images/headers/ui/separator-large.png) no-repeat 2rem top/0.2rem 5rem; overflow: hidden; +} + +section[role="region"]>header:first-child>button::-moz-focus-inner { + border: 0; padding: 0; +} + +section[role="region"]>header:first-child>button .icon,section[role="region"]>header:first-child>a .icon { + position: static; display: block; width: 2rem; height: 4.9rem; margin: 0; overflow: visible; font-size: 0; +} + +section[role="region"]>header:first-child>button .icon:after,section[role="region"]>header:first-child>a .icon:after { + content: ""; position: absolute; left: 0; top: 0; z-index: -1; width: 2rem; height: 4.9rem; background-color: #a03f25; +} + +section[role="region"]>header>a .icon.icon-menu,section[role="region"]>header>button .icon.icon-menu { + background-position: -1.1rem center; +} + +/* ---------------------------------- + * HEADERS: subheader + * ---------------------------------- */ +section[role="region"]>header { + z-index: 0; height: auto; +} + +section[role="region"]>header:after { + display: none; +} + +section[role="region"] header h2 { + margin: 0; padding: 0.8rem 3rem; color: #424242; font-weight: 400; font-size: 1.5rem; line-height: 1.8rem; + border-bottom: solid 0.1rem #e6e6e6; +} + +/* ---------------------------------- + * HEADERS: dark + * ---------------------------------- */ +section[role="region"].skin-dark>header:first-child,.skin-dark section[role="region"]>header:first-child { + background-image: url(../images/headers/ui/dark/header.png); +} + +section[role="region"].skin-dark>header:first-child menu[type="toolbar"] a:last-child,.skin-dark section[role="region"]>header:first-child menu[type="toolbar"] a:last-child,section[role="region"].skin-dark>header:first-child menu[type="toolbar"] button:last-child,.skin-dark section[role="region"]>header:first-child menu[type="toolbar"] button:last-child + { + background: url(../images/headers/ui/dark/separator.png) no-repeat left center/auto 4.8rem; +} + +/* Navigation links (back, cancel, etc) */ +section[role="region"].skin-dark>header:first-child>a .icon:after,.skin-dark section[role="region"]>header:first-child>a .icon:after,section[role="region"].skin-dark>header:first-child>button .icon:after,.skin-dark section[role="region"]>header:first-child>button .icon:after + { + background-image: url(../images/headers/ui/dark/negative.png); background-color: transparent; +} + +section[role="region"].skin-dark>header:first-child a,.skin-dark section[role="region"]>header:first-child a,section[role="region"].skin-dark>header:first-child button,.skin-dark section[role="region"]>header:first-child button + { + background: url(../images/headers/ui/dark/separator-large.png) no-repeat 2rem top/0.2rem 4.8rem; +} + +section[role="region"].skin-dark header h2,.skin-dark section[role="region"] header h2 { + background: #2e3c3f url(../images/headers/ui/organic/subheader.png); color: #fff; border: none; +} + +/* ---------------------------------- + * HEADERS: organic + * ---------------------------------- */ +section[role="region"].skin-organic>header:first-child,.skin-organic section[role="region"]>header:first-child { + background-image: url(../images/headers/ui/noise-pattern.png), url(../images/headers/ui/organic/header.png); + background-size: auto; +} + +section[role="region"].skin-organic>header:first-child menu[type="toolbar"] a:last-child,.skin-organic section[role="region"]>header:first-child menu[type="toolbar"] a:last-child,section[role="region"].skin-organic>header:first-child menu[type="toolbar"] button:last-child,.skin-organic section[role="region"]>header:first-child menu[type="toolbar"] button:last-child + { + background: url(../images/headers/ui/organic/separator.png) no-repeat left center/auto 4.8rem; +} + +/* Navigation links (back, cancel, etc) */ +section[role="region"].skin-organic>header:first-child>a .icon:after,.skin-organic section[role="region"]>header:first-child>a .icon:after,section[role="region"].skin-organic>header:first-child>button .icon:after,.skin-organic section[role="region"]>header>button .icon:after + { + background: #23292b url(../images/headers/ui/noise-pattern.png); background-size: auto; +} + +section[role="region"].skin-organic>header:first-child a,.skin-organic section[role="region"]>header:first-child a,section[role="region"].skin-organic>header:first-child button,.skin-organic section[role="region"]>header:first-child button + { + background: url(../images/headers/ui/organic/separator-large.png) no-repeat 2rem top/0.2rem 4.8rem; +} + +section[role="region"].skin-organic header h2,.skin-organic section[role="region"] header h2 { + background: #5c6a6d url(../images/headers/ui/organic/subheader.png); color: #fff; border: none; +} + +/* ---------------------------------- + * HEADERS: right-to-left tweaks + * ---------------------------------- */ +html[dir="rtl"] section[role="region"]>header:first-child h1 { + text-align: right; margin: 0 3rem 0 0; +} + +html[dir="rtl"] section[role="region"]>header:first-child button,html[dir="rtl"] section[role="region"]>header:first-child a + { + left: inherit; right: 0; +} + +html[dir="rtl"] section[role="region"]>header:first-child>button .icon,html[dir="rtl"] section[role="region"]>header:first-child>a .icon + { + margin-left: 0; margin-right: -2rem; +} + +html[dir="rtl"] section[role="region"]>header:first-child>button .icon:after,html[dir="rtl"] section[role="region"]>header:first-child>a .icon:after + { + left: inherit; right: 0; +} + +html[dir="rtl"] section[role="region"]>header:first-child .icon.icon-back { + background-image: url(../images/headers/icons/back-rtl.png); +} \ No newline at end of file diff --git a/Contacts/css/input_areas.css b/Contacts/css/input_areas.css new file mode 100644 index 0000000..c03c182 --- /dev/null +++ b/Contacts/css/input_areas.css @@ -0,0 +1,263 @@ +/* ---------------------------------- +* Input areas +* ---------------------------------- */ +input[type="text"],input[type="password"],input[type="email"],input[type="tel"],input[type="search"],input[type="url"],input[type="number"],textarea + { + -moz-box-sizing: border-box; display: block; overflow: hidden; width: 100%; height: 4rem; resize: none; + padding: 0 1.2rem; font-size: 1.8rem; line-height: 4rem; border: 0.1rem solid #ccc; border-radius: 0.3rem; + box-shadow: none; + /* override the box-shadow from the system (performance issue) */ + background: #fff url(../images/input_areas/ui/shadow.png) repeat-x; +} + +textarea { + height: 10rem; max-height: 10rem; line-height: 2rem; margin: 0; +} + +/* fix for required inputs with wrong or empty value e.g. [type=email] */ +input:invalid,textarea:invalid { + border: 0.1rem solid #820000; color: #b90000; +} + +input::-moz-placeholder,textarea::-moz-placeholder { + color: #858585; opacity: 1; +} + +input:-moz-placeholder,textarea:-moz-placeholder { + color: #858585; opacity: 1; +} + +form p { + position: relative; margin: 0; +} + +form p+p { + margin-top: 1rem; +} + +form p input+button[type="reset"],form p textarea+button[type="reset"] { + position: absolute; top: 50%; right: 0; width: 3rem; height: 4rem; padding: 0; border: none; font-size: 0; opacity: 0; + pointer-events: none; background: transparent url(../images/input_areas/icons/clear.png) no-repeat 50% 50%/1.7rem auto; +} + +form.skin-dark p input+button[type="reset"],form.skin-dark p textarea+button[type="reset"] { + background-image: url(../images/input_areas/icons/clear-dark.png); +} + +/* To avoid colission with BB butons */ +li input+button[type="reset"]:after,li textarea+button[type="reset"]:after { + background: none; +} + +form p input+button[type="reset"],form p textarea+button[type="reset"] { + top: 0; margin: 0; +} + +textarea { + padding: 1.2rem; +} + +form p input:focus { + padding-right: 3rem; +} + +form p input:focus+button[type="reset"],form p textarea:focus+button[type="reset"] { + opacity: 1; pointer-events: all; +} + +/* Fieldset */ +fieldset { + position: relative; overflow: hidden; margin: 0; padding: 0; border-radius: 0.3rem; + border: 0.1rem solid rgba(0, 0, 0, .2); font-size: 1.8rem; line-height: 1em; + background: #fff url(../images/input_areas/ui/shadow.png) repeat-x left top; +} + +fieldset+fieldset { + margin-top: 1.5rem; +} + +fieldset legend { + -moz-box-sizing: border-box; position: absolute; width: 9.5rem; height: 100%; padding: 0 0.5rem 0 1.5rem; + white-space: nowrap; text-overflow: ellipsis; overflow: hidden; color: #333; line-height: 4rem; + text-transform: uppercase; +} + +fieldset legend.action { + background: url(../images/input_areas/icons/arrow.png) no-repeat 100% 100%/1.2rem; +} + +fieldset legend:active { + background-color: #008caa; text-shadow: 0.1rem 0.1rem 0 rgba(255, 255, 255, .3); +} + +fieldset section input[type="text"],fieldset section input[type="password"],fieldset section input[type="email"],fieldset section input[type="tel"],fieldset section input[type="search"],fieldset section input[type="number"],fieldset section textarea + { + height: 4rem; border: none; border-radius: 0; background: none; +} + +fieldset section { + display: block; border-left: 0.1rem solid #ddd; border-radius: 0 0.3rem 0.3rem 0; overflow: hidden; margin-left: 9.5rem; +} + +fieldset section p { + margin: 0; border-bottom: 0.1rem solid #ddd; +} + +fieldset section p:last-child { + border-bottom: none; +} + +/* Tidy (search/submit) */ +form[role="search"] { + position: relative; height: 3.7rem; background: #dbe3eb; +} + +form[role="search"].skin-dark { + background: url(../images/input_areas/ui/background-dark.png) repeat; background-size: 2rem; +} + +form[role="search"].bottom { + background: #fff; +} + +form[role="search"]:before { + content: ""; position: absolute; top: 1rem; left: 1rem; height: 1.6rem; width: 1.6rem; + background: url(../images/input_areas/icons/search.png) no-repeat; background-size: 1.6rem; +} + +form[role="search"].bottom:before { + display: none; +} + +form[role="search"].skin-dark:before { + background-image: url(../images/input_areas/icons/search-dark.png); +} + +form[role="search"]:after { + content: ""; position: absolute; top: 3.6rem; right: 0; left: 0; height: 0.4rem; + background: url(../images/input_areas/ui/shadow-search.png) repeat-x left top; border-top: 0.1rem solid #fff; +} + +form[role="search"].bottom:after { + content: ""; position: absolute; top: -0.4rem; + background: url(../images/input_areas/ui/shadow-invert.png) repeat-x 0 100%; border-color: transparent; +} + +form[role="search"].skin-dark:after { + border-color: #2b3538; +} + +section[role="region"]>header:first-child+form[role="search"]:after { + background: none; +} + +form[role="search"] p { + padding: 0.4rem 1.2rem 0 3.2rem; overflow: hidden; +} + +form[role="search"].bottom p { + padding: 0.4rem 1.2rem 0 1.2rem; +} + +form[role="search"] p input,form[role="search"] p textarea { + height: 3rem; border: none; background: none; font-size: 1.8rem; padding: 0.5rem 0; +} + +form[role="search"] p input:focus { + padding: 0 2rem 0 0; +} + +form[role="search"] p input:invalid,form[role="search"] p textarea:invalid { + border: none; +} + +form[role="search"].skin-dark p input,form[role="search"].skin-dark p textarea { + color: #fff; +} + +form[role="search"] button.icon { + float: left; height: 3.7rem; width: 3rem; border: none; font-size: 0; + background: url(../images/input_areas/ui/separator.png) no-repeat 100% 50%, url(../images/input_areas/ui/background.png) + repeat-x 0 100%; background-size: auto 100%; border-radius: 0; margin: 0; padding: 0; margin: 0; position: relative; +} + +form[role="search"] button.icon:before { + content: ""; position: absolute; width: 3rem; height: 3.7rem; background: transparent center no-repeat; top: 0; left: 0; +} + +form[role="search"] p button[type="reset"] { + right: 0; +} + +form[role="search"] button[type="submit"] { + float: right; min-width: 6rem; height: 3.7rem; padding: 0 1.5rem; border: none; color: #000; font-weight: 500; + font-size: 1.6rem; line-height: 3.2rem; background: url(../images/input_areas/ui/separator.png) no-repeat 0 50%; + background-size: auto 100%; border-radius: 0; width: auto; border-radius: 0; margin: 0; +} + +form[role="search"].bottom button[type="submit"] { + color: #333; + background: url(../images/input_areas/ui/separator.png) no-repeat 0 50%, url(../images/input_areas/ui/active.png) + repeat-x 0 100%; +} + +form[role="search"].skin-dark button[type="submit"] { + color: #fff; background-image: url(../images/input_areas/ui/separator-dark.png); +} + +form[role="search"] button[type="submit"]+p>textarea { + height: 3rem; line-height: 2rem; font-size: 1.8rem; +} + +form[role="search"] button[type="submit"]+p button { + height: 3.7rem; +} + +form[role="search"].full button[type="submit"] { + display: none; +} + +form[role="search"] button.icon:active,form[role="search"] button[type="submit"]:active { + background: #008caa; text-shadow: 0.1rem 0.1rem 0 rgba(255, 255, 255, .3); +} + +form[role="search"] button[type="submit"][disabled] { + color: #adadad; + background: url(../images/input_areas/ui/separator.png) no-repeat 0 50%, url(../images/input_areas/ui/background.png) + repeat-x 0 100%; +} + +form p button[type="reset"]:focus,form p button[type="reset"]::-moz-focus-inner { + border: none; outline: none; +} + +/****************************************************************************** + * Right-to-Left layout + */ +html[dir="rtl"] form p input:valid,html[dir="rtl"] form p input:valid:focus { + padding: 0 1.2rem 0 3rem; +} + +html[dir="rtl"] form p input+button[type="reset"],html[dir="rtl"] form p textarea+button[type="reset"] { + right: auto; left: 0; +} + +html[dir="rtl"] fieldset legend.action:after { + margin: 0 0.5rem 0 0; +} + +html[dir="rtl"] fieldset legend { + padding: 0 1.5rem 0 0.5rem; +} + +html[dir="rtl"] form[role="search"] p input { + padding: 0; +} + +html[dir="rtl"] form[role="search"] p input:focus { + padding: 0 0 0 2rem; +} + +html[dir="rtl"] form[role="search"] button[type="submit"]+p>button { + left: 0; +} \ No newline at end of file diff --git a/Contacts/css/lists.css b/Contacts/css/lists.css new file mode 100644 index 0000000..f71de2f --- /dev/null +++ b/Contacts/css/lists.css @@ -0,0 +1,124 @@ +/* ---------------------------------- + * Lists + * ---------------------------------- */ +[data-type="list"] { + font-weight: 400; padding: 0 1.5rem; +} + +[data-type="list"] ul { + list-style: none; margin: 0; padding: 0; overflow: hidden; +} + +[data-type="list"] strong { + font-weight: 500; +} + +/* Title divisors */ +[data-type="list"] header { + border-bottom: 0.1rem solid #ff4E00; padding: 0.5rem 1rem; margin: 0; font-size: 1.6rem; line-height: 1.8rem; + font-weight: normal; color: #ff4E00; text-transform: uppercase; +} + +/* List items */ +[data-type="list"] li { + width: 100%; height: 6rem; -moz-box-sizing: border-box; transition: transform 0.3s ease, padding 0.3s ease; + border-bottom: solid 0.1rem #dbd9d9; color: #000; margin: 0; display: block; position: relative; z-index: 1; +} + +[data-type="list"] li:last-child { + border: none; +} + +/* Pressed State */ +[data-type="list"] li>a { + text-decoration: none; color: #000; display: block; height: 6rem; position: relative; border: none; outline: none; +} + +[data-type="list"] li>a:after { + content: ""; background-color: #b1f1ff; opacity: 0; pointer-events: none; position: absolute; left: 0; top: 0; right: 0; + bottom: 0; z-index: 0; +} + +[data-type="list"] li>a:active:after { + opacity: 0.6; + /* Only transition on 'press', not on 'release' */ transition: opacity 0.2s ease; +} + +/* Disabled */ +[data-type="list"] li[aria-disabled="true"]:after { + content: ""; background-color: #e6e6e6; opacity: 0.7; position: absolute; left: 0; top: 0; right: 0; bottom: 0; +} + +[data-type="list"] li[aria-disabled="true"] { + pointer-events: none; +} + +/* Graphic content */ +[data-type="list"] aside { + float: left; margin: 0 1.5rem 0 0; height: 100%; position: relative; z-index: 2; +} + +[data-type="list"] li>a aside,[data-type="list"] li>a aside.icon { + background-color: transparent; z-index: -1; +} + +[data-type="list"] aside.pack-end { + text-align: right; +} + +[data-type="list"] aside.icon { + width: 3rem; height: 6rem; background: #fff no-repeat left center/100% auto; font: 0/0 a; display: block; + overflow: hidden; +} + +[data-type="list"] aside img { + display: block; overflow: hidden; width: 6rem; height: 6rem; background: transparent center center/cover; + position: relative; z-index: 1; +} + +/* Text content */ +[data-type="list"] li p { + white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border: none; display: block; margin: 0; color: #5b5b5b; + font-size: 1.5rem; line-height: 2rem; +} + +[data-type="list"] li p:first-of-type { + font-size: 1.8rem; line-height: 2.2rem; color: #000; padding: 1rem 0 0; +} + +[data-type="list"] li p:only-child,[data-type="list"] li p:first-of-type:last-of-type { + line-height: 4rem; +} + +[data-type="list"] li p em { + font-size: 1.5rem; font-style: normal; +} + +[data-type="list"] li p time { + margin-right: 0.3rem; text-transform: uppercase; +} + +/* Checkable content */ +[data-type="list"] li>.pack-checkbox,[data-type="list"] li>.pack-radio,[data-type="list"] li>.pack-switch { + pointer-events: none; position: absolute; top: -0.1rem; bottom: 0; right: 0; left: -4rem; z-index: 1; width: auto; + height: auto; border-top: solid 0.1rem #dbd9d9; +} + +[data-type="list"] li>.pack-checkbox input+span,[data-type="list"] li>.pack-radio input+span,[data-type="list"] li>.pack-switch input+span + { + left: 0; margin-left: 0; +} + +/* Edit mode */ +[data-type="list"] [data-type="edit"] li { + transform: translateX(4rem); padding-left: 0; +} + +[data-type="list"] [data-type="edit"] li>.pack-checkbox,[data-type="list"] [data-type="edit"] li>.pack-radio,[data-type="list"] [data-type="edit"] li>.pack-switch + { + pointer-events: auto; +} + +[data-type="list"] [data-type="edit"] li>a:active:after { + display: none; +} \ No newline at end of file diff --git a/Contacts/css/style.css b/Contacts/css/style.css new file mode 100644 index 0000000..2e6eced --- /dev/null +++ b/Contacts/css/style.css @@ -0,0 +1,66 @@ +@import url(./headers.css); + +@import url(./input_areas.css); + +@import url(./lists.css); + +html,body { + margin: 0; padding: 0; font-size: 10px; background-color: #fff; +} + +#index { + height: 100%; +} + +/* contacts read */ +.search { + position: relative; z-index: 1; +} + +.contacts_read { + padding: 1rem; overflow: hidden; +} + +/* contact read */ +.contact_read { + position: absolute; left: 0; top: 5rem; width: 90%; padding: 1.5rem; +} + +/* contact create */ +.contact_create { + position: absolute; left: 0; top: 5rem; width: 90%; padding: 1.5rem; +} + +/* common button */ +div.bb-docs { + padding-top: 1rem; +} + +div.bb-docs button { + width: 100%; height: 3.8rem; margin: 0 0 1rem; padding: 0 1.5rem; -moz-box-sizing: border-box; display: inline-block; + vertical-align: middle; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; border-radius: 0.2rem; + font-weight: 500; font-size: 1.6rem; line-height: 3.8rem; text-align: center; + text-shadow: 0.1rem 0.1rem 0 rgba(255, 255, 255, 0.3); text-decoration: none; outline: none; +} + +button.recommend { + background: #00caf2 url(../images/buttons/ui/recommend.png) repeat-x left bottom/auto 100%; color: #333; + border: 0.1rem solid #008eab; +} + +button.recommend:active { + border-color: #008aaa; background: #008aaa; background-size: auto 100%; color: #333; +} + +button.danger { + background-image: url(../images/buttons/ui/danger.png); background-color: #b70404; color: #fff; text-shadow: none; + border: 0.1rem solid #820000; +} + +button.danger:active { + background-image: url(../images/buttons/ui/danger-press.png); background-color: #890707; +} + +.contact_read button.recommend,.contact_read button.danger { + width: 100%; +} \ No newline at end of file diff --git a/Contacts/images/buttons/icons/dialog.png b/Contacts/images/buttons/icons/dialog.png new file mode 100644 index 0000000..6cda241 Binary files /dev/null and b/Contacts/images/buttons/icons/dialog.png differ diff --git a/Contacts/images/buttons/icons/dialog@1.5x.png b/Contacts/images/buttons/icons/dialog@1.5x.png new file mode 100644 index 0000000..c8bf0f7 Binary files /dev/null and b/Contacts/images/buttons/icons/dialog@1.5x.png differ diff --git a/Contacts/images/buttons/icons/dialog@2x.png b/Contacts/images/buttons/icons/dialog@2x.png new file mode 100644 index 0000000..4c0bec3 Binary files /dev/null and b/Contacts/images/buttons/icons/dialog@2x.png differ diff --git a/Contacts/images/buttons/icons/view.png b/Contacts/images/buttons/icons/view.png new file mode 100644 index 0000000..de62f59 Binary files /dev/null and b/Contacts/images/buttons/icons/view.png differ diff --git a/Contacts/images/buttons/icons/view@1.5x.png b/Contacts/images/buttons/icons/view@1.5x.png new file mode 100644 index 0000000..9004f30 Binary files /dev/null and b/Contacts/images/buttons/icons/view@1.5x.png differ diff --git a/Contacts/images/buttons/icons/view@2x.png b/Contacts/images/buttons/icons/view@2x.png new file mode 100644 index 0000000..4d565bd Binary files /dev/null and b/Contacts/images/buttons/icons/view@2x.png differ diff --git a/Contacts/images/buttons/ui/danger-disabled.png b/Contacts/images/buttons/ui/danger-disabled.png new file mode 100644 index 0000000..2a14bfb Binary files /dev/null and b/Contacts/images/buttons/ui/danger-disabled.png differ diff --git a/Contacts/images/buttons/ui/danger-press.png b/Contacts/images/buttons/ui/danger-press.png new file mode 100644 index 0000000..d7529b5 Binary files /dev/null and b/Contacts/images/buttons/ui/danger-press.png differ diff --git a/Contacts/images/buttons/ui/danger.png b/Contacts/images/buttons/ui/danger.png new file mode 100644 index 0000000..400e3ae Binary files /dev/null and b/Contacts/images/buttons/ui/danger.png differ diff --git a/Contacts/images/buttons/ui/default.png b/Contacts/images/buttons/ui/default.png new file mode 100644 index 0000000..2ff298a Binary files /dev/null and b/Contacts/images/buttons/ui/default.png differ diff --git a/Contacts/images/buttons/ui/disabled.png b/Contacts/images/buttons/ui/disabled.png new file mode 100644 index 0000000..2e97135 Binary files /dev/null and b/Contacts/images/buttons/ui/disabled.png differ diff --git a/Contacts/images/buttons/ui/recommend.png b/Contacts/images/buttons/ui/recommend.png new file mode 100644 index 0000000..42aed39 Binary files /dev/null and b/Contacts/images/buttons/ui/recommend.png differ diff --git a/Contacts/images/buttons/ui/shadow.png b/Contacts/images/buttons/ui/shadow.png new file mode 100644 index 0000000..acc799f Binary files /dev/null and b/Contacts/images/buttons/ui/shadow.png differ diff --git a/Contacts/images/buttons/ui/shadow@1.5x.png b/Contacts/images/buttons/ui/shadow@1.5x.png new file mode 100644 index 0000000..9a15353 Binary files /dev/null and b/Contacts/images/buttons/ui/shadow@1.5x.png differ diff --git a/Contacts/images/buttons/ui/shadow@2x.png b/Contacts/images/buttons/ui/shadow@2x.png new file mode 100644 index 0000000..f208d73 Binary files /dev/null and b/Contacts/images/buttons/ui/shadow@2x.png differ diff --git a/Contacts/images/comms_icons.png b/Contacts/images/comms_icons.png new file mode 100644 index 0000000..0c30729 Binary files /dev/null and b/Contacts/images/comms_icons.png differ diff --git a/Contacts/images/headers/.DS_Store b/Contacts/images/headers/.DS_Store new file mode 100644 index 0000000..1c9513d Binary files /dev/null and b/Contacts/images/headers/.DS_Store differ diff --git a/Contacts/images/headers/icons/.DS_Store b/Contacts/images/headers/icons/.DS_Store new file mode 100644 index 0000000..8f33539 Binary files /dev/null and b/Contacts/images/headers/icons/.DS_Store differ diff --git a/Contacts/images/headers/icons/add.png b/Contacts/images/headers/icons/add.png new file mode 100644 index 0000000..92a5a24 Binary files /dev/null and b/Contacts/images/headers/icons/add.png differ diff --git a/Contacts/images/headers/icons/add@1.5x.png b/Contacts/images/headers/icons/add@1.5x.png new file mode 100644 index 0000000..e78368f Binary files /dev/null and b/Contacts/images/headers/icons/add@1.5x.png differ diff --git a/Contacts/images/headers/icons/add@2x.png b/Contacts/images/headers/icons/add@2x.png new file mode 100644 index 0000000..c6ef238 Binary files /dev/null and b/Contacts/images/headers/icons/add@2x.png differ diff --git a/Contacts/images/headers/icons/back-rtl.png b/Contacts/images/headers/icons/back-rtl.png new file mode 100644 index 0000000..a71c7c0 Binary files /dev/null and b/Contacts/images/headers/icons/back-rtl.png differ diff --git a/Contacts/images/headers/icons/back-rtl@1.5x.png b/Contacts/images/headers/icons/back-rtl@1.5x.png new file mode 100644 index 0000000..5e00eb8 Binary files /dev/null and b/Contacts/images/headers/icons/back-rtl@1.5x.png differ diff --git a/Contacts/images/headers/icons/back-rtl@2x.png b/Contacts/images/headers/icons/back-rtl@2x.png new file mode 100644 index 0000000..67931b2 Binary files /dev/null and b/Contacts/images/headers/icons/back-rtl@2x.png differ diff --git a/Contacts/images/headers/icons/back.png b/Contacts/images/headers/icons/back.png new file mode 100644 index 0000000..5383ee2 Binary files /dev/null and b/Contacts/images/headers/icons/back.png differ diff --git a/Contacts/images/headers/icons/back@1.5x.png b/Contacts/images/headers/icons/back@1.5x.png new file mode 100644 index 0000000..08ab986 Binary files /dev/null and b/Contacts/images/headers/icons/back@1.5x.png differ diff --git a/Contacts/images/headers/icons/back@2x.png b/Contacts/images/headers/icons/back@2x.png new file mode 100644 index 0000000..9ce702e Binary files /dev/null and b/Contacts/images/headers/icons/back@2x.png differ diff --git a/Contacts/images/headers/icons/clear.png b/Contacts/images/headers/icons/clear.png new file mode 100644 index 0000000..9990d01 Binary files /dev/null and b/Contacts/images/headers/icons/clear.png differ diff --git a/Contacts/images/headers/icons/clear@1.5x.png b/Contacts/images/headers/icons/clear@1.5x.png new file mode 100644 index 0000000..b408f9b Binary files /dev/null and b/Contacts/images/headers/icons/clear@1.5x.png differ diff --git a/Contacts/images/headers/icons/clear@2x.png b/Contacts/images/headers/icons/clear@2x.png new file mode 100644 index 0000000..e2ebc9f Binary files /dev/null and b/Contacts/images/headers/icons/clear@2x.png differ diff --git a/Contacts/images/headers/icons/close.png b/Contacts/images/headers/icons/close.png new file mode 100644 index 0000000..5e73322 Binary files /dev/null and b/Contacts/images/headers/icons/close.png differ diff --git a/Contacts/images/headers/icons/close@1.5x.png b/Contacts/images/headers/icons/close@1.5x.png new file mode 100644 index 0000000..f2f34ee Binary files /dev/null and b/Contacts/images/headers/icons/close@1.5x.png differ diff --git a/Contacts/images/headers/icons/close@2x.png b/Contacts/images/headers/icons/close@2x.png new file mode 100644 index 0000000..5e3a069 Binary files /dev/null and b/Contacts/images/headers/icons/close@2x.png differ diff --git a/Contacts/images/headers/icons/compose.png b/Contacts/images/headers/icons/compose.png new file mode 100644 index 0000000..d11379f Binary files /dev/null and b/Contacts/images/headers/icons/compose.png differ diff --git a/Contacts/images/headers/icons/compose@1.5x.png b/Contacts/images/headers/icons/compose@1.5x.png new file mode 100644 index 0000000..0d7035e Binary files /dev/null and b/Contacts/images/headers/icons/compose@1.5x.png differ diff --git a/Contacts/images/headers/icons/compose@2x.png b/Contacts/images/headers/icons/compose@2x.png new file mode 100644 index 0000000..1265d1a Binary files /dev/null and b/Contacts/images/headers/icons/compose@2x.png differ diff --git a/Contacts/images/headers/icons/edit.png b/Contacts/images/headers/icons/edit.png new file mode 100644 index 0000000..66c7a2d Binary files /dev/null and b/Contacts/images/headers/icons/edit.png differ diff --git a/Contacts/images/headers/icons/edit@1.5x.png b/Contacts/images/headers/icons/edit@1.5x.png new file mode 100644 index 0000000..49fb8e3 Binary files /dev/null and b/Contacts/images/headers/icons/edit@1.5x.png differ diff --git a/Contacts/images/headers/icons/edit@2x.png b/Contacts/images/headers/icons/edit@2x.png new file mode 100644 index 0000000..837c0c3 Binary files /dev/null and b/Contacts/images/headers/icons/edit@2x.png differ diff --git a/Contacts/images/headers/icons/menu.png b/Contacts/images/headers/icons/menu.png new file mode 100644 index 0000000..d1462c8 Binary files /dev/null and b/Contacts/images/headers/icons/menu.png differ diff --git a/Contacts/images/headers/icons/menu@1.5x.png b/Contacts/images/headers/icons/menu@1.5x.png new file mode 100644 index 0000000..5cf17fe Binary files /dev/null and b/Contacts/images/headers/icons/menu@1.5x.png differ diff --git a/Contacts/images/headers/icons/menu@2x.png b/Contacts/images/headers/icons/menu@2x.png new file mode 100644 index 0000000..35a9cfd Binary files /dev/null and b/Contacts/images/headers/icons/menu@2x.png differ diff --git a/Contacts/images/headers/icons/reply-all.png b/Contacts/images/headers/icons/reply-all.png new file mode 100644 index 0000000..5c0c8b9 Binary files /dev/null and b/Contacts/images/headers/icons/reply-all.png differ diff --git a/Contacts/images/headers/icons/reply-all@1.5x.png b/Contacts/images/headers/icons/reply-all@1.5x.png new file mode 100644 index 0000000..8618023 Binary files /dev/null and b/Contacts/images/headers/icons/reply-all@1.5x.png differ diff --git a/Contacts/images/headers/icons/reply-all@2x.png b/Contacts/images/headers/icons/reply-all@2x.png new file mode 100644 index 0000000..4d3d74a Binary files /dev/null and b/Contacts/images/headers/icons/reply-all@2x.png differ diff --git a/Contacts/images/headers/icons/reply.png b/Contacts/images/headers/icons/reply.png new file mode 100644 index 0000000..c354b5f Binary files /dev/null and b/Contacts/images/headers/icons/reply.png differ diff --git a/Contacts/images/headers/icons/reply@1.5x.png b/Contacts/images/headers/icons/reply@1.5x.png new file mode 100644 index 0000000..e45eb0f Binary files /dev/null and b/Contacts/images/headers/icons/reply@1.5x.png differ diff --git a/Contacts/images/headers/icons/reply@2x.png b/Contacts/images/headers/icons/reply@2x.png new file mode 100644 index 0000000..1990b4d Binary files /dev/null and b/Contacts/images/headers/icons/reply@2x.png differ diff --git a/Contacts/images/headers/icons/send.png b/Contacts/images/headers/icons/send.png new file mode 100644 index 0000000..4bdbb1e Binary files /dev/null and b/Contacts/images/headers/icons/send.png differ diff --git a/Contacts/images/headers/icons/send@1.5x.png b/Contacts/images/headers/icons/send@1.5x.png new file mode 100644 index 0000000..e30e881 Binary files /dev/null and b/Contacts/images/headers/icons/send@1.5x.png differ diff --git a/Contacts/images/headers/icons/send@2x.png b/Contacts/images/headers/icons/send@2x.png new file mode 100644 index 0000000..c62d699 Binary files /dev/null and b/Contacts/images/headers/icons/send@2x.png differ diff --git a/Contacts/images/headers/icons/user.png b/Contacts/images/headers/icons/user.png new file mode 100644 index 0000000..c8abb82 Binary files /dev/null and b/Contacts/images/headers/icons/user.png differ diff --git a/Contacts/images/headers/icons/user@1.5x.png b/Contacts/images/headers/icons/user@1.5x.png new file mode 100644 index 0000000..ba0edf5 Binary files /dev/null and b/Contacts/images/headers/icons/user@1.5x.png differ diff --git a/Contacts/images/headers/icons/user@2x.png b/Contacts/images/headers/icons/user@2x.png new file mode 100644 index 0000000..9e2d4ff Binary files /dev/null and b/Contacts/images/headers/icons/user@2x.png differ diff --git a/Contacts/images/headers/ui/dark/header.png b/Contacts/images/headers/ui/dark/header.png new file mode 100644 index 0000000..df83859 Binary files /dev/null and b/Contacts/images/headers/ui/dark/header.png differ diff --git a/Contacts/images/headers/ui/dark/negative.png b/Contacts/images/headers/ui/dark/negative.png new file mode 100644 index 0000000..6f092a5 Binary files /dev/null and b/Contacts/images/headers/ui/dark/negative.png differ diff --git a/Contacts/images/headers/ui/dark/separator-large.png b/Contacts/images/headers/ui/dark/separator-large.png new file mode 100644 index 0000000..37ce4de Binary files /dev/null and b/Contacts/images/headers/ui/dark/separator-large.png differ diff --git a/Contacts/images/headers/ui/dark/separator.png b/Contacts/images/headers/ui/dark/separator.png new file mode 100644 index 0000000..fce8808 Binary files /dev/null and b/Contacts/images/headers/ui/dark/separator.png differ diff --git a/Contacts/images/headers/ui/dark/subheader.png b/Contacts/images/headers/ui/dark/subheader.png new file mode 100644 index 0000000..4c7699f Binary files /dev/null and b/Contacts/images/headers/ui/dark/subheader.png differ diff --git a/Contacts/images/headers/ui/header.png b/Contacts/images/headers/ui/header.png new file mode 100644 index 0000000..24796f6 Binary files /dev/null and b/Contacts/images/headers/ui/header.png differ diff --git a/Contacts/images/headers/ui/noise-pattern.png b/Contacts/images/headers/ui/noise-pattern.png new file mode 100644 index 0000000..9c78da8 Binary files /dev/null and b/Contacts/images/headers/ui/noise-pattern.png differ diff --git a/Contacts/images/headers/ui/organic/header.png b/Contacts/images/headers/ui/organic/header.png new file mode 100644 index 0000000..ac250cd Binary files /dev/null and b/Contacts/images/headers/ui/organic/header.png differ diff --git a/Contacts/images/headers/ui/organic/negative.png b/Contacts/images/headers/ui/organic/negative.png new file mode 100644 index 0000000..b663901 Binary files /dev/null and b/Contacts/images/headers/ui/organic/negative.png differ diff --git a/Contacts/images/headers/ui/organic/pattern.png b/Contacts/images/headers/ui/organic/pattern.png new file mode 100644 index 0000000..202db19 Binary files /dev/null and b/Contacts/images/headers/ui/organic/pattern.png differ diff --git a/Contacts/images/headers/ui/organic/separator-large.png b/Contacts/images/headers/ui/organic/separator-large.png new file mode 100644 index 0000000..3c4782f Binary files /dev/null and b/Contacts/images/headers/ui/organic/separator-large.png differ diff --git a/Contacts/images/headers/ui/organic/separator.png b/Contacts/images/headers/ui/organic/separator.png new file mode 100644 index 0000000..e315f0e Binary files /dev/null and b/Contacts/images/headers/ui/organic/separator.png differ diff --git a/Contacts/images/headers/ui/organic/subheader.png b/Contacts/images/headers/ui/organic/subheader.png new file mode 100644 index 0000000..31adb6c Binary files /dev/null and b/Contacts/images/headers/ui/organic/subheader.png differ diff --git a/Contacts/images/headers/ui/overlay/header.png b/Contacts/images/headers/ui/overlay/header.png new file mode 100644 index 0000000..fb3ead5 Binary files /dev/null and b/Contacts/images/headers/ui/overlay/header.png differ diff --git a/Contacts/images/headers/ui/overlay/separator.png b/Contacts/images/headers/ui/overlay/separator.png new file mode 100644 index 0000000..e02f24a Binary files /dev/null and b/Contacts/images/headers/ui/overlay/separator.png differ diff --git a/Contacts/images/headers/ui/separator-large.png b/Contacts/images/headers/ui/separator-large.png new file mode 100644 index 0000000..f50841f Binary files /dev/null and b/Contacts/images/headers/ui/separator-large.png differ diff --git a/Contacts/images/headers/ui/separator.png b/Contacts/images/headers/ui/separator.png new file mode 100644 index 0000000..18d6c81 Binary files /dev/null and b/Contacts/images/headers/ui/separator.png differ diff --git a/Contacts/images/headers/ui/shadow.png b/Contacts/images/headers/ui/shadow.png new file mode 100644 index 0000000..70e7e1d Binary files /dev/null and b/Contacts/images/headers/ui/shadow.png differ diff --git a/Contacts/images/headers/ui/shadow@1.5x.png b/Contacts/images/headers/ui/shadow@1.5x.png new file mode 100644 index 0000000..5e12dee Binary files /dev/null and b/Contacts/images/headers/ui/shadow@1.5x.png differ diff --git a/Contacts/images/headers/ui/shadow@2x.png b/Contacts/images/headers/ui/shadow@2x.png new file mode 100644 index 0000000..9f54ae6 Binary files /dev/null and b/Contacts/images/headers/ui/shadow@2x.png differ diff --git a/Contacts/images/headers/ui/subheader.png b/Contacts/images/headers/ui/subheader.png new file mode 100644 index 0000000..6bd5a23 Binary files /dev/null and b/Contacts/images/headers/ui/subheader.png differ diff --git a/Contacts/images/input_areas/icons/arrow.png b/Contacts/images/input_areas/icons/arrow.png new file mode 100644 index 0000000..60b0048 Binary files /dev/null and b/Contacts/images/input_areas/icons/arrow.png differ diff --git a/Contacts/images/input_areas/icons/arrow@1.5x.png b/Contacts/images/input_areas/icons/arrow@1.5x.png new file mode 100644 index 0000000..c829016 Binary files /dev/null and b/Contacts/images/input_areas/icons/arrow@1.5x.png differ diff --git a/Contacts/images/input_areas/icons/arrow@2x.png b/Contacts/images/input_areas/icons/arrow@2x.png new file mode 100644 index 0000000..6263903 Binary files /dev/null and b/Contacts/images/input_areas/icons/arrow@2x.png differ diff --git a/Contacts/images/input_areas/icons/clear-dark.png b/Contacts/images/input_areas/icons/clear-dark.png new file mode 100644 index 0000000..eb8acf8 Binary files /dev/null and b/Contacts/images/input_areas/icons/clear-dark.png differ diff --git a/Contacts/images/input_areas/icons/clear-dark@1.5x.png b/Contacts/images/input_areas/icons/clear-dark@1.5x.png new file mode 100644 index 0000000..0124197 Binary files /dev/null and b/Contacts/images/input_areas/icons/clear-dark@1.5x.png differ diff --git a/Contacts/images/input_areas/icons/clear-dark@2x.png b/Contacts/images/input_areas/icons/clear-dark@2x.png new file mode 100644 index 0000000..92a3ec4 Binary files /dev/null and b/Contacts/images/input_areas/icons/clear-dark@2x.png differ diff --git a/Contacts/images/input_areas/icons/clear.png b/Contacts/images/input_areas/icons/clear.png new file mode 100644 index 0000000..56ceb33 Binary files /dev/null and b/Contacts/images/input_areas/icons/clear.png differ diff --git a/Contacts/images/input_areas/icons/clear@1.5x.png b/Contacts/images/input_areas/icons/clear@1.5x.png new file mode 100644 index 0000000..1753074 Binary files /dev/null and b/Contacts/images/input_areas/icons/clear@1.5x.png differ diff --git a/Contacts/images/input_areas/icons/clear@2x.png b/Contacts/images/input_areas/icons/clear@2x.png new file mode 100644 index 0000000..0fb3521 Binary files /dev/null and b/Contacts/images/input_areas/icons/clear@2x.png differ diff --git a/Contacts/images/input_areas/icons/search-dark.png b/Contacts/images/input_areas/icons/search-dark.png new file mode 100644 index 0000000..6d217cf Binary files /dev/null and b/Contacts/images/input_areas/icons/search-dark.png differ diff --git a/Contacts/images/input_areas/icons/search-dark@1.5x.png b/Contacts/images/input_areas/icons/search-dark@1.5x.png new file mode 100644 index 0000000..1e3f1f8 Binary files /dev/null and b/Contacts/images/input_areas/icons/search-dark@1.5x.png differ diff --git a/Contacts/images/input_areas/icons/search-dark@2x.png b/Contacts/images/input_areas/icons/search-dark@2x.png new file mode 100644 index 0000000..1d31a21 Binary files /dev/null and b/Contacts/images/input_areas/icons/search-dark@2x.png differ diff --git a/Contacts/images/input_areas/icons/search.png b/Contacts/images/input_areas/icons/search.png new file mode 100644 index 0000000..64684db Binary files /dev/null and b/Contacts/images/input_areas/icons/search.png differ diff --git a/Contacts/images/input_areas/icons/search@1.5x.png b/Contacts/images/input_areas/icons/search@1.5x.png new file mode 100644 index 0000000..7bf564c Binary files /dev/null and b/Contacts/images/input_areas/icons/search@1.5x.png differ diff --git a/Contacts/images/input_areas/icons/search@2x.png b/Contacts/images/input_areas/icons/search@2x.png new file mode 100644 index 0000000..3618e8b Binary files /dev/null and b/Contacts/images/input_areas/icons/search@2x.png differ diff --git a/Contacts/images/input_areas/ui/active.png b/Contacts/images/input_areas/ui/active.png new file mode 100644 index 0000000..48e84d8 Binary files /dev/null and b/Contacts/images/input_areas/ui/active.png differ diff --git a/Contacts/images/input_areas/ui/background-dark.png b/Contacts/images/input_areas/ui/background-dark.png new file mode 100644 index 0000000..f376b7c Binary files /dev/null and b/Contacts/images/input_areas/ui/background-dark.png differ diff --git a/Contacts/images/input_areas/ui/background.png b/Contacts/images/input_areas/ui/background.png new file mode 100644 index 0000000..dce3df4 Binary files /dev/null and b/Contacts/images/input_areas/ui/background.png differ diff --git a/Contacts/images/input_areas/ui/separator-dark.png b/Contacts/images/input_areas/ui/separator-dark.png new file mode 100644 index 0000000..1469595 Binary files /dev/null and b/Contacts/images/input_areas/ui/separator-dark.png differ diff --git a/Contacts/images/input_areas/ui/separator-dark@1.5x.png b/Contacts/images/input_areas/ui/separator-dark@1.5x.png new file mode 100644 index 0000000..a6a781a Binary files /dev/null and b/Contacts/images/input_areas/ui/separator-dark@1.5x.png differ diff --git a/Contacts/images/input_areas/ui/separator-dark@2x.png b/Contacts/images/input_areas/ui/separator-dark@2x.png new file mode 100644 index 0000000..ffb0a3f Binary files /dev/null and b/Contacts/images/input_areas/ui/separator-dark@2x.png differ diff --git a/Contacts/images/input_areas/ui/separator.png b/Contacts/images/input_areas/ui/separator.png new file mode 100644 index 0000000..32bcc46 Binary files /dev/null and b/Contacts/images/input_areas/ui/separator.png differ diff --git a/Contacts/images/input_areas/ui/separator@1.5x.png b/Contacts/images/input_areas/ui/separator@1.5x.png new file mode 100644 index 0000000..8b2acd3 Binary files /dev/null and b/Contacts/images/input_areas/ui/separator@1.5x.png differ diff --git a/Contacts/images/input_areas/ui/separator@2x.png b/Contacts/images/input_areas/ui/separator@2x.png new file mode 100644 index 0000000..1c4ae4a Binary files /dev/null and b/Contacts/images/input_areas/ui/separator@2x.png differ diff --git a/Contacts/images/input_areas/ui/shadow-invert.png b/Contacts/images/input_areas/ui/shadow-invert.png new file mode 100644 index 0000000..1694bbf Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow-invert.png differ diff --git a/Contacts/images/input_areas/ui/shadow-invert@1.5x.png b/Contacts/images/input_areas/ui/shadow-invert@1.5x.png new file mode 100644 index 0000000..7676c3a Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow-invert@1.5x.png differ diff --git a/Contacts/images/input_areas/ui/shadow-invert@2x.png b/Contacts/images/input_areas/ui/shadow-invert@2x.png new file mode 100644 index 0000000..d3c0db1 Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow-invert@2x.png differ diff --git a/Contacts/images/input_areas/ui/shadow-search.png b/Contacts/images/input_areas/ui/shadow-search.png new file mode 100644 index 0000000..234e7e4 Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow-search.png differ diff --git a/Contacts/images/input_areas/ui/shadow-search@1.5x.png b/Contacts/images/input_areas/ui/shadow-search@1.5x.png new file mode 100644 index 0000000..7aa06d2 Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow-search@1.5x.png differ diff --git a/Contacts/images/input_areas/ui/shadow-search@2x.png b/Contacts/images/input_areas/ui/shadow-search@2x.png new file mode 100644 index 0000000..58f4c7d Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow-search@2x.png differ diff --git a/Contacts/images/input_areas/ui/shadow.png b/Contacts/images/input_areas/ui/shadow.png new file mode 100644 index 0000000..3739f71 Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow.png differ diff --git a/Contacts/images/input_areas/ui/shadow@1.5x.png b/Contacts/images/input_areas/ui/shadow@1.5x.png new file mode 100644 index 0000000..2d51d10 Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow@1.5x.png differ diff --git a/Contacts/images/input_areas/ui/shadow@2x.png b/Contacts/images/input_areas/ui/shadow@2x.png new file mode 100644 index 0000000..fa7e121 Binary files /dev/null and b/Contacts/images/input_areas/ui/shadow@2x.png differ diff --git a/Contacts/index.html b/Contacts/index.html new file mode 100644 index 0000000..a94cf62 --- /dev/null +++ b/Contacts/index.html @@ -0,0 +1,42 @@ + + + +Contacts + + + + + + + + +
+ +
+ + + +

Contacts

+
+ +
+
+
+
    + +
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/Contacts/js/app.js b/Contacts/js/app.js new file mode 100644 index 0000000..3f0f712 --- /dev/null +++ b/Contacts/js/app.js @@ -0,0 +1,218 @@ +var app = function(){ + + return { + /** + * common + */ + $: function(id){ + if(!id){ + return null; + } + return document.getElementById(id); + }, + + addEvent: function(id, event, callBack){ + var obj = $(id); + if (obj.addEventListener) { + obj.addEventListener(event, callBack, false); + } + else{ + obj.attachEvent('on'+event, callBack, false); + } + }, + + getURLParameter: function(name) { + return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null + }, + + back: function(){ + document.location = "index.html"; + }, + + /** + * contacts read + */ + contactsRead: function(){ + app.addEvent('btnCreateOnContactsRead', 'click', function(){ + document.location = 'contact_create.html'; + }); + + var filter = { + sortBy: "name", + sortOrder: "descending" + }; + + var allContacts = navigator.mozContacts.getAll(filter); + + allContacts.onsuccess = function (event) { + var cursor = event.target; + var tmpl = ''; + var person = {}; + if (cursor.result) { + person.id = cursor.result.id; + person.name = cursor.result.name || ''; + person.tel = cursor.result.tel ? cursor.result.tel[0].value : ''; + + tmpl += '
  • '; + tmpl += ' '; + tmpl += '

    name : ' + person.name + '

    '; + tmpl += '

    tel : ' + person.tel + '

    '; + tmpl += '
    '; + tmpl += '
  • '; + + $('contactsList').innerHTML += tmpl; + + cursor.continue(); + } + else { + console.log('No more contacts'); + } + } + + allContacts.onerror = function() { + console.warn("Something went terribly wrong! :("); + } + }, + /** + * contact create + */ + contactCreate: function(event){ + event.preventDefault ? event.preventDefault() : event.returnValue = false; + + var name = $('name').value; + var tel = $('tel').value; + var person = { + name : [ name ], + familyName : [ name ], + tel : [ { + type : 'home', + value : tel + } ] + }; + + var saving = navigator.mozContacts.save(person); + saving.onsuccess = function() { + app.back(); + console.log('new contact saved'); + }; + saving.onerror = function(err) { + console.error('save err : ', err); + }; + }, + /** + * contact read + */ + contactRead: function(){ + console.log('contactread'); + app.addEvent('btnBackOnContactRead', 'click', app.back); + app.addEvent('btnUpdateOnContactRead', 'click', app.contactUpdate); + app.addEvent('btnDeleteOnContactRead', 'click', app.contactDelete); + + var id = app.getURLParameter('id'); + var options = { + filterValue : id, + filterBy : ["id"], + filterOp : "equals" + }; + var search = navigator.mozContacts.find(options); + + search.onsuccess = function() { + if (search.result.length === 1) { + var person = search.result[0]; + + $('id').value = person.id; + $('name').value = person.name || ''; + $('tel').value = person.tel ? person.tel[0].value : ''; + + console.log("Found:" + person.givenName[0] + " " + person.familyName[0]); + } else { + console.log("Sorry, there is no such contact."); + } + } + search.onerror = function() { + console.warn("Uh! Something goes wrong, no result found!"); + } + }, + /** + * contact update + */ + contactUpdate: function(event){ + + event.preventDefault ? event.preventDefault() : event.returnValue = false; + + var id = $('id').value; + var name = $('name').value; + var tel = $('tel').value; + + + var options = { + filterValue : id, + filterBy : ["id"], + filterOp : "equals" + }; + + var updateSearch = navigator.mozContacts.find(options); + + updateSearch.onsuccess = function(){ + if(updateSearch.result.length == 1){ + var person = updateSearch.result[0]; + person.name = name; + person.tel[0].value = tel; + + var upadte = navigator.mozContacts.save(person); + upadte.onsuccess = function() { + document.location = "index.html"; + }; + + upadte.onerror = function(err) { + console.error(err); + }; + } + } + updateSearch.onerror = function() { + console.warn("Uh! Something goes wrong, no result found!"); + } + }, + /** + * contactDelete + */ + contactDelete: function(event){ + event.preventDefault ? event.preventDefault() : event.returnValue = false; + + if (confirm("Really?")) { + + var id = $('id').value; + + var options = { + filterValue : id, + filterBy : ["id"], + filterOp : "equals" + }; + + var removeSearch = navigator.mozContacts.find(options); + + removeSearch.onsuccess = function(){ + if(removeSearch.result.length == 1){ + var person = removeSearch.result[0]; + var remove = navigator.mozContacts.remove(person); + + remove.onsuccess = function() { + document.location = "index.html"; + }; + + remove.onerror = function(err) { + console.error('remove error : ' + err); + }; + } + } + removeSearch.onerror = function() { + console.warn("Uh! Something goes wrong, no result found!"); + } + + } + } + + } //-- return +}(); + +window.$ = app.$; diff --git a/Contacts/manifest.webapp b/Contacts/manifest.webapp new file mode 100644 index 0000000..f710ed1 --- /dev/null +++ b/Contacts/manifest.webapp @@ -0,0 +1,20 @@ +{ + "version": "0.1", + "name": "Contacts", + "type" : "privileged", + "csp" : "default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'", + "launch_path": "/index.html", + "installs_allowed_from": ["*"], + "default_locale": "en", + "permissions": { + "contacts": { + "description": "Contacts App", + "access": "readwrite" + } + }, + "icons": { + "16": "img/icon-16.png", + "48": "img/icon-48.png", + "128": "img/icon-128.png" + } +} \ No newline at end of file diff --git a/Contacts/sample.html b/Contacts/sample.html new file mode 100644 index 0000000..10fba6a --- /dev/null +++ b/Contacts/sample.html @@ -0,0 +1,85 @@ + + + + + + + + + + \ No newline at end of file