Skip to content

Commit 95a9d14

Browse files
⚙️ 0.0.1
1 parent d8a8f2e commit 95a9d14

File tree

4 files changed

+73
-6
lines changed

4 files changed

+73
-6
lines changed

dist/class/HTMLCodeBlockElement.js

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,12 @@ var _codeWrap = /*#__PURE__*/new WeakMap();
5353

5454
var _value = /*#__PURE__*/new WeakMap();
5555

56+
var _label = /*#__PURE__*/new WeakMap();
57+
5658
var _language = /*#__PURE__*/new WeakMap();
5759

60+
var _controls = /*#__PURE__*/new WeakMap();
61+
5862
var _render = /*#__PURE__*/new WeakSet();
5963

6064
var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
@@ -97,18 +101,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
97101
value: ''
98102
});
99103

104+
_label.set(_assertThisInitialized(_this), {
105+
writable: true,
106+
value: ''
107+
});
108+
100109
_language.set(_assertThisInitialized(_this), {
101110
writable: true,
102111
value: ''
103112
});
104113

114+
_controls.set(_assertThisInitialized(_this), {
115+
writable: true,
116+
value: false
117+
});
118+
105119
var mkslot = function mkslot(name) {
106120
var slot = document.createElement('slot');
107121
slot.name = name;
108122
return slot;
109123
};
110124

111-
var slots = [mkslot('code')];
125+
var slots = [mkslot('label'), mkslot('copy-button'), mkslot('code')];
112126
var pre = document.createElement('pre');
113127
var code = document.createElement('code');
114128
code.tabIndex = 0;
@@ -119,8 +133,12 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
119133

120134
_classPrivateFieldSet(_assertThisInitialized(_this), _value, (_this.textContent || '').replace(/^\n/, ''));
121135

136+
_classPrivateFieldSet(_assertThisInitialized(_this), _label, _this.getAttribute('label') || '');
137+
122138
_classPrivateFieldSet(_assertThisInitialized(_this), _language, _this.getAttribute('language') || '');
123139

140+
_classPrivateFieldSet(_assertThisInitialized(_this), _controls, _this.getAttribute('controls') !== null);
141+
124142
_classPrivateFieldSet(_assertThisInitialized(_this), _shadowRoot, _this.attachShadow({
125143
mode: 'closed'
126144
}));
@@ -146,6 +164,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
146164

147165
_classPrivateMethodGet(this, _render, _render2).call(this);
148166
}
167+
/**
168+
* The name of code block
169+
* @returns - The value of the label attribute
170+
*/
171+
172+
}, {
173+
key: "label",
174+
get: function get() {
175+
return _classPrivateFieldGet(this, _label);
176+
},
177+
set: function set(name) {
178+
// TODO: Accessiblity Treeにアクセシブルネームを提供する
179+
_classPrivateFieldSet(this, _label, name || '');
180+
181+
if (_classPrivateFieldGet(this, _label)) {
182+
this.setAttribute('label', name);
183+
} else {
184+
this.removeAttribute('label');
185+
}
186+
187+
_classPrivateMethodGet(this, _render, _render2).call(this);
188+
}
149189
/**
150190
* Language Mode
151191
* @returns - The value of the language attribute
@@ -165,6 +205,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
165205
this.removeAttribute('language');
166206
}
167207

208+
_classPrivateMethodGet(this, _render, _render2).call(this);
209+
}
210+
/**
211+
* Flag to display the UI
212+
* @returns - With or without controls attribute
213+
* */
214+
215+
}, {
216+
key: "controls",
217+
get: function get() {
218+
return _classPrivateFieldGet(this, _controls);
219+
},
220+
set: function set(flag) {
221+
// TODO: コピーボタン、ラベルの表示切り替え
222+
_classPrivateFieldSet(this, _controls, flag);
223+
224+
if (_classPrivateFieldGet(this, _controls)) {
225+
this.setAttribute('controls', '');
226+
} else {
227+
this.removeAttribute('controls');
228+
}
229+
168230
_classPrivateMethodGet(this, _render, _render2).call(this);
169231
}
170232
}, {
@@ -177,9 +239,15 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
177239

178240

179241
switch (attrName) {
242+
// string
243+
case 'label':
180244
case 'language':
181245
this[attrName] = newValue || '';
182246
break;
247+
// boolean
248+
249+
case 'controls':
250+
this[attrName] = typeof newValue === 'string';
183251
}
184252
}
185253
}, {
@@ -220,8 +288,7 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
220288
}, {
221289
key: "observedAttributes",
222290
get: function get() {
223-
return ['language' // 'controls',
224-
];
291+
return ['label', 'language', 'controls'];
225292
}
226293
}]);
227294

lib/html-code-block-element.all.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/html-code-block-element.common.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)