@gogocat/data-bind 1.12.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/.editorconfig +14 -14
  2. package/.vscode/launch.json +12 -12
  3. package/CONFIGURATION.md +294 -0
  4. package/REACTIVE_MODE.md +553 -0
  5. package/README.md +266 -829
  6. package/babel.config.json +30 -0
  7. package/dist/js/_escape.d.ts +14 -0
  8. package/dist/js/_escape.d.ts.map +1 -0
  9. package/dist/js/applyBinding.d.ts +11 -0
  10. package/dist/js/applyBinding.d.ts.map +1 -0
  11. package/dist/js/attrBinding.d.ts +12 -0
  12. package/dist/js/attrBinding.d.ts.map +1 -0
  13. package/dist/js/binder.d.ts +67 -0
  14. package/dist/js/binder.d.ts.map +1 -0
  15. package/dist/js/changeBinding.d.ts +19 -0
  16. package/dist/js/changeBinding.d.ts.map +1 -0
  17. package/dist/js/commentWrapper.d.ts +39 -0
  18. package/dist/js/commentWrapper.d.ts.map +1 -0
  19. package/dist/js/config.d.ts +55 -0
  20. package/dist/js/config.d.ts.map +1 -0
  21. package/dist/js/createBindingOption.d.ts +32 -0
  22. package/dist/js/createBindingOption.d.ts.map +1 -0
  23. package/dist/js/createEventBinding.d.ts +10 -0
  24. package/dist/js/createEventBinding.d.ts.map +1 -0
  25. package/dist/js/cssBinding.d.ts +15 -0
  26. package/dist/js/cssBinding.d.ts.map +1 -0
  27. package/dist/js/dataBind.js +2756 -2530
  28. package/dist/js/dataBind.min.js +8 -1
  29. package/dist/js/dataBind.min.js.map +1 -1
  30. package/dist/js/domWalker.d.ts +9 -0
  31. package/dist/js/domWalker.d.ts.map +1 -0
  32. package/dist/js/forOfBinding.d.ts +12 -0
  33. package/dist/js/forOfBinding.d.ts.map +1 -0
  34. package/dist/js/hoverBinding.d.ts +13 -0
  35. package/dist/js/hoverBinding.d.ts.map +1 -0
  36. package/dist/js/ifBinding.d.ts +12 -0
  37. package/dist/js/ifBinding.d.ts.map +1 -0
  38. package/dist/js/index.d.ts +10 -0
  39. package/dist/js/index.d.ts.map +1 -0
  40. package/dist/js/modelBinding.d.ts +12 -0
  41. package/dist/js/modelBinding.d.ts.map +1 -0
  42. package/dist/js/postProcess.d.ts +3 -0
  43. package/dist/js/postProcess.d.ts.map +1 -0
  44. package/dist/js/pubSub.d.ts +11 -0
  45. package/dist/js/pubSub.d.ts.map +1 -0
  46. package/dist/js/reactiveProxy.d.ts +28 -0
  47. package/dist/js/reactiveProxy.d.ts.map +1 -0
  48. package/dist/js/renderForOfBinding.d.ts +8 -0
  49. package/dist/js/renderForOfBinding.d.ts.map +1 -0
  50. package/dist/js/renderIfBinding.d.ts +22 -0
  51. package/dist/js/renderIfBinding.d.ts.map +1 -0
  52. package/dist/js/renderIteration.d.ts +16 -0
  53. package/dist/js/renderIteration.d.ts.map +1 -0
  54. package/dist/js/renderTemplate.d.ts +14 -0
  55. package/dist/js/renderTemplate.d.ts.map +1 -0
  56. package/dist/js/renderTemplatesBinding.d.ts +19 -0
  57. package/dist/js/renderTemplatesBinding.d.ts.map +1 -0
  58. package/dist/js/showBinding.d.ts +13 -0
  59. package/dist/js/showBinding.d.ts.map +1 -0
  60. package/dist/js/switchBinding.d.ts +13 -0
  61. package/dist/js/switchBinding.d.ts.map +1 -0
  62. package/dist/js/textBinding.d.ts +13 -0
  63. package/dist/js/textBinding.d.ts.map +1 -0
  64. package/dist/js/types/_escape.d.ts +14 -0
  65. package/dist/js/types/_escape.d.ts.map +1 -0
  66. package/dist/js/types/applyBinding.d.ts +11 -0
  67. package/dist/js/types/applyBinding.d.ts.map +1 -0
  68. package/dist/js/types/attrBinding.d.ts +12 -0
  69. package/dist/js/types/attrBinding.d.ts.map +1 -0
  70. package/dist/js/types/binder.d.ts +67 -0
  71. package/dist/js/types/binder.d.ts.map +1 -0
  72. package/dist/js/types/changeBinding.d.ts +19 -0
  73. package/dist/js/types/changeBinding.d.ts.map +1 -0
  74. package/dist/js/types/commentWrapper.d.ts +39 -0
  75. package/dist/js/types/commentWrapper.d.ts.map +1 -0
  76. package/dist/js/types/config.d.ts +55 -0
  77. package/dist/js/types/config.d.ts.map +1 -0
  78. package/dist/js/types/createBindingOption.d.ts +32 -0
  79. package/dist/js/types/createBindingOption.d.ts.map +1 -0
  80. package/dist/js/types/createEventBinding.d.ts +10 -0
  81. package/dist/js/types/createEventBinding.d.ts.map +1 -0
  82. package/dist/js/types/cssBinding.d.ts +15 -0
  83. package/dist/js/types/cssBinding.d.ts.map +1 -0
  84. package/dist/js/types/domWalker.d.ts +9 -0
  85. package/dist/js/types/domWalker.d.ts.map +1 -0
  86. package/dist/js/types/forOfBinding.d.ts +12 -0
  87. package/dist/js/types/forOfBinding.d.ts.map +1 -0
  88. package/dist/js/types/hoverBinding.d.ts +13 -0
  89. package/dist/js/types/hoverBinding.d.ts.map +1 -0
  90. package/dist/js/types/ifBinding.d.ts +12 -0
  91. package/dist/js/types/ifBinding.d.ts.map +1 -0
  92. package/dist/js/types/index.d.ts +10 -0
  93. package/dist/js/types/index.d.ts.map +1 -0
  94. package/dist/js/types/modelBinding.d.ts +12 -0
  95. package/dist/js/types/modelBinding.d.ts.map +1 -0
  96. package/dist/js/types/postProcess.d.ts +3 -0
  97. package/dist/js/types/postProcess.d.ts.map +1 -0
  98. package/dist/js/types/pubSub.d.ts +11 -0
  99. package/dist/js/types/pubSub.d.ts.map +1 -0
  100. package/dist/js/types/reactiveProxy.d.ts +28 -0
  101. package/dist/js/types/reactiveProxy.d.ts.map +1 -0
  102. package/dist/js/types/renderForOfBinding.d.ts +8 -0
  103. package/dist/js/types/renderForOfBinding.d.ts.map +1 -0
  104. package/dist/js/types/renderIfBinding.d.ts +22 -0
  105. package/dist/js/types/renderIfBinding.d.ts.map +1 -0
  106. package/dist/js/types/renderIteration.d.ts +16 -0
  107. package/dist/js/types/renderIteration.d.ts.map +1 -0
  108. package/dist/js/types/renderTemplate.d.ts +14 -0
  109. package/dist/js/types/renderTemplate.d.ts.map +1 -0
  110. package/dist/js/types/renderTemplatesBinding.d.ts +19 -0
  111. package/dist/js/types/renderTemplatesBinding.d.ts.map +1 -0
  112. package/dist/js/types/showBinding.d.ts +13 -0
  113. package/dist/js/types/showBinding.d.ts.map +1 -0
  114. package/dist/js/types/switchBinding.d.ts +13 -0
  115. package/dist/js/types/switchBinding.d.ts.map +1 -0
  116. package/dist/js/types/textBinding.d.ts +13 -0
  117. package/dist/js/types/textBinding.d.ts.map +1 -0
  118. package/dist/js/types/types.d.ts +111 -0
  119. package/dist/js/types/types.d.ts.map +1 -0
  120. package/dist/js/types/util.d.ts +119 -0
  121. package/dist/js/types/util.d.ts.map +1 -0
  122. package/dist/js/types.d.ts +111 -0
  123. package/dist/js/types.d.ts.map +1 -0
  124. package/dist/js/util.d.ts +119 -0
  125. package/dist/js/util.d.ts.map +1 -0
  126. package/eslint.config.js +124 -0
  127. package/examples/DBMONSTER_COMPARISON.md +123 -0
  128. package/examples/afterRenderDemo.html +119 -0
  129. package/examples/bootstrap/css/animate.css +1579 -1579
  130. package/examples/bootstrap/css/bootstrap.min.css +6 -6
  131. package/examples/bootstrap/css/homeservices.css +378 -390
  132. package/examples/bootstrap/css/open-iconic.css +511 -511
  133. package/examples/bootstrap/fonts/open-iconic.svg +543 -543
  134. package/examples/bootstrap/js/compMessageDialog.js +20 -19
  135. package/examples/bootstrap/js/compSearchBar.js +12 -19
  136. package/examples/bootstrap/js/compSearchResults.js +50 -46
  137. package/examples/bootstrap/js/featureAdsResult.json +65 -65
  138. package/examples/bootstrap/js/searchResult.json +57 -57
  139. package/examples/bootstrap.html +343 -332
  140. package/examples/css/baseTodo.css +141 -141
  141. package/examples/css/dbMonsterStyles.css +27 -27
  142. package/examples/css/indexTodo.css +374 -374
  143. package/examples/dbmonsterForOfReactive.html +40 -0
  144. package/examples/dbmonsterReact.html +19 -0
  145. package/examples/forOfBindingSimpleDebug.html +45 -0
  146. package/examples/globalConfig.html +131 -0
  147. package/examples/js/afterRenderDemo.js +190 -0
  148. package/examples/js/appTodo.js +46 -46
  149. package/examples/js/attrBindingDemo.js +2 -2
  150. package/examples/js/dbMonApp.js +24 -26
  151. package/examples/js/dbMonAppReact.jsx +79 -0
  152. package/examples/js/dbMonAppReactive.js +28 -0
  153. package/examples/js/fiberDemo.js +4 -4
  154. package/examples/js/filtersDemo.js +8 -8
  155. package/examples/js/forOfDemo.js +7 -9
  156. package/examples/js/forOfDemoComplex.js +44 -17
  157. package/examples/js/form.js +14 -14
  158. package/examples/js/globalConfig.js +117 -0
  159. package/examples/js/ifBindingDemo.js +16 -16
  160. package/examples/js/reactiveDemo.js +119 -0
  161. package/examples/js/switchBindingDemo.js +8 -8
  162. package/examples/react-dbmonster/dist/bundle.js +43 -0
  163. package/examples/react-dbmonster/package-lock.json +537 -0
  164. package/examples/react-dbmonster/package.json +16 -0
  165. package/examples/react-dbmonster/src/index.jsx +80 -0
  166. package/examples/reactiveDemo.html +127 -0
  167. package/examples/refreshRateTest.html +75 -75
  168. package/index.html +841 -0
  169. package/package.json +31 -34
  170. package/rollup.config.js +79 -36
  171. package/src/{_escape.js → _escape.ts} +19 -17
  172. package/src/{applyBinding.js → applyBinding.ts} +27 -18
  173. package/src/{attrBinding.js → attrBinding.ts} +14 -13
  174. package/src/{binder.js → binder.ts} +289 -181
  175. package/src/changeBinding.ts +93 -0
  176. package/src/{commentWrapper.js → commentWrapper.ts} +33 -30
  177. package/src/config.ts +107 -0
  178. package/src/{createBindingOption.js → createBindingOption.ts} +39 -15
  179. package/src/createEventBinding.ts +88 -0
  180. package/src/{cssBinding.js → cssBinding.ts} +13 -11
  181. package/src/{domWalker.js → domWalker.ts} +44 -30
  182. package/src/{forOfBinding.js → forOfBinding.ts} +4 -3
  183. package/src/hoverBinding.ts +84 -0
  184. package/src/{ifBinding.js → ifBinding.ts} +14 -12
  185. package/src/index.ts +53 -0
  186. package/src/{modelBinding.js → modelBinding.ts} +11 -9
  187. package/src/{postProcess.js → postProcess.ts} +6 -4
  188. package/src/{pubSub.js → pubSub.ts} +24 -21
  189. package/src/reactiveProxy.ts +285 -0
  190. package/src/{renderForOfBinding.js → renderForOfBinding.ts} +54 -32
  191. package/src/{renderIfBinding.js → renderIfBinding.ts} +41 -19
  192. package/src/{renderIteration.js → renderIteration.ts} +24 -8
  193. package/src/renderTemplate.ts +165 -0
  194. package/src/renderTemplatesBinding.ts +73 -0
  195. package/src/{showBinding.js → showBinding.ts} +4 -3
  196. package/src/{switchBinding.js → switchBinding.ts} +18 -15
  197. package/src/{textBinding.js → textBinding.ts} +5 -4
  198. package/src/types.ts +124 -0
  199. package/src/util.ts +810 -0
  200. package/test/css/reporter.css +9 -9
  201. package/test/globals.d.ts +19 -0
  202. package/test/helpers/testHelper.js +46 -11
  203. package/test/mocks/featureAdsResult.json +65 -65
  204. package/test/mocks/searchResult.json +57 -57
  205. package/test/specs/{attrBinding.spec.js → attrBinding.spec.ts} +103 -106
  206. package/test/specs/{binder.spec.js → binder.spec.ts} +29 -27
  207. package/test/specs/blurBinding.spec.ts +60 -0
  208. package/test/specs/chainableUse.spec.ts +125 -0
  209. package/test/specs/clickBinding.spec.ts +194 -0
  210. package/test/specs/{cssBinding.spec.js → cssBinding.spec.ts} +72 -79
  211. package/test/specs/{dataBindBootstrap.spec.js → dataBindBootstrap.spec.ts} +332 -313
  212. package/test/specs/{filter.spec.js → filter.spec.ts} +75 -76
  213. package/test/specs/{forOfBinding.spec.js → forOfBinding.spec.ts} +208 -219
  214. package/test/specs/formBinding.spec.ts +272 -0
  215. package/test/specs/ifBinding.spec.ts +165 -0
  216. package/test/specs/{nestedComponent.spec.js → nestedComponent.spec.ts} +88 -88
  217. package/test/specs/reactiveProxy.spec.ts +465 -0
  218. package/test/specs/{showBinding.spec.js → showBinding.spec.ts} +148 -149
  219. package/test/specs/{switchBinding.spec.js → switchBinding.spec.ts} +172 -173
  220. package/test/specs/templateBinding.spec.ts +273 -0
  221. package/test/specs/{textBinding.spec.js → textBinding.spec.ts} +47 -48
  222. package/test/tsconfig.json +31 -0
  223. package/test-output.txt +200 -0
  224. package/test-reactive.html +224 -0
  225. package/tsconfig.json +28 -0
  226. package/vendors/lodash.custom.js +4577 -4577
  227. package/vendors/lodash.custom.min.js +45 -45
  228. package/vitest.config.js +27 -0
  229. package/.eslintrc.js +0 -1
  230. package/.grunt/grunt-contrib-jasmine/boot.js +0 -161
  231. package/.grunt/grunt-contrib-jasmine/dist/js/dataBind.js +0 -9
  232. package/.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js +0 -23
  233. package/.grunt/grunt-contrib-jasmine/jasmine-html.js +0 -853
  234. package/.grunt/grunt-contrib-jasmine/jasmine.css +0 -271
  235. package/.grunt/grunt-contrib-jasmine/jasmine.js +0 -9761
  236. package/.grunt/grunt-contrib-jasmine/jasmine_favicon.png +0 -0
  237. package/.grunt/grunt-contrib-jasmine/json2.js +0 -489
  238. package/.grunt/grunt-contrib-jasmine/reporter.js +0 -107
  239. package/coverage/coverage.json +0 -1
  240. package/coverage/lcov/lcov-report/base.css +0 -213
  241. package/coverage/lcov/lcov-report/index.html +0 -93
  242. package/coverage/lcov/lcov-report/js/dataBind.js.html +0 -6596
  243. package/coverage/lcov/lcov-report/js/index.html +0 -93
  244. package/coverage/lcov/lcov-report/prettify.css +0 -1
  245. package/coverage/lcov/lcov-report/prettify.js +0 -1
  246. package/coverage/lcov/lcov-report/sort-arrow-sprite.png +0 -0
  247. package/coverage/lcov/lcov-report/sorter.js +0 -158
  248. package/coverage/lcov/lcov.info +0 -1991
  249. package/eslintrc.json +0 -40
  250. package/examples/bootstrap/js/bootstrap.min.js +0 -6
  251. package/examples/bootstrap/js/popper.min.js +0 -5
  252. package/examples/bootstrap/js/searchSuggestion.js +0 -58
  253. package/examples/bootstrap/js/typeahead.jquery.js +0 -1538
  254. package/gruntfile.js +0 -92
  255. package/gulpfile.js +0 -32
  256. package/src/applyBindingExport.js +0 -5
  257. package/src/changeBinding.js +0 -63
  258. package/src/config.js +0 -66
  259. package/src/createEventBinding.js +0 -46
  260. package/src/eventSystem.js +0 -46
  261. package/src/hoverBinding.js +0 -57
  262. package/src/index.js +0 -26
  263. package/src/renderTemplate.js +0 -128
  264. package/src/renderTemplatesBinding.js +0 -44
  265. package/src/util.js +0 -648
  266. package/test/specs/blurBinding.spec.js +0 -57
  267. package/test/specs/formBinding.spec.js +0 -316
  268. package/test/specs/ifBinding.spec.js +0 -169
  269. package/test/specs/templateBinding.spec.js +0 -117
  270. package/vendors/jasmine-jquery.js +0 -841
  271. package/vendors/jquery-3.2.1.min.js +0 -4
