Jelajahi Sumber

Merge pull request #3 from Omnimaga/buildingblocks

Buildingblocks
Nathaniel van Diepen 10 tahun lalu
induk
melakukan
de9e01f69e
100 mengubah file dengan 2391 tambahan dan 7 penghapusan
  1. 39 6
      api.php
  2. 1 1
      bugs.appcache
  3. 384 0
      css/action_menu.css
  4. 48 0
      css/action_menu/header_actions.html
  5. TEMPAT SAMPAH
      css/action_menu/images/icons/back-rtl.png
  6. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  7. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  8. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  9. TEMPAT SAMPAH
      css/action_menu/images/icons/back.png
  10. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  11. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  12. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  13. TEMPAT SAMPAH
      css/action_menu/images/icons/close.png
  14. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  15. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  16. TEMPAT SAMPAH
      css/action_menu/images/icons/[email protected]
  17. TEMPAT SAMPAH
      css/action_menu/images/ui/alpha.png
  18. TEMPAT SAMPAH
      css/action_menu/images/ui/default.png
  19. TEMPAT SAMPAH
      css/action_menu/images/ui/gradient.png
  20. TEMPAT SAMPAH
      css/action_menu/images/ui/pattern.png
  21. TEMPAT SAMPAH
      css/action_menu/images/ui/separator.png
  22. 53 0
      css/action_menu/index.html
  23. 147 0
      css/app.css
  24. 303 0
      css/buttons.css
  25. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  26. TEMPAT SAMPAH
      css/buttons/images/icons/dialog.png
  27. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  28. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  29. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  30. TEMPAT SAMPAH
      css/buttons/images/icons/dialog_rtl.png
  31. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  32. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  33. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  34. TEMPAT SAMPAH
      css/buttons/images/icons/view.png
  35. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  36. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  37. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  38. TEMPAT SAMPAH
      css/buttons/images/icons/view_rtl.png
  39. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  40. TEMPAT SAMPAH
      css/buttons/images/icons/[email protected]
  41. TEMPAT SAMPAH
      css/buttons/images/ui/danger-disabled.png
  42. TEMPAT SAMPAH
      css/buttons/images/ui/danger-press.png
  43. TEMPAT SAMPAH
      css/buttons/images/ui/danger.png
  44. TEMPAT SAMPAH
      css/buttons/images/ui/default.png
  45. TEMPAT SAMPAH
      css/buttons/images/ui/disabled.png
  46. TEMPAT SAMPAH
      css/buttons/images/ui/recommend.png
  47. TEMPAT SAMPAH
      css/buttons/images/ui/shadow.png
  48. TEMPAT SAMPAH
      css/buttons/images/ui/[email protected]
  49. TEMPAT SAMPAH
      css/buttons/images/ui/[email protected]
  50. 133 0
      css/buttons/index.html
  51. 297 0
      css/confirm.css
  52. 41 0
      css/confirm/content.html
  53. 40 0
      css/confirm/content_details.html
  54. TEMPAT SAMPAH
      css/confirm/images/ui/danger-disabled.png
  55. TEMPAT SAMPAH
      css/confirm/images/ui/danger-press.png
  56. TEMPAT SAMPAH
      css/confirm/images/ui/danger.png
  57. TEMPAT SAMPAH
      css/confirm/images/ui/default.png
  58. TEMPAT SAMPAH
      css/confirm/images/ui/disabled.png
  59. TEMPAT SAMPAH
      css/confirm/images/ui/gradient.png
  60. TEMPAT SAMPAH
      css/confirm/images/ui/pattern.png
  61. TEMPAT SAMPAH
      css/confirm/images/ui/recommend.png
  62. 51 0
      css/confirm/index.html
  63. 51 0
      css/confirm/long_content.html
  64. 50 0
      css/confirm/no_title.html
  65. 267 0
      css/date_selector.css
  66. TEMPAT SAMPAH
      css/date_selector/images/icons/checked.png
  67. TEMPAT SAMPAH
      css/date_selector/images/icons/[email protected]
  68. TEMPAT SAMPAH
      css/date_selector/images/icons/[email protected]
  69. TEMPAT SAMPAH
      css/date_selector/images/ui/affirmative.png
  70. TEMPAT SAMPAH
      css/date_selector/images/ui/default.png
  71. TEMPAT SAMPAH
      css/date_selector/images/ui/gradient.png
  72. TEMPAT SAMPAH
      css/date_selector/images/ui/[email protected]
  73. TEMPAT SAMPAH
      css/date_selector/images/ui/pattern-time.png
  74. TEMPAT SAMPAH
      css/date_selector/images/ui/pattern.png
  75. TEMPAT SAMPAH
      css/date_selector/images/ui/shadow-invert.png
  76. TEMPAT SAMPAH
      css/date_selector/images/ui/[email protected]
  77. TEMPAT SAMPAH
      css/date_selector/images/ui/[email protected]
  78. TEMPAT SAMPAH
      css/date_selector/images/ui/shadow.png
  79. TEMPAT SAMPAH
      css/date_selector/images/ui/[email protected]
  80. TEMPAT SAMPAH
      css/date_selector/images/ui/[email protected]
  81. 285 0
      css/date_selector/index.html
  82. 201 0
      css/drawer.css
  83. TEMPAT SAMPAH
      css/drawer/images/icons/menu.png
  84. TEMPAT SAMPAH
      css/drawer/images/icons/[email protected]
  85. TEMPAT SAMPAH
      css/drawer/images/icons/[email protected]
  86. TEMPAT SAMPAH
      css/drawer/images/icons/[email protected]
  87. TEMPAT SAMPAH
      css/drawer/images/ui/header.png
  88. TEMPAT SAMPAH
      css/drawer/images/ui/header/header.png
  89. TEMPAT SAMPAH
      css/drawer/images/ui/header/shadow.png
  90. TEMPAT SAMPAH
      css/drawer/images/ui/header/[email protected]
  91. TEMPAT SAMPAH
      css/drawer/images/ui/header/[email protected]
  92. TEMPAT SAMPAH
      css/drawer/images/ui/negative.png
  93. TEMPAT SAMPAH
      css/drawer/images/ui/pattern.png
  94. TEMPAT SAMPAH
      css/drawer/images/ui/pattern_subheader.png
  95. TEMPAT SAMPAH
      css/drawer/images/ui/separator.png
  96. TEMPAT SAMPAH
      css/drawer/images/ui/separator_large.png
  97. TEMPAT SAMPAH
      css/drawer/images/ui/shadow.png
  98. TEMPAT SAMPAH
      css/drawer/images/ui/[email protected]
  99. TEMPAT SAMPAH
      css/drawer/images/ui/[email protected]
  100. TEMPAT SAMPAH
      css/drawer/images/ui/shadow_header.png

+ 39 - 6
api.php

