Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(527)

Side by Side Diff: bower_components/core-localstorage/core-localstorage.html

Issue 786953007: npm_modules: Fork bower_components into Polymer 0.4.0 and 0.5.0 versions (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!--
2 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
6 Code distributed by Google as part of the polymer project is also
7 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
8 -->
9
10 <!--
11 Element access to localStorage. The "name" property
12 is the key to the data ("value" property) stored in localStorage.
13
14 `core-localstorage` automatically saves the value to localStorage when
15 value is changed. Note that if value is an object auto-save will be
16 triggered only when value is a different instance.
17
18 <core-localstorage name="my-app-storage" value="{{value}}"></core-localstora ge>
19
20 @group Polymer Core Elements
21 @element core-localstorage
22 @blurb Element access to localStorage.
23 @url github.io
24 @categories Data
25 -->
26
27 <link rel="import" href="../polymer/polymer.html">
28
29 <polymer-element name="core-localstorage" attributes="name value useRaw autoSave Disabled" hidden>
30 <script>
31
32 Polymer('core-localstorage', {
33
34 /**
35 * Fired when a value is loaded from localStorage.
36 * @event core-localstorage-load
37 */
38
39 /**
40 * The key to the data stored in localStorage.
41 *
42 * @attribute name
43 * @type string
44 * @default null
45 */
46 name: '',
47
48 /**
49 * The data associated with the specified name.
50 *
51 * @attribute value
52 * @type object
53 * @default null
54 */
55 value: null,
56
57 /**
58 * If true, the value is stored and retrieved without JSON processing.
59 *
60 * @attribute useRaw
61 * @type boolean
62 * @default false
63 */
64 useRaw: false,
65
66 /**
67 * If true, auto save is disabled.
68 *
69 * @attribute autoSaveDisabled
70 * @type boolean
71 * @default false
72 */
73 autoSaveDisabled: false,
74
75 attached: function() {
76 // wait for bindings are all setup
77 this.async('load');
78 },
79
80 valueChanged: function() {
81 if (this.loaded && !this.autoSaveDisabled) {
82 this.save();
83 }
84 },
85
86 load: function() {
87 var v = localStorage.getItem(this.name);
88 if (this.useRaw) {
89 this.value = v;
90 } else {
91 // localStorage has a flaw that makes it difficult to determine
92 // if a key actually exists or not (getItem returns null if the
93 // key doesn't exist, which is not distinguishable from a stored
94 // null value)
95 // however, if not `useRaw`, an (unparsed) null value unambiguously
96 // signals that there is no value in storage (a stored null value would
97 // be escaped, i.e. "null")
98 // in this case we save any non-null current (default) value
99 if (v === null) {
100 if (this.value != null) {
101 this.save();
102 }
103 } else {
104 try {
105 v = JSON.parse(v);
106 } catch(x) {
107 }
108 this.value = v;
109 }
110 }
111 this.loaded = true;
112 this.asyncFire('core-localstorage-load');
113 },
114
115 /**
116 * Saves the value to localStorage.
117 *
118 * @method save
119 */
120 save: function() {
121 var v = this.useRaw ? this.value : JSON.stringify(this.value);
122 localStorage.setItem(this.name, v);
123 }
124
125 });
126
127 </script>
128 </polymer-element>
OLDNEW
« no previous file with comments | « bower_components/core-localstorage/bower.json ('k') | bower_components/core-localstorage/demo.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698