@@ -1,374 +1,374 @@
1
- html,
2
- body {
3
- margin: 0;
4
- padding: 0;
5
- }
6
-
7
- button {
8
- margin: 0;
9
- padding: 0;
10
- border: 0;
11
- background: none;
12
- font-size: 100%;
13
- vertical-align: baseline;
14
- font-family: inherit;
15
- font-weight: inherit;
16
- color: inherit;
17
- -webkit-appearance: none;
18
- appearance: none;
19
- -webkit-font-smoothing: antialiased;
20
- -moz-font-smoothing: antialiased;
21
- font-smoothing: antialiased;
22
- }
23
-
24
- body {
25
- font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
26
- line-height: 1.4em;
27
- background: #f5f5f5;
28
- color: #4d4d4d;
29
- min-width: 230px;
30
- max-width: 550px;
31
- margin: 0 auto;
32
- -webkit-font-smoothing: antialiased;
33
- -moz-font-smoothing: antialiased;
34
- font-smoothing: antialiased;
35
- font-weight: 300;
36
- }
37
-
38
- button,
39
- input[type='checkbox'] {
40
- outline: none;
41
- }
42
-
43
- .hidden {
44
- display: none;
45
- }
46
-
47
- #todoapp {
48
- background: #fff;
49
- margin: 130px 0 40px 0;
50
- position: relative;
51
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
52
- }
53
-
54
- #todoapp input::-webkit-input-placeholder {
55
- font-style: italic;
56
- font-weight: 300;
57
- color: #e6e6e6;
58
- }
59
-
60
- #todoapp input::-moz-placeholder {
61
- font-style: italic;
62
- font-weight: 300;
63
- color: #e6e6e6;
64
- }
65
-
66
- #todoapp input::input-placeholder {
67
- font-style: italic;
68
- font-weight: 300;
69
- color: #e6e6e6;
70
- }
71
-
72
- #todoapp h1 {
73
- position: absolute;
74
- top: -155px;
75
- width: 100%;
76
- font-size: 100px;
77
- font-weight: 100;
78
- text-align: center;
79
- color: rgba(175, 47, 47, 0.15);
80
- -webkit-text-rendering: optimizeLegibility;
81
- -moz-text-rendering: optimizeLegibility;
82
- text-rendering: optimizeLegibility;
83
- }
84
-
85
- #new-todo,
86
- .edit {
87
- position: relative;
88
- margin: 0;
89
- width: 100%;
90
- font-size: 24px;
91
- font-family: inherit;
92
- font-weight: inherit;
93
- line-height: 1.4em;
94
- border: 0;
95
- outline: none;
96
- color: inherit;
97
- padding: 6px;
98
- border: 1px solid #999;
99
- box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
100
- box-sizing: border-box;
101
- -webkit-font-smoothing: antialiased;
102
- -moz-font-smoothing: antialiased;
103
- font-smoothing: antialiased;
104
- }
105
-
106
- #new-todo {
107
- padding: 16px 16px 16px 60px;
108
- border: none;
109
- background: rgba(0, 0, 0, 0.003);
110
- box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03);
111
- }
112
-
113
- #main {
114
- position: relative;
115
- z-index: 2;
116
- border-top: 1px solid #e6e6e6;
117
- }
118
-
119
- label[for='toggle-all'] {
120
- display: none;
121
- }
122
-
123
- #toggle-all {
124
- position: absolute;
125
- top: -55px;
126
- left: -12px;
127
- width: 60px;
128
- height: 34px;
129
- text-align: center;
130
- border: none; /* Mobile Safari */
131
- }
132
-
133
- #toggle-all:before {
134
- content: '❯';
135
- font-size: 22px;
136
- color: #e6e6e6;
137
- padding: 10px 27px 10px 27px;
138
- }
139
-
140
- #toggle-all:checked:before {
141
- color: #737373;
142
- }
143
-
144
- #todo-list {
145
- margin: 0;
146
- padding: 0;
147
- list-style: none;
148
- }
149
-
150
- #todo-list li {
151
- position: relative;
152
- font-size: 24px;
153
- border-bottom: 1px solid #ededed;
154
- }
155
-
156
- #todo-list li:last-child {
157
- border-bottom: none;
158
- }
159
-
160
- #todo-list li.editing {
161
- border-bottom: none;
162
- padding: 0;
163
- }
164
-
165
- #todo-list li.editing .edit {
166
- display: block;
167
- width: 506px;
168
- padding: 13px 17px 12px 17px;
169
- margin: 0 0 0 43px;
170
- }
171
-
172
- #todo-list li.editing .view {
173
- display: none;
174
- }
175
-
176
- #todo-list li .toggle {
177
- text-align: center;
178
- width: 40px;
179
- /* auto, since non-WebKit browsers doesn't support input styling */
180
- height: auto;
181
- position: absolute;
182
- top: 0;
183
- bottom: 0;
184
- margin: auto 0;
185
- border: none; /* Mobile Safari */
186
- -webkit-appearance: none;
187
- appearance: none;
188
- }
189
-
190
- #todo-list li .toggle:after {
191
- content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='-10 -18 100 135'%3E%3Ccircle cx='50' cy='50' r='50' fill='none' stroke='%23ededed' stroke-width='3'/%3E%3C/svg%3E");
192
- }
193
-
194
- #todo-list li .toggle:checked:after {
195
- content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='-10 -18 100 135'%3E%3Ccircle cx='50' cy='50' r='50' fill='none' stroke='%23bddad5' stroke-width='3'/%3E%3Cpath fill='%235dc2af' d='M72 25L42 71 27 56l-4 4 20 20 34-52z'/%3E%3C/svg%3E");
196
- }
197
-
198
- #todo-list li label {
199
- white-space: pre-line;
200
- word-break: break-all;
201
- padding: 15px 60px 15px 15px;
202
- margin-left: 45px;
203
- display: block;
204
- line-height: 1.2;
205
- transition: color 0.4s;
206
- }
207
-
208
- #todo-list li.completed label {
209
- color: #d9d9d9;
210
- text-decoration: line-through;
211
- }
212
-
213
- #todo-list li .destroy {
214
- display: none;
215
- position: absolute;
216
- top: 0;
217
- right: 10px;
218
- bottom: 0;
219
- width: 40px;
220
- height: 40px;
221
- margin: auto 0;
222
- font-size: 30px;
223
- color: #cc9a9a;
224
- margin-bottom: 11px;
225
- transition: color 0.2s ease-out;
226
- }
227
-
228
- #todo-list li .destroy:hover {
229
- color: #af5b5e;
230
- }
231
-
232
- #todo-list li .destroy:after {
233
- content: '×';
234
- }
235
-
236
- #todo-list li:hover .destroy {
237
- display: block;
238
- }
239
-
240
- #todo-list li .edit {
241
- display: none;
242
- }
243
-
244
- #todo-list li.editing:last-child {
245
- margin-bottom: -1px;
246
- }
247
-
248
- #footer {
249
- color: #777;
250
- padding: 10px 15px;
251
- height: 20px;
252
- text-align: center;
253
- border-top: 1px solid #e6e6e6;
254
- }
255
-
256
- #footer:before {
257
- content: '';
258
- position: absolute;
259
- right: 0;
260
- bottom: 0;
261
- left: 0;
262
- height: 50px;
263
- overflow: hidden;
264
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2),
265
- 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);
266
- }
267
-
268
- #todo-count {
269
- float: left;
270
- text-align: left;
271
- }
272
-
273
- #todo-count strong {
274
- font-weight: 300;
275
- }
276
-
277
- #filters {
278
- margin: 0;
279
- padding: 0;
280
- list-style: none;
281
- position: absolute;
282
- right: 0;
283
- left: 0;
284
- }
285
-
286
- #filters li {
287
- display: inline;
288
- }
289
-
290
- #filters li a {
291
- color: inherit;
292
- margin: 3px;
293
- padding: 3px 7px;
294
- text-decoration: none;
295
- border: 1px solid transparent;
296
- border-radius: 3px;
297
- }
298
-
299
- #filters li a.selected,
300
- #filters li a:hover {
301
- border-color: rgba(175, 47, 47, 0.1);
302
- }
303
-
304
- #filters li a.selected {
305
- border-color: rgba(175, 47, 47, 0.2);
306
- }
307
-
308
- #clear-completed,
309
- html #clear-completed:active {
310
- float: right;
311
- position: relative;
312
- line-height: 20px;
313
- text-decoration: none;
314
- cursor: pointer;
315
- position: relative;
316
- }
317
-
318
- #clear-completed:hover {
319
- text-decoration: underline;
320
- }
321
-
322
- #info {
323
- margin: 65px auto 0;
324
- color: #bfbfbf;
325
- font-size: 10px;
326
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
327
- text-align: center;
328
- }
329
-
330
- #info p {
331
- line-height: 1;
332
- }
333
-
334
- #info a {
335
- color: inherit;
336
- text-decoration: none;
337
- font-weight: 400;
338
- }
339
-
340
- #info a:hover {
341
- text-decoration: underline;
342
- }
343
-
344
- /*
345
- Hack to remove background from Mobile Safari.
346
- Can't use it globally since it destroys checkboxes in Firefox
347
- */
348
- @media screen and (-webkit-min-device-pixel-ratio: 0) {
349
- #toggle-all,
350
- #todo-list li .toggle {
351
- background: none;
352
- }
353
-
354
- #todo-list li .toggle {
355
- height: 40px;
356
- }
357
-
358
- #toggle-all {
359
- -webkit-transform: rotate(90deg);
360
- transform: rotate(90deg);
361
- -webkit-appearance: none;
362
- appearance: none;
363
- }
364
- }
365
-
366
- @media (max-width: 430px) {
367
- #footer {
368
- height: 50px;
369
- }
370
-
371
- #filters {
372
- bottom: 10px;
373
- }
374
- }
1
+ html,
2
+ body {
3
+ margin: 0;
4
+ padding: 0;
5
+ }
6
+
7
+ button {
8
+ margin: 0;
9
+ padding: 0;
10
+ border: 0;
11
+ background: none;
12
+ font-size: 100%;
13
+ vertical-align: baseline;
14
+ font-family: inherit;
15
+ font-weight: inherit;
16
+ color: inherit;
17
+ -webkit-appearance: none;
18
+ appearance: none;
19
+ -webkit-font-smoothing: antialiased;
20
+ -moz-font-smoothing: antialiased;
21
+ font-smoothing: antialiased;
22
+ }
23
+
24
+ body {
25
+ font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
26
+ line-height: 1.4em;
27
+ background: #f5f5f5;
28
+ color: #4d4d4d;
29
+ min-width: 230px;
30
+ max-width: 550px;
31
+ margin: 0 auto;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-font-smoothing: antialiased;
34
+ font-smoothing: antialiased;
35
+ font-weight: 300;
36
+ }
37
+
38
+ button,
39
+ input[type='checkbox'] {
40
+ outline: none;
41
+ }
42
+
43
+ .hidden {
44
+ display: none;
45
+ }
46
+
47
+ #todoapp {
48
+ background: #fff;
49
+ margin: 130px 0 40px 0;
50
+ position: relative;
51
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
52
+ }
53
+
54
+ #todoapp input::-webkit-input-placeholder {
55
+ font-style: italic;
56
+ font-weight: 300;
57
+ color: #e6e6e6;
58
+ }
59
+
60
+ #todoapp input::-moz-placeholder {
61
+ font-style: italic;
62
+ font-weight: 300;
63
+ color: #e6e6e6;
64
+ }
65
+
66
+ #todoapp input::input-placeholder {
67
+ font-style: italic;
68
+ font-weight: 300;
69
+ color: #e6e6e6;
70
+ }
71
+
72
+ #todoapp h1 {
73
+ position: absolute;
74
+ top: -155px;
75
+ width: 100%;
76
+ font-size: 100px;
77
+ font-weight: 100;
78
+ text-align: center;
79
+ color: rgba(175, 47, 47, 0.15);
80
+ -webkit-text-rendering: optimizeLegibility;
81
+ -moz-text-rendering: optimizeLegibility;
82
+ text-rendering: optimizeLegibility;
83
+ }
84
+
85
+ #new-todo,
86
+ .edit {
87
+ position: relative;
88
+ margin: 0;
89
+ width: 100%;
90
+ font-size: 24px;
91
+ font-family: inherit;
92
+ font-weight: inherit;
93
+ line-height: 1.4em;
94
+ border: 0;
95
+ outline: none;
96
+ color: inherit;
97
+ padding: 6px;
98
+ border: 1px solid #999;
99
+ box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
100
+ box-sizing: border-box;
101
+ -webkit-font-smoothing: antialiased;
102
+ -moz-font-smoothing: antialiased;
103
+ font-smoothing: antialiased;
104
+ }
105
+
106
+ #new-todo {
107
+ padding: 16px 16px 16px 60px;
108
+ border: none;
109
+ background: rgba(0, 0, 0, 0.003);
110
+ box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03);
111
+ }
112
+
113
+ #main {
114
+ position: relative;
115
+ z-index: 2;
116
+ border-top: 1px solid #e6e6e6;
117
+ }
118
+
119
+ label[for='toggle-all'] {
120
+ display: none;
121
+ }
122
+
123
+ #toggle-all {
124
+ position: absolute;
125
+ top: -55px;
126
+ left: -12px;
127
+ width: 60px;
128
+ height: 34px;
129
+ text-align: center;
130
+ border: none; /* Mobile Safari */
131
+ }
132
+
133
+ #toggle-all:before {
134
+ content: '❯';
135
+ font-size: 22px;
136
+ color: #e6e6e6;
137
+ padding: 10px 27px 10px 27px;
138
+ }
139
+
140
+ #toggle-all:checked:before {
141
+ color: #737373;
142
+ }
143
+
144
+ #todo-list {
145
+ margin: 0;
146
+ padding: 0;
147
+ list-style: none;
148
+ }
149
+
150
+ #todo-list li {
151
+ position: relative;
152
+ font-size: 24px;
153
+ border-bottom: 1px solid #ededed;
154
+ }
155
+
156
+ #todo-list li:last-child {
157
+ border-bottom: none;
158
+ }
159
+
160
+ #todo-list li.editing {
161
+ border-bottom: none;
162
+ padding: 0;
163
+ }
164
+
165
+ #todo-list li.editing .edit {
166
+ display: block;
167
+ width: 506px;
168
+ padding: 13px 17px 12px 17px;
169
+ margin: 0 0 0 43px;
170
+ }
171
+
172
+ #todo-list li.editing .view {
173
+ display: none;
174
+ }
175
+
176
+ #todo-list li .toggle {
177
+ text-align: center;
178
+ width: 40px;
179
+ /* auto, since non-WebKit browsers doesn't support input styling */
180
+ height: auto;
181
+ position: absolute;
182
+ top: 0;
183
+ bottom: 0;
184
+ margin: auto 0;
185
+ border: none; /* Mobile Safari */
186
+ -webkit-appearance: none;
187
+ appearance: none;
188
+ }
189
+
190
+ #todo-list li .toggle:after {
191
+ content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='-10 -18 100 135'%3E%3Ccircle cx='50' cy='50' r='50' fill='none' stroke='%23ededed' stroke-width='3'/%3E%3C/svg%3E");
192
+ }
193
+
194
+ #todo-list li .toggle:checked:after {
195
+ content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='-10 -18 100 135'%3E%3Ccircle cx='50' cy='50' r='50' fill='none' stroke='%23bddad5' stroke-width='3'/%3E%3Cpath fill='%235dc2af' d='M72 25L42 71 27 56l-4 4 20 20 34-52z'/%3E%3C/svg%3E");
196
+ }
197
+
198
+ #todo-list li label {
199
+ white-space: pre-line;
200
+ word-break: break-all;
201
+ padding: 15px 60px 15px 15px;
202
+ margin-left: 45px;
203
+ display: block;
204
+ line-height: 1.2;
205
+ transition: color 0.4s;
206
+ }
207
+
208
+ #todo-list li.completed label {
209
+ color: #d9d9d9;
210
+ text-decoration: line-through;
211
+ }
212
+
213
+ #todo-list li .destroy {
214
+ display: none;
215
+ position: absolute;
216
+ top: 0;
217
+ right: 10px;
218
+ bottom: 0;
219
+ width: 40px;
220
+ height: 40px;
221
+ margin: auto 0;
222
+ font-size: 30px;
223
+ color: #cc9a9a;
224
+ margin-bottom: 11px;
225
+ transition: color 0.2s ease-out;
226
+ }
227
+
228
+ #todo-list li .destroy:hover {
229
+ color: #af5b5e;
230
+ }
231
+
232
+ #todo-list li .destroy:after {
233
+ content: '×';
234
+ }
235
+
236
+ #todo-list li:hover .destroy {
237
+ display: block;
238
+ }
239
+
240
+ #todo-list li .edit {
241
+ display: none;
242
+ }
243
+
244
+ #todo-list li.editing:last-child {
245
+ margin-bottom: -1px;
246
+ }
247
+
248
+ #footer {
249
+ color: #777;
250
+ padding: 10px 15px;
251
+ height: 20px;
252
+ text-align: center;
253
+ border-top: 1px solid #e6e6e6;
254
+ }
255
+
256
+ #footer:before {
257
+ content: '';
258
+ position: absolute;
259
+ right: 0;
260
+ bottom: 0;
261
+ left: 0;
262
+ height: 50px;
263
+ overflow: hidden;
264
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2),
265
+ 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);
266
+ }
267
+
268
+ #todo-count {
269
+ float: left;
270
+ text-align: left;
271
+ }
272
+
273
+ #todo-count strong {
274
+ font-weight: 300;
275
+ }
276
+
277
+ #filters {
278
+ margin: 0;
279
+ padding: 0;
280
+ list-style: none;
281
+ position: absolute;
282
+ right: 0;
283
+ left: 0;
284
+ }
285
+
286
+ #filters li {
287
+ display: inline;
288
+ }
289
+
290
+ #filters li a {
291
+ color: inherit;
292
+ margin: 3px;
293
+ padding: 3px 7px;
294
+ text-decoration: none;
295
+ border: 1px solid transparent;
296
+ border-radius: 3px;
297
+ }
298
+
299
+ #filters li a.selected,
300
+ #filters li a:hover {
301
+ border-color: rgba(175, 47, 47, 0.1);
302
+ }
303
+
304
+ #filters li a.selected {
305
+ border-color: rgba(175, 47, 47, 0.2);
306
+ }
307
+
308
+ #clear-completed,
309
+ html #clear-completed:active {
310
+ float: right;
311
+ position: relative;
312
+ line-height: 20px;
313
+ text-decoration: none;
314
+ cursor: pointer;
315
+ position: relative;
316
+ }
317
+
318
+ #clear-completed:hover {
319
+ text-decoration: underline;
320
+ }
321
+
322
+ #info {
323
+ margin: 65px auto 0;
324
+ color: #bfbfbf;
325
+ font-size: 10px;
326
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
327
+ text-align: center;
328
+ }
329
+
330
+ #info p {
331
+ line-height: 1;
332
+ }
333
+
334
+ #info a {
335
+ color: inherit;
336
+ text-decoration: none;
337
+ font-weight: 400;
338
+ }
339
+
340
+ #info a:hover {
341
+ text-decoration: underline;
342
+ }
343
+
344
+ /*
345
+ Hack to remove background from Mobile Safari.
346
+ Can't use it globally since it destroys checkboxes in Firefox
347
+ */
348
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
349
+ #toggle-all,
350
+ #todo-list li .toggle {
351
+ background: none;
352
+ }
353
+
354
+ #todo-list li .toggle {
355
+ height: 40px;
356
+ }
357
+
358
+ #toggle-all {
359
+ -webkit-transform: rotate(90deg);
360
+ transform: rotate(90deg);
361
+ -webkit-appearance: none;
362
+ appearance: none;
363
+ }
364
+ }
365
+
366
+ @media (max-width: 430px) {
367
+ #footer {
368
+ height: 50px;
369
+ }
370
+
371
+ #filters {
372
+ bottom: 10px;
373
+ }
374
+ }