@@ -7,12 +7,16 @@
 		if(isset($_GET['id'])){
 			$id = $_GET['id'];
 			switch($_GET['type']){
+				case 'test':
+					echo time()+get('expire');
+				break;
 				case 'user':
 					back(true);
 					$ret['template'] = array(
 						'type'=>'pages',
 						'name'=>'user'
 					);
+					$ret['topbar'] = 'back';
 					if($user = userObj($id)){
 						$context = array(
 							'name'=>$user['name'],
@@ -48,6 +52,7 @@
 						'type'=>'pages',
 						'name'=>'issue'
 					);
+					$ret['topbar'] = 'back';
 					if($context = issueObj($id)){
 						$context['user'] = userObj($context['user']);
 						if($LOGGEDIN){
@@ -68,6 +73,7 @@
 						'type'=>'pages',
 						'name'=>'scrum'
 					);
+					$ret['topbar'] = 'back';
 					if($context = scrumObj($id)){
 						$context['user'] = userObj($context['user']);
 						if($LOGGEDIN){
@@ -88,6 +94,7 @@
 						'type'=>'pages',
 						'name'=>'project'
 					);
+					$ret['topbar'] = 'project';
 					if($context = projectObj($id)){
 						$context['user'] = userObj($context['user']);
 						if($LOGGEDIN){
@@ -146,6 +153,9 @@
 							if(isset($options['title'])){
 								$title = $options['title'];
 							}
+							if(isset($options['topbar'])){
+								$ret['topbar'] = $options['topbar'];
+							}
 							if(isset($options['context'])){
 								foreach($options['context'] as $key){
 									switch($key){
@@ -177,6 +187,14 @@
 												}
 											}
 										break;
+										case 'latest':
+											if($res = query("SELECT a.date, a.id FROM `activity` AS a ORDER BY a.date DESC LIMIT 10")){
+												$context['activity'] = fetch_all($res,MYSQLI_ASSOC);
+												foreach($context['activity'] as $key => $activity){
+													$context['activity'][$key] = activityObj($activity['id']);
+												}
+											}
+										break;
 									}
 								}
 							}
@@ -262,6 +280,7 @@
 									$key = login($_GET['username'],$_GET['password']);
 									if($key){
 										$_SESSION['username'] = $_GET['username'];
+										$ret['key'] = $key;
 									}else{
 										$ret['error'] = "Login failed. Username or Password didn't match.";
 									}
@@ -277,7 +296,7 @@
 										'id'=>'register'
 									)
 								);
-								if(is_valid('username')&& strpos($_GET['username'],' ') !== false&&is_valid('password')&&is_valid('password1')&&is_valid('email')&&is_valid('captcha')){
+								if(is_valid('username')&& strpos($_GET['username'],' ') === false&&is_valid('password')&&is_valid('password1')&&is_valid('email')&&is_valid('captcha')){
 									if($_GET['password']==$_GET['password1']){
 										if(compare_captcha($_GET['captcha'])){
 											if(addUser($_GET['username'],$_GET['password'],$_GET['email'])){
@@ -285,7 +304,7 @@
 												$_SESSION['username'] = $_GET['username'];
 												sendMail('welcome','Welcome!',$_GET['email'],get('email'),array($_GET['username'],$_GET['password'],get('email')));
 											}else{
-												$ret['error'] = "Could not add user. ".$mysqli->error;
+												$ret['error'] = "Could not add user. ".get_sql()->error;
 											}
 										}else{
 											$ret['error'] = "Captcha did not match.";
@@ -310,7 +329,7 @@
 									$ret['error'] = 'Invalid Action';
 								}elseif(is_valid('title')&&is_valid('description')){
 									if(!newProject($_GET['title'],$_GET['description'])){
-										$ret['error'] = 'Unable to create project.';
+										$ret['error'] = 'Unable to create project. '.get_sql()->error;
 									}
 								}else{
 									$ret['error'] = 'Fill in all the details.';
@@ -329,7 +348,7 @@
 									$ret['error'] = 'Invalid Action';
 								}elseif(is_valid('title')&&is_valid('description')){
 									if(!newIssue($_GET['title'],$_GET['description'])){
-										$ret['error'] = 'Unable to create issue. ';
+										$ret['error'] = 'Unable to create issue. '.get_sql()->error;
 									}
 								}else{
 									$ret['error'] = 'Fill in all the details.';
@@ -406,8 +425,22 @@
 										isset($_GET['at'])?$_GET['at']:0,
 										isset($_GET['amount'])?$_GET['amount']:10
 									);
-									$ret['messages'] = messages($_GET['pid'],$_GET['of'],$limit[0],$limit[1]);
-									$ret['params'] = array($_GET['pid'],$_GET['of'],$limit[0],$limit[1]);
+									switch($_GET['of']){
+										case 'latest':
+											$ret['template'] = 'activity';
+											if($res = query("SELECT a.date, a.id FROM `activity` AS a ORDER BY a.date DESC LIMIT %d,%d",array($limit[0],$limit[1]))){
+												$ret['messages'] = fetch_all($res,MYSQLI_ASSOC);
+												foreach($ret['messages'] as $key => $activity){
+													$ret['messages'][$key] = activityObj($activity['id']);
+												}
+											}else{
+												$ret['messages'] = array();
+											}
+										break;
+										default:
+											$ret['messages'] = messages($_GET['pid'],$_GET['of'],$limit[0],$limit[1]);
+											$ret['params'] = array($_GET['pid'],$_GET['of'],$limit[0],$limit[1]);
+									}
 								}else{
 									$ret['error'] = 'Missing comment parameters';
 								}

+ 1 - 1
bugs.appcache

@@ -111,4 +111,4 @@ NETWORK:
 *
 
 FALLBACK:
-#Version Wed Apr  9 21:40:06 MDT 2014
+#Version Mon Apr 14 08:06:28 MDT 2014

+ 384 - 0
css/action_menu.css

@@ -0,0 +1,384 @@
+/* ----------------------------------
+ * Action menu
+ * ---------------------------------- */
+
+/* Main dialog setup */
+form[role="dialog"][data-type="action"],
+form[role="dialog"][data-type="object"] {
+  background:
+    url(action_menu/images/ui/pattern.png) repeat left top,
+    url(action_menu/images/ui/gradient.png) no-repeat left top / 100% 100%;
+  overflow: hidden;
+  position: fixed;
+  z-index: 100;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  padding: 0 0 7rem;
+  /**
+   * Using "font-size: 0" to avoid the unwanted visual space (about 3px) created
+   * by white spaces and line breaks in the code between inline-block elements.
+   */
+  font-size: 0;
+  color: #fff;
+}
+
+form[role="dialog"][data-type="action"]:before,
+form[role="dialog"][data-type="object"]:before {
+  content: '';
+  display: inline-block;
+  vertical-align: top;
+  width: 0.1rem;
+  height: 100%;
+  margin-left: -0.1rem;
+}
+
+form[role="dialog"][data-type="action"] > header,
+form[role="dialog"][data-type="object"] > header {
+  -moz-box-sizing: border-box;
+  font-size: 1.6rem;
+  background: url(action_menu/images/ui/alpha.png) repeat 0 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 10;
+  height: 5rem;
+  line-height: 4.9rem;
+  color: #fff;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  display: block;
+  overflow: hidden;
+  font-weight: normal;
+  padding: 0 3rem;
+  border-bottom: 0.1rem solid #616262;
+}
+
+form[role="dialog"][data-type="action"] > header h1,
+form[role="dialog"][data-type="object"] > header h1 {
+  font-size: 1.6rem;
+  line-height: 4.9rem;
+  text-align: left;
+  color: #fff;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  display: block;
+  overflow: hidden;
+  margin: 0;
+  height: 100%;
+  font-weight: normal;
+}
+
+/* Generic set of actions in toolbar */
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] {
+  height: 100%;
+  float: right;
+  margin: 0 -3rem 0 1rem;
+  padding: 0;
+}
+
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] a,
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] button {
+  -moz-box-sizing: border-box;
+  position: relative;
+  float: left;
+  width: auto;
+  min-width: 5rem;
+  height: 4.9rem;
+  margin-bottom: 0;
+  padding: 0 1rem;
+  border-radius: 0;
+  line-height: 4.9rem;
+  background: none;
+  text-align: center;
+  text-shadow: none;
+  z-index: 5;
+}
+
+form[role="dialog"][data-type="action"] > header a,
+form[role="dialog"][data-type="action"] > header 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;
+}
+
+form[role="dialog"][data-type="action"] button::-moz-focus-inner,
+form[role="dialog"][data-type="object"] button::-moz-focus-inner {
+  outline: none;
+  border: none;
+}
+
+/* Pressed state */
+form[role="dialog"][data-type="action"] > header a:active .icon:after,
+form[role="dialog"][data-type="action"] > header button:active .icon:after,
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] a:active,
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] button:active  {
+  background: #008aaa !important;
+}
+
+/* Disabled state */
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] a[aria-disabled="true"],
+form[role="dialog"][data-type="action"] > header menu[type="toolbar"] button[disabled]  {
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+/* Icon definitions */
+form[role="dialog"][data-type="action"] > header .icon {
+  position: relative;
+  float: none;
+  display: inline-block;
+  vertical-align: top;
+  width: 4rem;
+  height: 4.9rem;
+  margin: 0 -1rem;
+  background: transparent no-repeat center center / 3rem auto;
+  font-size: 0;
+  overflow: hidden;
+}
+
+form[role="dialog"][data-type="action"] > header .icon.icon-close {
+  background-image: url(action_menu/images/icons/close.png);
+}
+
+form[role="dialog"][data-type="action"] > header .icon.icon-back {
+  background-image: url(action_menu/images/icons/back.png);
+}
+
+/* Navigation links (back, cancel, etc) */
+form[role="dialog"][data-type="action"] > header > button,
+form[role="dialog"][data-type="action"] > header > a {
+  float: left;
+  width: 5rem;
+  height: 4.9rem;
+  background: none;
+  overflow: visible;
+  margin: 0 -1rem 0 -3rem;
+  position: relative;
+}
+
+form[role="dialog"][data-type="action"] > header > button:after,
+form[role="dialog"][data-type="action"] > header > a:after {
+  content: "";
+  position: absolute;
+  left: 0;
+  top:0;
+  width: 3.2rem;
+  height: 4.9rem;
+  background: url(action_menu/images/ui/separator.png) no-repeat 3rem top / 0.1rem 4.8rem;
+}
+
+form[role="dialog"][data-type="action"] > header > button::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+form[role="dialog"][data-type="action"] > header > button .icon,
+form[role="dialog"][data-type="action"] > header > a .icon {
+  position: static;
+  display: block;
+  width: 3rem;
+  height: 4.9rem;
+  margin: 0;
+  overflow: visible;
+  font-size: 0;
+}
+
+form[role="dialog"][data-type="action"] > header > button .icon:after,
+form[role="dialog"][data-type="action"] > header > a .icon:after {
+  content: "";
+  position: absolute;
+  left: 0;
+  top: 0;
+  z-index: -1;
+  width: 3rem;
+  height: 4.9rem;
+}
+
+/* Content */
+form[role="dialog"][data-type="action"] > section,
+form[role="dialog"][data-type="object"] > section {
+  color: #fff;
+  position: absolute;
+  top: 7rem;
+  left: 1.5rem;
+  right: 1.5rem;
+  bottom: 2rem;
+  font-size: 1.6rem;
+  overflow: scroll;
+}
+
+/* Specific component code */
+form[role="dialog"][data-type="action"] > menu,
+form[role="dialog"][data-type="object"] > menu {
+  margin: 0;
+  padding: 0;
+  max-height: calc(100% - 13.5rem); /*header(5rem) + footer(7rem) + padding(1.5rem)*/
+  padding-top: 1.5rem;
+  overflow: auto;
+  width: auto;
+  border: none;
+  background: none;
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 7rem;
+}
+
+form[role="dialog"][data-type="action"] > menu > button,
+form[role="dialog"][data-type="object"] > menu > button {
+  width: calc(100% - 3rem);
+  height: 4rem;
+  -moz-box-sizing: border-box;
+  vertical-align: middle;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+  font-weight: normal;
+  line-height: 4rem;
+  outline: none;
+  font-size: 1.6rem;
+  text-shadow: none;
+  text-align: left;
+  padding: 0 1.2rem;
+  margin: 0 1.5rem 1rem 1.5rem;
+  background: rgba(87, 87, 87, 0.8);
+  border: none;
+  border-radius: 0;
+  position: relative;
+  color: #fff;
+  font-family: sans-serif;
+  font-style: italic;
+}
+
+form[role="dialog"][data-type="action"] > menu > button:last-child,
+form[role="dialog"][data-type="object"] > menu > button:last-child {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  color: #333;
+  background: #d8d8d8;
+  text-align: center;
+  border: none;
+  margin-bottom: 1.5rem;
+  border-radius: 2rem;
+}
+
+form[role="dialog"][data-type="action"] > menu > button:last-child:before,
+form[role="dialog"][data-type="object"] > menu > button:last-child:before {
+  content: '';
+  position: fixed;
+  width: 100%;
+  background: url(action_menu/images/ui/pattern.png) repeat scroll left top #2D2D2D;
+  height: 7rem;
+  left: 0;
+  bottom: 0;
+  z-index: -1;
+}
+
+form[role="dialog"][data-type="action"] > menu > button:nth-last-child(2),
+form[role="dialog"][data-type="object"] > menu > button:nth-last-child(2) {
+  margin-bottom: 1.5rem;
+}
+
+/* Press state */
+form[role="dialog"][data-type="action"] > menu > button:active,
+form[role="dialog"][data-type="object"] > menu > button:active {
+  background: #00aacc;
+  color: #fff;
+}
+
+/* Disabled */
+form[role="dialog"][data-type="action"] > menu > button[disabled],
+form[role="dialog"][data-type="object"] > menu > button[disabled] {
+  background-color: rgba(87, 87, 87, 0.8);
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+form[role="dialog"][data-type="action"] > menu > button[disabled]:last-child,
+form[role="dialog"][data-type="object"] > menu > button[disabled]:last-child {
+  background-color: #e7e7e7;
+  color: #a6a6a6;
+  opacity: 1;
+}
+
+/*
+ * Right to Left view
+ */
+
+html[dir="rtl"] form[role="dialog"][data-type="action"]:before,
+form[role="dialog"][data-type="object"]:before {
+  margin-left: auto;
+  margin-right: -0.1rem;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header h1,
+html[dir="rtl"] form[role="dialog"][data-type="object"] > header h1 {
+  text-align: right;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header menu[type="toolbar"] {
+  float: left;
+  margin-left: -3rem;
+  margin-right: 1rem;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header menu[type="toolbar"] a,
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header menu[type="toolbar"] button {
+  float: right;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header menu[type="toolbar"] a:last-child,
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header menu[type="toolbar"] button:last-child {
+  background-position: right center;
+  margin-left: auto;
+  margin-right: -0.1rem;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header > button,
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header > a {
+  float: right;
+  margin-left: -1rem;
+  margin-right: -3rem;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header > button:after,
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header > a:after {
+  left: auto;
+  right: 0;
+  background-position: 0 top;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header > button .icon:after,
+html[dir="rtl"] form[role="dialog"][data-type="action"] > header > a .icon:after {
+  left: auto;
+  right: 0;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > menu > button,
+html[dir="rtl"] form[role="dialog"][data-type="object"] > menu > button {
+  text-align: right;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > menu > button:last-child,
+html[dir="rtl"] form[role="dialog"][data-type="object"] > menu > button:last-child {
+  left: auto;
+  right: 0;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="action"] > menu > button:last-child:before,
+html[dir="rtl"] form[role="dialog"][data-type="object"] > menu > button:last-child:before {
+  left: auto;
+  right: 0;
+}
+

+ 48 - 0
css/action_menu/header_actions.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Action menu</title>
+  <meta name="description" content="Presenting a list of actions related to the App content">
+
+  <link rel="stylesheet" href="../action_menu.css">
+  <!--
+    - This <style> element is only used for the example code;
+    - it is not required for the real use case.
+    -->
+  <style type="text/css">
+    html, body {
+      font-family: sans-serif;
+      margin: 0;
+      padding: 0;
+      font-size: 10px;
+      background-color: #fff;
+    }
+    body {
+      background: none;
+    }
+  </style>
+</head>
+<body role="application">
+  <p dir="ltr">
+    <label>
+      <input type="checkbox"
+        onchange="document.documentElement.dir = this.checked ? 'rtl' : 'ltr'">
+      RTL mode
+    </label>
+  </p>
+
+  <form role="dialog" data-type="action" onsubmit="return false;">
+    <header>
+      <button><span class="icon icon-close">close</span></button>
+      <menu type="toolbar">
+        <button>done</button>
+      </menu>
+      <h1>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1>
+    </header>
+    <section>
+      <p>Curabitur condimentum diam mollis lacus hendrerit congue. Phasellus porttitor orci elit, ac consequat est mollis ut. Ut consequat ipsum a ullamcorper aliquam.</p>
+    </section>
+  </form>
+</body>
+</html>

TEMPAT SAMPAH
css/action_menu/images/icons/back-rtl.png


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/back.png


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/close.png


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/icons/[email protected]


TEMPAT SAMPAH
css/action_menu/images/ui/alpha.png


TEMPAT SAMPAH
css/action_menu/images/ui/default.png


TEMPAT SAMPAH
css/action_menu/images/ui/gradient.png


TEMPAT SAMPAH
css/action_menu/images/ui/pattern.png


TEMPAT SAMPAH
css/action_menu/images/ui/separator.png


+ 53 - 0
css/action_menu/index.html

@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Action menu</title>
+  <meta name="description" content="Presenting a list of actions related to the App content">
+
+  <link rel="stylesheet" href="../action_menu.css">
+  <!--
+    - This <style> element is only used for the example code;
+    - it is not required for the real use case.
+    -->
+  <style type="text/css">
+    html, body {
+      font-family: sans-serif;
+      margin: 0;
+      padding: 0;
+      font-size: 10px;
+      background-color: #fff;
+    }
+    body {
+      background: none;
+    }
+  </style>
+</head>
+<body role="application">
+  <p dir="ltr">
+    <label>
+      <input type="checkbox"
+        onchange="document.documentElement.dir = this.checked ? 'rtl' : 'ltr'">
+      RTL mode
+    </label>
+  </p>
+
+  <form role="dialog" data-type="action" onsubmit="return false;">
+    <header>Title</header> <!-- this header is optional -->
+    <menu type="toolbar">
+      <button>Action 1</button>
+      <button disabled> Action 2 (disabled) </button>
+      <button> Action 3 </button>
+      <button> Action 4 </button>
+      <button disabled> Action 5 (disabled) </button>
+      <button> Action 6 </button>
+      <button> Action 7 </button>
+      <button disabled> Action 8 (disabled) </button>
+      <button> Action 9 </button>
+      <button> Cancel </button>
+    </menu>
+  </form>
+
+</body>
+</html>
+

File diff ditekan karena terlalu besar
+ 147 - 0
css/app.css


+ 303 - 0
css/buttons.css

@@ -0,0 +1,303 @@
+/* ----------------------------------
+ * Buttons
+ * ---------------------------------- */
+
+.button::-moz-focus-inner,
+a[role="button"]::-moz-focus-inner,
+button::-moz-focus-inner {
+  border: none;
+  outline: none;
+  margin-top: -0.2rem; /* To fix line-height bug (697451) */
+}
+
+button,
+a[role="button"],
+.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;
+  background: #fafafa url(buttons/images/ui/default.png) repeat-x left bottom / auto 100%;
+  border: 0.1rem solid #a6a6a6;
+  border-radius: 0.2rem;
+  font-weight: 500;
+  font-size: 1.6rem;
+  line-height: 3.8rem;
+  color: #333;
+  text-align: center;
+  text-shadow: 0.1rem 0.1rem 0 rgba(255,255,255,0.3);
+  text-decoration: none;
+  outline: none;
+}
+
+/* Press (default & recommend) */
+button:active,
+a[role="button"]:active,
+button.recommend:active,
+a.recommend[role="button"]:active  {
+  border-color: #008aaa;
+  background: #008aaa;
+  background-size: auto 100%;
+  color: #333;
+}
+
+/* Recommend */
+button.recommend,
+a[role="button"].recommend {
+  background-image: url(buttons/images/ui/recommend.png);
+  background-color: #00caf2;
+  border-color: #008eab;
+}
+
+/* Danger */
+button.danger,
+a.danger[role="button"],
+span.danger[role="button"] {
+  background-image: url(buttons/images/ui/danger.png);
+  background-color: #b70404;
+  color: #fff;
+  text-shadow: none;
+  border-color: #820000;
+}
+
+/* Danger Press */
+button.danger:active,
+a[role="button"].danger:active,
+.button.danger:active {
+  background-image: url(buttons/images/ui/danger-press.png);
+  background-color: #890707;
+}
+
+/* Disabled (default & recommend) */
+button[disabled],
+a[role="button"][aria-disabled="true"],
+.button[aria-disabled="true"],
+button[disabled].recommend,
+a[role="button"][aria-disabled="true"].recommend,
+.button[aria-disabled="true"].recommend {
+  background: #e7e7e7;
+  border-color: #c7c7c7;
+  color: #c7c7c7;
+  text-shadow: none;
+  pointer-events: none;
+}
+
+/* Danger disabled */
+button[disabled].danger,
+.button[aria-disabled="true"].danger,
+a[role="button"][aria-disabled="true"].danger {
+  background: #c68484;
+  border-color: #a56464;
+  color: #a56464;
+  text-shadow: none;
+  pointer-events: none;
+}
+
+/* Disabled with dark background */
+.dark button[disabled],
+.dark .button[aria-disabled="true"],
+.dark a[role="button"][aria-disabled="true"] {
+  background: #5f5f5f;
+  color: #4d4d4d;
+  border-color: #4d4d4d;
+  text-shadow: none;
+  pointer-events: none;
+}
+
+
+/* ----------------------------------
+ * Buttons inside lists
+ * ---------------------------------- */
+
+li button,
+li a[role="button"],
+li .button {
+  position: relative;
+  background: #e7e7e7;
+  text-align: left;
+  /* For hacking box-shadows we need overflow:visible; so we lose text-overflows...*/
+  white-space: normal;
+  overflow: visible;
+}
+
+/* Hacking box-shadow */
+li button:after,
+li a[role="button"]:after,
+li .button:after {
+  content: "";
+  position: absolute;
+  top: 100%;
+  left: 0;
+  right: 0;
+  height: 0.2rem;
+  background: url( buttons/images/ui/shadow.png) repeat-x left bottom / auto 100%;
+}
+
+/* Press */
+li a[role="button"]:active:after,
+li .button:active:after,
+li button:active:after {
+  opacity: 0;
+}
+
+/* Disabled */
+li button[disabled]:after,
+li a[role="button"][aria-disabled="true"]:after,
+li .button[aria-disabled="true"]:after {
+  background: none;
+}
+
+/* Icons */
+li button.icon,
+li a[role="button"].icon,
+li .button.icon {
+  padding-right: 3rem;
+}
+
+li button.icon:before,
+li a[role="button"].icon:before,
+li .button.icon:before {
+  content: "";
+  width: 3rem;
+  height: 3rem;
+  position: absolute;
+  top: 50%;
+  right: 0;
+  margin-top: -1.5rem;
+  background: transparent no-repeat center center / 100% auto;
+  pointer-events: none;
+}
+
+li button.icon-view:before,
+li a[role="button"].icon-view:before {
+  background: url(buttons/images/icons/view.png) no-repeat 1.6rem 0 / 1rem 9rem;
+}
+
+li button.icon-view:active:before,
+li a[role="button"].icon-view:active:before {
+  background-position: 1.6rem -3rem;
+}
+
+li button.icon-view:disabled:before,
+li a[role="button"][aria-disabled="true"].icon-view:before {
+  background-position: 1.6rem -6rem;
+}
+
+li button.icon-dialog,
+li a[role="button"].icon-dialog,
+li .button.icon-dialog {
+  font-size: 1.7rem;
+}
+
+li button.icon-dialog:before,
+li a[role="button"].icon-dialog:before,
+li .button.icon-dialog:before {
+  background: url(buttons/images/icons/dialog.png) no-repeat 1.6rem 0 / 1rem 9rem;
+  top: 100%;
+  margin-top: -2.4rem;
+}
+
+li button.icon-dialog:active:before,
+li a[role="button"].icon-dialog:active:before,
+li .button.icon-dialog:active:before {
+  background-position: 1.6rem -3rem;
+}
+
+li button.icon-dialog:disabled:before,
+li a[role="button"][aria-disabled="true"].icon-dialog:before,
+li .button[aria-disabled="true"].icon-dialog:before {
+  background-position: 1.6rem -6rem;
+}
+
+
+/* ----------------------------------
+ * Buttons inside lists, compact mode
+ * ---------------------------------- */
+
+ul.compact,
+ol.compact {
+  padding: 0 1.5rem 1.5rem 1.5rem;
+}
+
+ul.compact li,
+ol.compact li {
+  padding: 1.5rem 0 0.5rem 0;
+  border-bottom: solid #bdbdbd 0.1rem;
+  display: block;
+  overflow: hidden;
+}
+
+ul.compact li label,
+ol.compact li label {
+  padding: 0 1.5rem 1rem 1.5rem;
+  color: #333;
+  font-weight: normal;
+  font-size: 1.6rem;
+  line-height: 1.8rem;
+  display: block;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+/* Inputs inside of .button */
+.button input,
+body[role="application"] .button input {
+  border: 0;
+  background: none;
+}
+
+/* Hides dropdown arrow until bug #649849 is fixed */
+.button.icon select {
+   width: 130%;
+}
+
+/******************************************************************************
+ * Right-To-Left layout
+ */
+
+html[dir="rtl"] li button,
+html[dir="rtl"] li a[role="button"],
+html[dir="rtl"] li .button {
+  text-align: right;
+}
+
+html[dir="rtl"] li button:after,
+html[dir="rtl"] li a[role="button"]:after,
+html[dir="rtl"] li .button:after {
+  background-position: right bottom;
+}
+
+html[dir="rtl"] li button.icon,
+html[dir="rtl"] li a[role="button"].icon,
+html[dir="rtl"] li .button.icon {
+  padding-left: 3rem;
+  padding-right: 1rem;
+}
+
+html[dir="rtl"] li button.icon:before,
+html[dir="rtl"] li a[role="button"].icon:before,
+html[dir="rtl"] li .button.icon:before {
+  left: -1rem;
+  right: inherit;
+}
+
+html[dir="rtl"] li button.icon-view:before,
+html[dir="rtl"] li a[role="button"].icon-view:before {
+  background-image: url(buttons/images/icons/view_rtl.png);
+  background-position: 1.6rem 0;
+}
+
+html[dir="rtl"] li button.icon-dialog:before,
+html[dir="rtl"] li a[role="button"].icon-dialog:before,
+html[dir="rtl"] li .button.icon-dialog:before {
+  background-image: url(buttons/images/icons/dialog_rtl.png);
+  background-position: 1.6rem 0;
+}
+

TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/dialog.png


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/dialog_rtl.png


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/view.png


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/view_rtl.png


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/icons/[email protected]


TEMPAT SAMPAH
css/buttons/images/ui/danger-disabled.png


TEMPAT SAMPAH
css/buttons/images/ui/danger-press.png


TEMPAT SAMPAH
css/buttons/images/ui/danger.png


TEMPAT SAMPAH
css/buttons/images/ui/default.png


TEMPAT SAMPAH
css/buttons/images/ui/disabled.png


TEMPAT SAMPAH
css/buttons/images/ui/recommend.png


TEMPAT SAMPAH
css/buttons/images/ui/shadow.png


TEMPAT SAMPAH
css/buttons/images/ui/[email protected]


TEMPAT SAMPAH
css/buttons/images/ui/[email protected]


+ 133 - 0
css/buttons/index.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+
+  <title>Buttons</title>
+  <meta name="description" content="You can use button tag or also anchor tag with role button">
+
+  <link rel="stylesheet" href="../buttons.css">
+
+  <!--
+    - This <style> and <link> is only used for the example preview,
+    - it isn't needed for the real use case.
+    -->
+  <style>
+    html, body {
+      margin: 0;
+      padding: 0;
+      font-size: 10px;
+      background-color: #fff;
+    }
+
+    h2.bb-docs {
+      font-size: 1.8rem;
+      font-weight: lighter;
+      color: #666;
+      margin: -0.1rem 0 0;
+      background-color: #f5f5f5;
+      padding: 0.4rem 0.4rem 0.4rem 3rem;
+      border: solid 0.1rem #e8e8e8;
+    }
+
+    div.bb-docs {
+      padding: 1rem;
+    }
+
+    div.bb-docs.dark {
+      background: #000;
+    }
+
+    ul {
+      padding: 0;
+      margin: 0;
+      list-style: none;
+    }
+
+    body[role="application"] > [role="region"] {
+      height: 100%;
+      position: relative;
+    }
+  </style>
+</head>
+<body role="application">
+  <p dir="ltr">
+    <label>
+      <input type="checkbox"
+        onchange="document.documentElement.dir = this.checked ? 'rtl' : 'ltr'">
+      RTL mode
+    </label>
+  </p>
+  <h2 class="bb-docs">Normal</h2>
+  <div class="bb-docs">
+    <button>Default</button>
+    <button class="recommend">Recommend</button>
+    <button class="danger">Danger</button>
+   </div>
+
+  <h2 class="bb-docs">Disabled</h2>
+  <div class="bb-docs">
+    <button disabled>Default</button>
+    <a href="#" role="button" aria-disabled="true" class="recommend">Recommend</a>
+    <button disabled class="danger">Danger</button>
+  </div>
+
+  <h2 class="bb-docs">Disabled with dark background</h2>
+  <div class="bb-docs dark">
+    <button disabled>Default</button>
+    <a href="#" role="button" aria-disabled="true" class="recommend">Recommend</a>
+    <button disabled class="danger">Danger</button>
+  </div>
+
+  <h2 class="bb-docs">Button List </h2>
+  <div class="bb-docs">
+    <ul>
+      <li>
+        <button>Default</button>
+      </li>
+      <li>
+        <button disabled="disabled">Disabled</button>
+      </li>
+      <li>
+        <button class="icon icon-view">
+          View Name
+        </button>
+      </li>
+      <li>
+        <button disabled="disabled" class="icon icon-view">
+          View Name
+        </button>
+      </li>
+      <li>
+        <a role="button" class="icon icon-dialog">
+          Tuesday September 18, 2012
+        </a>
+      </li>
+      <li>
+        <a role="button" aria-disabled="true" class="icon icon-dialog">
+          Tuesday September 18, 2012
+        </a>
+      </li>
+    </ul>
+  </div>
+
+  <h2 class="bb-docs">Button list (compact mode)</h2>
+  <div class="bb-docs">
+    <ul class="compact">
+      <li>
+        <label>Description</label>
+        <button class="icon icon-dialog">Action 1</button>
+      </li>
+      <li>
+        <label>Description</label>
+        <button class="icon icon-dialog">Action 2</button>
+      </li>
+      <li>
+        <label>This is a large description for this action</label>
+        <button class="icon icon-dialog" disabled >Action 3 (disabled)</button>
+      </li>
+    </ul>
+  </div>
+</body>
+</html>
+

+ 297 - 0
css/confirm.css

@@ -0,0 +1,297 @@
+/* ----------------------------------
+ * Confirm
+ * ---------------------------------- */
+
+/* Main dialog setup */
+form[role="dialog"][data-type="confirm"] {
+  background:
+    url(confirm/images/ui/pattern.png) repeat left top,
+    url(confirm/images/ui/gradient.png) no-repeat left top / 100% 100%;
+  overflow: hidden;
+  position: absolute;
+  z-index: 100;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  padding-bottom: 7rem;
+  font-size: 0;
+  /* Using font-size: 0; we avoid the unwanted visual space (about 3px)
+  created by white-spaces and break lines in the code betewen inline-block elements */
+  color: #fff;
+  text-align: left;
+}
+
+form[role="dialog"][data-type="confirm"]:before {
+  content: "";
+  display: inline-block;
+  vertical-align: middle;
+  width: 0.1rem;
+  height: 100%;
+  margin-left: -0.1rem;
+}
+
+form[role="dialog"][data-type="confirm"] > section {
+  font-weight: lighter;
+  font-size: 2.2rem;
+  color: #FAFAFA;
+  padding: 0 1.5rem;
+  -moz-box-sizing: padding-box;
+  width: 100%;
+  display: inline-block;
+  overflow-y: scroll;
+  max-height: 100%;
+  vertical-align: middle;
+  white-space: normal;
+}
+
+form[role="dialog"][data-type="confirm"] h1 {
+  font-weight: normal;
+  font-size: 1.6rem;
+  line-height: 1.5em;
+  color: #fff;
+  margin: 0;
+  padding: 1rem 1.5rem 0;
+}
+
+/* Menu & buttons setup */
+form[role="dialog"][data-type="confirm"] menu {
+  white-space: nowrap;
+  margin: 0;
+  padding: 1.5rem;
+  background: #2d2d2d url(confirm/images/ui/pattern.png) repeat left top;
+  display: block;
+  overflow: hidden;
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+
+form[role="dialog"][data-type="confirm"] menu button::-moz-focus-inner {
+  border: none;
+  outline: none;
+  margin-top: -0.2rem; /* To fix line-height bug (697451) */
+}
+
+form[role="dialog"][data-type="confirm"] menu button {
+  font-family: sans-serif;
+  font-style: italic;
+  width: 100%;
+  height: 4rem;
+  margin: 0 0 1rem;
+  padding: 0 1.2rem;
+  -moz-box-sizing: border-box;
+  display: inline-block;
+  vertical-align: middle;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+  background: #d8d8d8;
+  border: none;
+  border-radius: 2rem;
+  font-weight: normal;
+  font-size: 1.6rem;
+  line-height: 4rem;
+  color: #333;
+  text-align: center;
+  text-shadow: none;
+  text-decoration: none;
+  outline: none;
+}
+
+/* Recommend */
+form[role="dialog"][data-type="confirm"] menu button.recommend {
+  background-color: #00caf2;
+  color: #fff;
+}
+
+/* Danger */
+form[role="dialog"][data-type="confirm"] menu button.danger {
+  background-color: #e51e1e;
+  color: #fff;
+}
+
+/* Pressed */
+form[role="dialog"][data-type="confirm"] menu button:active {
+  background: #00aacc;
+  color: #fff;
+}
+
+/* Disabled */
+form[role="dialog"][data-type="confirm"] > menu > button[disabled] {
+  background-color: #565656;
+  color: rgba(255,255,255,0.4);
+  pointer-events: none;
+}
+
+form[role="dialog"][data-type="confirm"] > menu > button[disabled].recommend {
+  background-color: #006579;
+}
+
+form[role="dialog"][data-type="confirm"] > menu > button[disabled].danger {
+  background-color: #730f0f;
+}
+
+button[disabled]::-moz-selection {
+  -moz-user-select: none;
+}
+
+
+form[role="dialog"][data-type="confirm"] menu button:last-child {
+  margin-left: 1rem;
+}
+
+form[role="dialog"][data-type="confirm"] menu button,
+form[role="dialog"][data-type="confirm"] menu button:first-child {
+  margin: 0;
+}
+
+form[role="dialog"][data-type="confirm"] menu button {
+  width: calc((100% - 1rem) / 2);
+}
+
+form[role="dialog"][data-type="confirm"] menu button.full {
+  width: 100%;
+}
+
+/* Specific component code */
+form[role="dialog"][data-type="confirm"] p {
+  word-wrap: break-word;
+  margin: 1rem 0 0;
+  padding: 1rem 1.5rem;
+  border-top: 0.1rem solid #686868;
+  line-height: 3rem;
+}
+
+form[role="dialog"][data-type="confirm"] p span {
+    font-size: 1.5rem;
+    display: block;
+    line-height: 1.7rem;
+    color: rgba(255,255,255,0.6);
+}
+
+form[role="dialog"][data-type="confirm"] p img {
+  float: left;
+  margin-right: 2rem;
+}
+
+form[role="dialog"][data-type="confirm"] p strong {
+  font-weight: lighter;
+}
+
+form[role="dialog"][data-type="confirm"] p small {
+  font-size: 1.4rem;
+  font-weight: normal;
+  color: #cbcbcb;
+  display: block;
+}
+
+form[role="dialog"][data-type="confirm"] dl {
+  border-top: 0.1rem solid #686868;
+  margin: 1rem 0 0;
+  overflow: hidden;
+  padding-top: 1rem;
+  font-size: 1.6rem;
+  line-height: 2.2rem;
+}
+
+form[role="dialog"][data-type="confirm"] dl > dt {
+  clear: both;
+  float: left;
+  width: 7rem;
+  padding-left: 1.5rem;
+  font-weight: 500;
+  text-align: left;
+}
+
+form[role="dialog"][data-type="confirm"] dl > dd {
+  padding-right: 1.5rem;
+  font-weight: 300;
+  text-overflow: ellipsis;
+  vertical-align: top;
+  overflow: hidden;
+}
+
+form[role="dialog"][data-type="confirm"] figure {
+  margin: 1.5rem;
+  display: flex;
+  align-items: center;
+}
+
+form[role="dialog"][data-type="confirm"] figure img {
+  padding-right: 1.5rem;
+  flex-shrink: 0;
+}
+
+form[role="dialog"][data-type="confirm"] figure figcaption {
+  font-size: 2.1rem;
+  font-weight: 300;
+}
+
+form[role="dialog"][data-type="confirm"] ul {
+  margin: 0;
+  padding: 2rem 1.5rem;
+  border-top: 0.1rem solid #686868;
+  list-style: none;
+  font-size: 1.6rem;
+  font-weight: normal;
+}
+
+form[role="dialog"][data-type="confirm"] ul li {
+  word-wrap: break-word;
+  line-height: 2rem;
+  padding-bottom: 1.5rem;
+}
+
+form[role="dialog"][data-type="confirm"] ul li:last-child {
+  padding-bottom: 0;
+}
+
+form[role="dialog"][data-type="confirm"] ul li ul {
+  border: none;
+  margin: 0;
+  padding: 0;
+}
+
+/*
+ * Right to left View
+ */
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"] {
+  text-align: right;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"]:before {
+  margin-left: auto;
+  margin-right: -0.1rem;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"] menu button:last-child {
+  margin-left: auto;
+  margin-right: 1rem;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"] p img {
+  float: right;
+  margin-left: 2rem;
+  margin-right: auto;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"] dl > dt {
+  float: right;
+  padding-left: inherit;
+  padding-right: 1.5rem;
+  text-align: right;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"] dl > dd {
+  padding-left: 1.5rem;
+  padding-right: inherit;
+}
+
+html[dir="rtl"] form[role="dialog"][data-type="confirm"] figure img {
+  padding-left: 1.5rem;
+  padding-right: inherit;
+}
+

File diff ditekan karena terlalu besar
+ 41 - 0
css/confirm/content.html


File diff ditekan karena terlalu besar
+ 40 - 0
css/confirm/content_details.html


TEMPAT SAMPAH
css/confirm/images/ui/danger-disabled.png


TEMPAT SAMPAH
css/confirm/images/ui/danger-press.png


TEMPAT SAMPAH
css/confirm/images/ui/danger.png


TEMPAT SAMPAH
css/confirm/images/ui/default.png


TEMPAT SAMPAH
css/confirm/images/ui/disabled.png


TEMPAT SAMPAH
css/confirm/images/ui/gradient.png


TEMPAT SAMPAH
css/confirm/images/ui/pattern.png


TEMPAT SAMPAH
css/confirm/images/ui/recommend.png


+ 51 - 0
css/confirm/index.html

@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+
+  <title>Confirm</title>
+  <meta name="description" content="Prompts user to take action">
+
+  <link rel="stylesheet" href="../confirm.css">
+
+  <!--
+    - This <style> element is only used for the example code;
+    - it is not required for the real use case.
+    -->
+  <style type="text/css">
+    html, body {
+      font-family: sans-serif;
+      margin: 0;
+      padding: 0;
+      font-size: 10px;
+      background-color: #fff;
+    }
+    body {
+      background: none;
+    }
+  </style>
+</head>
+
+<body role="application">
+  <p dir="ltr">
+    <label>
+      <input type="checkbox"
+        onchange="document.documentElement.dir = this.checked ? 'rtl' : 'ltr'">
+      RTL mode
+    </label>
+  </p>
+
+  <form role="dialog" data-type="confirm">
+    <section>
+      <h1>Confirmation</h1>
+      <p>Are you sure you want to delete this contact?</p>
+    </section>
+    <menu>
+      <button>Cancel</button>
+      <button class="danger">Delete</button>
+    </menu>
+  </form>
+
+</body>
+</html>
+

+ 51 - 0
css/confirm/long_content.html

@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+
+  <title>Confirm</title>
+  <meta name="description" content="Prompts user to take action">
+
+  <link rel="stylesheet" href="../confirm.css">
+
+  <!--
+    - This <style> element is only used for the example code;
+    - it is not required for the real use case.
+    -->
+  <style type="text/css">
+    html, body {
+      font-family: sans-serif;
+      margin: 0;
+      padding: 0;
+      font-size: 10px;
+      background-color: #fff;
+    }
+    body {
+      background: none;
+    }
+  </style>
+</head>
+
+<body role="application">
+  <p dir="ltr">
+    <label>
+      <input type="checkbox"
+        onchange="document.documentElement.dir = this.checked ? 'rtl' : 'ltr'">
+      RTL mode
+    </label>
+  </p>
+
+  <form role="dialog" data-type="confirm">
+    <section>
+      <h1>Confirmation</h1>
+      <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
+    </section>
+    <menu>
+      <button>Cancel</button>
+      <button class="danger">Delete</button>
+    </menu>
+  </form>
+
+</body>
+</html>
+

+ 50 - 0
css/confirm/no_title.html

@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+
+  <title>Confirm, w/o title</title>
+  <meta name="description" content="Prompts user to take action">
+
+  <link rel="stylesheet" href="../confirm.css">
+
+  <!--
+    - This <style> element is only used for the example code;
+    - it is not required for the real use case.
+    -->
+  <style type="text/css">
+    html, body {
+      font-family: sans-serif;
+      margin: 0;
+      padding: 0;
+      font-size: 10px;
+      background-color: #fff;
+    }
+    body {
+      background: none;
+    }
+  </style>
+</head>
+
+<body role="application">
+  <p dir="ltr">
+    <label>
+      <input type="checkbox"
+        onchange="document.documentElement.dir = this.checked ? 'rtl' : 'ltr'">
+      RTL mode
+    </label>
+  </p>
+
+  <form role="dialog" data-type="confirm">
+    <section>
+      <p>Are you sure you want to delete this contact?</p>
+    </section>
+    <menu>
+      <button>Cancel</button>
+      <button class="danger">Delete</button>
+    </menu>
+  </form>
+
+</body>
+</html>
+

+ 267 - 0
css/date_selector.css

@@ -0,0 +1,267 @@
+/* ----------------------------------
+ * Date selector
+ * ---------------------------------- */
+
+/* Main dialog setup */
+[role="dialog"][data-type="date-selector"] {
+  background: url(date_selector/images/ui/pattern.png) repeat left top, url(date_selector/images/ui/gradient.png) no-repeat left top / 100% 100%;
+  overflow: hidden;
+  position: absolute;
+  z-index: 100;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  padding: 0 0 7rem;
+  color: #fff;
+  font-family: sans-serif;
+}
+
+[role="dialog"][data-type="date-selector"] h1 {
+  font-weight: 400;
+  font-size: 1.9rem;
+  line-height: 4.8rem;
+  color: #fff;
+  border-bottom: 0.1rem solid #616262;
+  background: rgba(0 ,0, 0, .2);
+  margin: 0;
+  padding: 0 3rem 1rem;
+  height: 4.8rem;
+  -moz-box-sizing: border-box;
+}
+
+/* Date picker */
+[role="dialog"][data-type="date-selector"] .picker-container {
+  -moz-box-sizing: border-box;
+  position: relative;
+  width: calc(100% - 5rem);
+  height: 22.5rem;
+  margin: 5.4rem auto 0;
+  padding-top: 8.8rem;
+  border-left:  0.1rem solid #111;
+  border-right: 0.1rem solid #111;
+  overflow: hidden;
+}
+
+[role="dialog"][data-type="date-selector"] .picker-container:before {
+  content: '';
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  border-top: solid 0.7rem;
+  -moz-border-top-colors:
+    rgba(0, 0, 0, 0.5) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.3)
+    rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.1)
+    rgba(0, 0, 0, 0.05);
+  z-index: 10;
+}
+
+[role="dialog"][data-type="date-selector"] .picker-container:after {
+  content: '';
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  border-bottom: solid 0.7rem;
+  -moz-border-bottom-colors:
+    rgba(0, 0, 0, 0.5) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.3)
+    rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.1)
+    rgba(0, 0, 0, 0.05);
+  z-index: 10;
+}
+
+[role="dialog"][data-type="date-selector"] .picker-bar-background {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 27%;
+  height: 100%;
+  background: url(date_selector/images/ui/pattern-time.png);
+}
+
+[role="dialog"][data-type="date-selector"] .value-picker-date-wrapper,
+[role="dialog"][data-type="date-selector"] .value-picker-month-wrapper,
+[role="dialog"][data-type="date-selector"] .value-picker-year-wrapper {
+  -moz-box-sizing: border-box;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 21%;
+  height: 100%;
+  padding-top: 8.3rem;
+  border-right: solid 0.2rem;
+  -moz-border-right-colors: #1d1d1d #4a4a4a;
+}
+
+[role="dialog"][data-type="date-selector"] .value-picker-month-wrapper {
+  left: 21%;
+  width: 52%;
+}
+
+[role="dialog"][data-type="date-selector"] .value-picker-year-wrapper {
+  left: auto;
+  right: 0;
+  width: 27%;
+}
+
+/*DMY*/
+[role="dialog"][data-type="date-selector"] .DMY .value-picker-year-wrapper {
+  border: none;
+}
+
+/*YMD*/
+[role="dialog"][data-type="date-selector"] .YMD .value-picker-year-wrapper {
+  left: 0;
+  right: auto;
+}
+
+[role="dialog"][data-type="date-selector"] .YMD .value-picker-month-wrapper {
+  left: 27%;
+}
+
+[role="dialog"][data-type="date-selector"] .YMD .value-picker-date-wrapper {
+  left: auto;
+  right: 0;
+  border: none;
+}
+
+/*MDY*/
+[role="dialog"][data-type="date-selector"] .MDY .value-picker-month-wrapper {
+  left: 0;
+}
+
+[role="dialog"][data-type="date-selector"] .MDY .value-picker-date-wrapper {
+  left: 52%;
+}
+
+[role="dialog"][data-type="date-selector"] .MDY .value-picker-year-wrapper {
+  border: none;
+}
+
+[role="dialog"][data-type="date-selector"] .value-picker-date,
+[role="dialog"][data-type="date-selector"] .value-picker-month,
+[role="dialog"][data-type="date-selector"] .value-picker-year {
+  -moz-user-select: none;
+  position: relative;
+  width: 100%;
+  z-index: 1;
+}
+
+[role="dialog"][data-type="date-selector"] .value-picker-date > *[data-disabled="true"],
+[role="dialog"][data-type="date-selector"] .value-picker-month > *[data-disabled="true"],
+[role="dialog"][data-type="date-selector"] .value-picker-year > *[data-disabled="true"] {
+  visibility: hidden;
+}
+
+[role="dialog"][data-type="date-selector"] .value-indicator {
+  position: absolute;
+  width: 100%;
+  height: 4.6rem;
+  background-color: #00A5C5;
+  box-shadow: 0 0 0.7rem rgba(0,0,0, .4);
+  opacity: .99;
+  pointer-events: none;
+}
+
+[role="dialog"][data-type="date-selector"] .animation-on {
+  transition-duration: 0.5s;
+  transition-property: transform;
+}
+
+[role="dialog"][data-type="date-selector"]  .picker-unit {
+  position: relative;
+  font: 2.2rem/5.6rem 'MozTT',sans-serif;
+  color: #fff;
+  text-align: center;
+  vertical-align: middle;
+  width: 100%;
+  height: 5.6rem;
+  pointer-events: none;
+}
+
+/* Menu & buttons setup */
+[role="dialog"][data-type="date-selector"] menu {
+  white-space: nowrap;
+  margin: 0;
+  padding: 1.5rem;
+  background: #2d2d2d url(date_selector/images/ui/pattern.png) repeat left top;
+  display: block;
+  overflow: hidden;
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+
+[role="dialog"][data-type="date-selector"] menu button::-moz-focus-inner {
+  border: none;
+  outline: none;
+}
+
+[role="dialog"][data-type="date-selector"] menu button {
+  width: calc((100% - 1rem) / 2);
+  font-family: sans-serif;
+  font-style: italic;
+  height: 4rem;
+  margin: 0 0 1rem;
+  padding: 0 1.2rem;
+  -moz-box-sizing: border-box;
+  display: inline-block;
+  vertical-align: middle;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+  background: #d8d8d8;
+  border: none;
+  border-radius: 2rem;
+  font-weight: normal;
+  font-size: 1.6rem;
+  line-height: 4rem;
+  color: #333;
+  text-align: center;
+  text-shadow: none;
+  text-decoration: none;
+  outline: none;
+}
+
+/* Affirmative */
+[role="dialog"][data-type="date-selector"] menu button.affirmative,
+[role="dialog"][data-type="date-selector"] menu button.recommend {
+  background-color: #00caf2;
+  color: #fff;
+}
+
+/* Pressed */
+[role="dialog"][data-type="date-selector"] menu button:active {
+  background: #00aacc;
+  color: #fff;
+}
+
+/* Disabled */
+[role="dialog"][data-type="date-selector"] > menu > button[disabled] {
+  background-color: #565656;
+  color: rgba(255,255,255,0.4);
+  pointer-events: none;
+}
+
+[role="dialog"][data-type="date-selector"] > menu > button[disabled].recommend {
+  background-color: #006579;
+}
+
+button[disabled]::-moz-selection {
+  -moz-user-select: none;
+}
+
+[role="dialog"][data-type="date-selector"] menu button:last-child {
+  margin-left: 1rem;
+}
+
+[role="dialog"][data-type="date-selector"] menu button,
+[role="dialog"][data-type="date-selector"] menu button:first-child {
+  margin: 0;
+}
+
+[role="dialog"][data-type="date-selector"] menu button.full {
+  width: 100%;
+}

TEMPAT SAMPAH
css/date_selector/images/icons/checked.png


TEMPAT SAMPAH
css/date_selector/images/icons/[email protected]


TEMPAT SAMPAH
css/date_selector/images/icons/[email protected]


TEMPAT SAMPAH
css/date_selector/images/ui/affirmative.png


TEMPAT SAMPAH
css/date_selector/images/ui/default.png


TEMPAT SAMPAH
css/date_selector/images/ui/gradient.png


TEMPAT SAMPAH
css/date_selector/images/ui/[email protected]


TEMPAT SAMPAH
css/date_selector/images/ui/pattern-time.png


TEMPAT SAMPAH
css/date_selector/images/ui/pattern.png


TEMPAT SAMPAH
css/date_selector/images/ui/shadow-invert.png


TEMPAT SAMPAH
css/date_selector/images/ui/[email protected]


TEMPAT SAMPAH
css/date_selector/images/ui/[email protected]


TEMPAT SAMPAH
css/date_selector/images/ui/shadow.png


TEMPAT SAMPAH
css/date_selector/images/ui/[email protected]


TEMPAT SAMPAH
css/date_selector/images/ui/[email protected]


+ 285 - 0
css/date_selector/index.html

@@ -0,0 +1,285 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    
+    <title>Date selector</title>
+    
+    <link rel="stylesheet" href="../date_selector.css">
+    <!--
+      This <style> and <link> is only used for the example code, is no needed for the real case use
+    -->
+    <style type="text/css">
+      html, body { font-size: 10px; margin: 0; padding: 0; }
+    </style>
+    
+  </head>
+  
+  <body>
+    <form role="dialog" data-type="date-selector">
+      <h1>Select day</h1>
+      <div class="picker-container MDY">
+        <div class="picker-bar-background"></div>
+        <div class="value-picker-date-wrapper">
+          <div style="transform: translateY(-392px);" class="value-picker-date animation-on">
+            <div class="picker-unit">01</div>
+            <div class="picker-unit">02</div>
+            <div class="picker-unit">03</div>
+            <div class="picker-unit">04</div>
+            <div class="picker-unit">05</div>
+            <div class="picker-unit">06</div>
+            <div class="picker-unit">07</div>
+            <div class="picker-unit">08</div>
+            <div class="picker-unit">09</div>
+            <div class="picker-unit">10</div>
+            <div class="picker-unit">11</div>
+            <div class="picker-unit">12</div>
+            <div class="picker-unit">13</div>
+            <div class="picker-unit">14</div>
+            <div class="picker-unit">15</div>
+            <div class="picker-unit">16</div>
+            <div class="picker-unit">17</div>
+            <div class="picker-unit">18</div>
+            <div class="picker-unit">19</div>
+            <div class="picker-unit">20</div>
+            <div class="picker-unit">21</div>
+            <div class="picker-unit">22</div>
+            <div class="picker-unit">23</div>
+            <div class="picker-unit">24</div>
+            <div class="picker-unit">25</div>
+            <div class="picker-unit">26</div>
+            <div class="picker-unit">27</div>
+            <div class="picker-unit">28</div>
+            <div class="picker-unit">29</div>
+            <div class="picker-unit">30</div>
+            <div class="picker-unit">31</div>
+          </div>
+        </div>
+        <div class="value-picker-month-wrapper">
+          <div style="transform: translateY(-392px);" class="value-picker-month">
+            <div class="picker-unit">January</div>
+            <div class="picker-unit">February</div>
+            <div class="picker-unit">March</div>
+            <div class="picker-unit">April</div>
+            <div class="picker-unit">May</div>
+            <div class="picker-unit">June</div>
+            <div class="picker-unit">July</div>
+            <div class="picker-unit">August</div>
+            <div class="picker-unit">September</div>
+            <div class="picker-unit">October</div>
+            <div class="picker-unit">November</div>
+            <div class="picker-unit">December</div>
+          </div>
+        </div>
+        <div class="value-picker-year-wrapper">
+          <div style="transform: translateY(-6328px);" class="value-picker-year">
+          <div class="picker-unit">1900</div>
+          <div class="picker-unit">1901</div>
+          <div class="picker-unit">1902</div>
+          <div class="picker-unit">1903</div>
+          <div class="picker-unit">1904</div>
+          <div class="picker-unit">1905</div>
+          <div class="picker-unit">1906</div>
+          <div class="picker-unit">1907</div>
+          <div class="picker-unit">1908</div>
+          <div class="picker-unit">1909</div>
+          <div class="picker-unit">1910</div>
+          <div class="picker-unit">1911</div>
+          <div class="picker-unit">1912</div>
+          <div class="picker-unit">1913</div>
+          <div class="picker-unit">1914</div>
+          <div class="picker-unit">1915</div>
+          <div class="picker-unit">1916</div>
+          <div class="picker-unit">1917</div>
+          <div class="picker-unit">1918</div>
+          <div class="picker-unit">1919</div>
+          <div class="picker-unit">1920</div>
+          <div class="picker-unit">1921</div>
+          <div class="picker-unit">1922</div>
+          <div class="picker-unit">1923</div>
+          <div class="picker-unit">1924</div>
+          <div class="picker-unit">1925</div>
+          <div class="picker-unit">1926</div>
+          <div class="picker-unit">1927</div>
+          <div class="picker-unit">1928</div>
+          <div class="picker-unit">1929</div>
+          <div class="picker-unit">1930</div>
+          <div class="picker-unit">1931</div>
+          <div class="picker-unit">1932</div>
+          <div class="picker-unit">1933</div>
+          <div class="picker-unit">1934</div>
+          <div class="picker-unit">1935</div>
+          <div class="picker-unit">1936</div>
+          <div class="picker-unit">1937</div>
+          <div class="picker-unit">1938</div>
+          <div class="picker-unit">1939</div>
+          <div class="picker-unit">1940</div>
+          <div class="picker-unit">1941</div>
+          <div class="picker-unit">1942</div>
+          <div class="picker-unit">1943</div>
+          <div class="picker-unit">1944</div>
+          <div class="picker-unit">1945</div>
+          <div class="picker-unit">1946</div>
+          <div class="picker-unit">1947</div>
+          <div class="picker-unit">1948</div>
+          <div class="picker-unit">1949</div>
+          <div class="picker-unit">1950</div>
+          <div class="picker-unit">1951</div>
+          <div class="picker-unit">1952</div>
+          <div class="picker-unit">1953</div>
+          <div class="picker-unit">1954</div>
+          <div class="picker-unit">1955</div>
+          <div class="picker-unit">1956</div>
+          <div class="picker-unit">1957</div>
+          <div class="picker-unit">1958</div>
+          <div class="picker-unit">1959</div>
+          <div class="picker-unit">1960</div>
+          <div class="picker-unit">1961</div>
+          <div class="picker-unit">1962</div>
+          <div class="picker-unit">1963</div>
+          <div class="picker-unit">1964</div>
+          <div class="picker-unit">1965</div>
+          <div class="picker-unit">1966</div>
+          <div class="picker-unit">1967</div>
+          <div class="picker-unit">1968</div>
+          <div class="picker-unit">1969</div>
+          <div class="picker-unit">1970</div>
+          <div class="picker-unit">1971</div>
+          <div class="picker-unit">1972</div>
+          <div class="picker-unit">1973</div>
+          <div class="picker-unit">1974</div>
+          <div class="picker-unit">1975</div>
+          <div class="picker-unit">1976</div>
+          <div class="picker-unit">1977</div>
+          <div class="picker-unit">1978</div>
+          <div class="picker-unit">1979</div>
+          <div class="picker-unit">1980</div>
+          <div class="picker-unit">1981</div>
+          <div class="picker-unit">1982</div>
+          <div class="picker-unit">1983</div>
+          <div class="picker-unit">1984</div>
+          <div class="picker-unit">1985</div>
+          <div class="picker-unit">1986</div>
+          <div class="picker-unit">1987</div>
+          <div class="picker-unit">1988</div>
+          <div class="picker-unit">1989</div>
+          <div class="picker-unit">1990</div>
+          <div class="picker-unit">1991</div>
+          <div class="picker-unit">1992</div>
+          <div class="picker-unit">1993</div>
+          <div class="picker-unit">1994</div>
+          <div class="picker-unit">1995</div>
+          <div class="picker-unit">1996</div>
+          <div class="picker-unit">1997</div>
+          <div class="picker-unit">1998</div>
+          <div class="picker-unit">1999</div>
+          <div class="picker-unit">2000</div>
+          <div class="picker-unit">2001</div>
+          <div class="picker-unit">2002</div>
+          <div class="picker-unit">2003</div>
+          <div class="picker-unit">2004</div>
+          <div class="picker-unit">2005</div>
+          <div class="picker-unit">2006</div>
+          <div class="picker-unit">2007</div>
+          <div class="picker-unit">2008</div>
+          <div class="picker-unit">2009</div>
+          <div class="picker-unit">2010</div>
+          <div class="picker-unit">2011</div>
+          <div class="picker-unit">2012</div>
+          <div class="picker-unit">2013</div>
+          <div class="picker-unit">2014</div>
+          <div class="picker-unit">2015</div>
+          <div class="picker-unit">2016</div>
+          <div class="picker-unit">2017</div>
+          <div class="picker-unit">2018</div>
+          <div class="picker-unit">2019</div>
+          <div class="picker-unit">2020</div>
+          <div class="picker-unit">2021</div>
+          <div class="picker-unit">2022</div>
+          <div class="picker-unit">2023</div>
+          <div class="picker-unit">2024</div>
+          <div class="picker-unit">2025</div>
+          <div class="picker-unit">2026</div>
+          <div class="picker-unit">2027</div>
+          <div class="picker-unit">2028</div>
+          <div class="picker-unit">2029</div>
+          <div class="picker-unit">2030</div>
+          <div class="picker-unit">2031</div>
+          <div class="picker-unit">2032</div>
+          <div class="picker-unit">2033</div>
+          <div class="picker-unit">2034</div>
+          <div class="picker-unit">2035</div>
+          <div class="picker-unit">2036</div>
+          <div class="picker-unit">2037</div>
+          <div class="picker-unit">2038</div>
+          <div class="picker-unit">2039</div>
+          <div class="picker-unit">2040</div>
+          <div class="picker-unit">2041</div>
+          <div class="picker-unit">2042</div>
+          <div class="picker-unit">2043</div>
+          <div class="picker-unit">2044</div>
+          <div class="picker-unit">2045</div>
+          <div class="picker-unit">2046</div>
+          <div class="picker-unit">2047</div>
+          <div class="picker-unit">2048</div>
+          <div class="picker-unit">2049</div>
+          <div class="picker-unit">2050</div>
+          <div class="picker-unit">2051</div>
+          <div class="picker-unit">2052</div>
+          <div class="picker-unit">2053</div>
+          <div class="picker-unit">2054</div>
+          <div class="picker-unit">2055</div>
+          <div class="picker-unit">2056</div>
+          <div class="picker-unit">2057</div>
+          <div class="picker-unit">2058</div>
+          <div class="picker-unit">2059</div>
+          <div class="picker-unit">2060</div>
+          <div class="picker-unit">2061</div>
+          <div class="picker-unit">2062</div>
+          <div class="picker-unit">2063</div>
+          <div class="picker-unit">2064</div>
+          <div class="picker-unit">2065</div>
+          <div class="picker-unit">2066</div>
+          <div class="picker-unit">2067</div>
+          <div class="picker-unit">2068</div>
+          <div class="picker-unit">2069</div>
+          <div class="picker-unit">2070</div>
+          <div class="picker-unit">2071</div>
+          <div class="picker-unit">2072</div>
+          <div class="picker-unit">2073</div>
+          <div class="picker-unit">2074</div>
+          <div class="picker-unit">2075</div>
+          <div class="picker-unit">2076</div>
+          <div class="picker-unit">2077</div>
+          <div class="picker-unit">2078</div>
+          <div class="picker-unit">2079</div>
+          <div class="picker-unit">2080</div>
+          <div class="picker-unit">2081</div>
+          <div class="picker-unit">2082</div>
+          <div class="picker-unit">2083</div>
+          <div class="picker-unit">2084</div>
+          <div class="picker-unit">2085</div>
+          <div class="picker-unit">2086</div>
+          <div class="picker-unit">2087</div>
+          <div class="picker-unit">2088</div>
+          <div class="picker-unit">2089</div>
+          <div class="picker-unit">2090</div>
+          <div class="picker-unit">2091</div>
+          <div class="picker-unit">2092</div>
+          <div class="picker-unit">2093</div>
+          <div class="picker-unit">2094</div>
+          <div class="picker-unit">2095</div>
+          <div class="picker-unit">2096</div>
+          <div class="picker-unit">2097</div>
+          <div class="picker-unit">2098</div>
+          <div class="picker-unit">2099</div></div>
+        </div>
+        <div class="value-indicator"></div>
+      </div>
+      <menu>
+        <button>Cancel</button>
+        <button class="affirmative">OK</button>
+      </menu>
+    </form>
+  </body>
+</html>

+ 201 - 0
css/drawer.css

@@ -0,0 +1,201 @@
+/* ----------------------------------
+* Drawer
+* ---------------------------------- */
+
+/* Main region */
+section[role="region"] {
+  width: 100%;
+  transition: all 0.25s ease;
+  position: relative;
+  z-index: 100;
+}
+
+section[role="region"]:target {
+  transform: translateX(80%);
+}
+
+/* Hide anchor to change target */
+section[role="region"] > header:first-child > a:first-of-type {
+  display: none;
+}
+section[role="region"]:target > header:first-child > a:first-of-type {
+  display: block;
+}
+section[role="region"] > header:first-child > a:last-of-type {
+  display: block;
+}
+section[role="region"]:target > header:first-child > a:last-of-type {
+  display: none;
+}
+
+
+/* Sidebar */
+section[data-type="sidebar"] {
+  position: absolute;
+  width: 80%;
+  background: url(drawer/images/ui/pattern.png) repeat;
+  height: 100%;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+}
+
+/* Sidebar header */
+section[data-type="sidebar"] > header {
+  position: relative;
+  z-index: 10;
+  height: 5rem;
+  color: #fff;
+  background: url(drawer/images/ui/header.png) repeat-x left bottom / 100% auto;
+}
+
+section[data-type="sidebar"] > header:after {
+  content: "";
+  height: 0.3rem;
+  position: absolute;
+  top: 100%;
+  left: 0;
+  right: 0;
+  background: url(drawer/images/ui/shadow_header.png) repeat-x left top;
+  background-size: auto 100%;
+}
+
+section[data-type="sidebar"] > header h1 {
+  font-size: 2.2rem;
+  line-height: 4.8rem;
+  text-align: left;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  display: block;
+  overflow: hidden;
+  margin: 0 0 0 3rem;
+  height: 100%
+}
+
+section[data-type="sidebar"] > header h1 em {
+  font-weight: bold;
+  font-size: 1.5rem;
+  line-height: 1em;
+}
+
+/* Generic set of actions in toolbar */
+section[data-type="sidebar"] > header menu[type="toolbar"] {
+  height: 100%;
+  float: right;
+}
+
+section[data-type="sidebar"] > header menu[type="toolbar"] a,
+section[data-type="sidebar"] > header menu[type="toolbar"] button {
+  height: 4.9rem;
+  line-height: 4.9rem;
+  float: left;
+  background: none;
+  padding: 0 1.75rem;
+  -moz-box-sizing: border-box;
+  min-width: 5rem;
+  text-align: center;
+}
+
+section[data-type="sidebar"] > header menu[type="toolbar"] a:last-child,
+section[data-type="sidebar"] > header menu[type="toolbar"] button:last-child {
+  background: url(drawer/images/ui/separator.png) no-repeat left center / auto 3.1rem;
+}
+
+section[data-type="sidebar"] > header menu[type="toolbar"] {
+  padding: 0;
+  margin: 0;
+}
+
+section[data-type="sidebar"] > header a,
+section[data-type="sidebar"] > header button {
+  border: none;
+  background: none;
+  padding: 0;
+  overflow: hidden;
+  font-weight: 600;
+  font-size: 1.4rem;
+  line-height: 1.1em;
+  color: #fff;
+}
+
+section[data-type="sidebar"] > header a:first-letter,
+section[data-type="sidebar"] > header button:first-letter {
+  text-transform: uppercase;
+}
+
+/* Icon definitions */
+section[data-type="sidebar"] > header .icon {
+  display: inline-block;
+  width: 3rem;
+  height: 4.9rem;
+  margin: 0 -1rem;
+  background: transparent no-repeat center center / 100% auto;
+  font-size: 0;
+  overflow: hidden;
+  position: relative;
+}
+
+section[data-type="sidebar"]:after {
+  content: "";
+  width: 1rem;
+  background: url(drawer/images/ui/shadow.png) right top repeat-y;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 5;
+}
+
+section[data-type="sidebar"] > nav {
+  overflow-y: auto;
+  max-height: 100%;
+  margin-right: -0.8rem;
+}
+
+section[data-type="sidebar"] > nav > h2 {
+  font-weight: bold;
+  font-size: 1.4rem;
+  line-height: 3.3rem;
+  text-indent: 3rem;
+  color: #fff;
+  background: url(drawer/images/ui/pattern_subheader.png) repeat left top;
+  border-bottom: 0.1rem solid #596068;
+  margin: 0;
+  padding-right: 0.8rem;
+}
+
+section[data-type="sidebar"] [role="toolbar"] {
+  position: absolute;
+}
+
+section[data-type="sidebar"] > nav > ul {
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
+
+section[data-type="sidebar"] > nav > ul > li {
+  color: #fff;
+  list-style: none;
+  transition: background 0.2s ease;
+}
+
+section[data-type="sidebar"] > nav > ul > li:active {
+  background: #00ABCC;
+}
+
+section[data-type="sidebar"] > nav > ul > li > a {
+  text-decoration: none;
+  color: #fff;
+  font-size: 1.6rem;
+  line-height: 4.35rem;
+  border-bottom: 0.1rem solid #596068;
+  text-indent: 3rem;
+  padding-right: 0.8rem;
+  width: 100%;
+  -moz-box-sizing: border-box;
+  display: block;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}

TEMPAT SAMPAH
css/drawer/images/icons/menu.png


TEMPAT SAMPAH
css/drawer/images/icons/[email protected]


TEMPAT SAMPAH
css/drawer/images/icons/[email protected]


TEMPAT SAMPAH
css/drawer/images/icons/[email protected]


TEMPAT SAMPAH
css/drawer/images/ui/header.png


TEMPAT SAMPAH
css/drawer/images/ui/header/header.png


TEMPAT SAMPAH
css/drawer/images/ui/header/shadow.png


TEMPAT SAMPAH
css/drawer/images/ui/header/[email protected]


TEMPAT SAMPAH
css/drawer/images/ui/header/[email protected]


TEMPAT SAMPAH
css/drawer/images/ui/negative.png


TEMPAT SAMPAH
css/drawer/images/ui/pattern.png


TEMPAT SAMPAH
css/drawer/images/ui/pattern_subheader.png


TEMPAT SAMPAH
css/drawer/images/ui/separator.png


TEMPAT SAMPAH
css/drawer/images/ui/separator_large.png


TEMPAT SAMPAH
css/drawer/images/ui/shadow.png


TEMPAT SAMPAH
css/drawer/images/ui/[email protected]


TEMPAT SAMPAH
css/drawer/images/ui/[email protected]


TEMPAT SAMPAH
css/drawer/images/ui/shadow_header.png


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini