-
Notifications
You must be signed in to change notification settings - Fork 3.9k
/
base-element.js
54 lines (44 loc) · 1.2 KB
/
base-element.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import {parseDateAttrs as parseDateAttrsBase} from '#core/dom/parse-date-attributes';
import {PreactBaseElement} from '#preact/base-element';
import {BentoDateCountdown} from './component';
export const TAG = 'bento-date-countdown';
export class BaseElement extends PreactBaseElement {}
/** @override */
BaseElement['Component'] = BentoDateCountdown;
/** @override */
BaseElement['layoutSizeDefined'] = true;
/** @override */
BaseElement['lightDomTag'] = 'div';
/** @override */
BaseElement['usesTemplate'] = true;
/** @override */
BaseElement['props'] = {
'datetime': {
attrs: [
'end-date',
'timeleft-ms',
'timestamp-ms',
'timestamp-seconds',
'offset-seconds',
],
parseAttrs: parseDateAttrs,
},
'whenEnded': {attr: 'when-ended'},
'locale': {attr: 'locale'},
'biggestUnit': {attr: 'biggest-unit'},
'countUp': {attr: 'count-up', type: 'boolean'},
};
/**
* @param {!Element} element
* @return {?number}
* @throws {UserError} when attribute values are missing or invalid.
* @visibleForTesting
*/
export function parseDateAttrs(element) {
return parseDateAttrsBase(element, [
'end-date',
'timeleft-ms',
'timestamp-ms',
'timestamp-seconds',
]);
}