@brightspace-ui/core 3.45.0 → 3.46.0
Sign up to get free protection for your applications and to get access to all the features.
- package/components/inputs/demo/input-date.html +0 -7
- package/components/inputs/demo/input-number.html +2 -0
- package/components/inputs/docs/input-date-time.md +0 -1
- package/components/inputs/input-date.js +1 -12
- package/components/inputs/input-number.js +20 -4
- package/custom-elements.json +0 -13
- package/package.json +2 -2
@@ -47,13 +47,6 @@
|
|
47
47
|
</template>
|
48
48
|
</d2l-demo-snippet>
|
49
49
|
|
50
|
-
<h2>Empty Text</h2>
|
51
|
-
<d2l-demo-snippet>
|
52
|
-
<template>
|
53
|
-
<d2l-input-date label="Reminder Date" empty-text="No reminder date ever entered"></d2l-input-date>
|
54
|
-
</template>
|
55
|
-
</d2l-demo-snippet>
|
56
|
-
|
57
50
|
<h2>Required</h2>
|
58
51
|
<d2l-demo-snippet>
|
59
52
|
<template>
|
@@ -5,7 +5,9 @@
|
|
5
5
|
<meta charset="UTF-8">
|
6
6
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
7
7
|
<script type="module">
|
8
|
+
import '../../button/button-icon.js';
|
8
9
|
import '../../demo/demo-page.js';
|
10
|
+
import '../../icons/icon.js';
|
9
11
|
import '../input-number.js';
|
10
12
|
</script>
|
11
13
|
</head>
|
@@ -47,7 +47,6 @@ Note: All `*value` properties should be in ISO 8601 calendar date format (`YYYY-
|
|
47
47
|
|--|--|--|
|
48
48
|
| `label` | String, **required** | Accessible label for the input |
|
49
49
|
| `disabled` | Boolean | Disables the input |
|
50
|
-
| `empty-text` | String | Text to reassure users that they can choose not to provide a value in this field (usually not necessary) |
|
51
50
|
| `label-hidden` | Boolean | Hides the label visually (moves it to the input's `aria-label` attribute) |
|
52
51
|
| `labelled-by` | String | HTML id of an element in the same shadow root which acts as the input's label |
|
53
52
|
| `max-value` | String | Maximum valid date that could be selected by a user. |
|
@@ -38,11 +38,6 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
38
38
|
* @type {boolean}
|
39
39
|
*/
|
40
40
|
disabled: { type: Boolean },
|
41
|
-
/**
|
42
|
-
* ADVANCED: Text that appears as a placeholder in the input to reassure users that they can choose not to provide a value (usually not necessary)
|
43
|
-
* @type {string}
|
44
|
-
*/
|
45
|
-
emptyText: { type: String, attribute: 'empty-text' },
|
46
41
|
/**
|
47
42
|
* @ignore
|
48
43
|
* Optionally add a 'Now' button to be used in date-time pickers only.
|
@@ -149,7 +144,6 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
149
144
|
super();
|
150
145
|
|
151
146
|
this.disabled = false;
|
152
|
-
this.emptyText = '';
|
153
147
|
/** @ignore */
|
154
148
|
this.hasNow = false;
|
155
149
|
this.labelHidden = false;
|
@@ -224,8 +218,6 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
224
218
|
this.updateComplete.then(() => tryUpdateHiddenContentWidth());
|
225
219
|
});
|
226
220
|
|
227
|
-
this._formattedValue = this.emptyText ? this.emptyText : '';
|
228
|
-
|
229
221
|
await (document.fonts ? document.fonts.ready : Promise.resolve());
|
230
222
|
|
231
223
|
// resize observer needed to handle case where it's initially hidden
|
@@ -283,7 +275,6 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
283
275
|
<div aria-hidden="true" class="d2l-input-date-hidden-text">
|
284
276
|
<div>${formattedWideDate}</div>
|
285
277
|
<div>${shortDateFormat}</div>
|
286
|
-
<div>${this.emptyText}</div>
|
287
278
|
</div>
|
288
279
|
${errorTooltip}
|
289
280
|
<d2l-dropdown ?disabled="${this.disabled || this.skeleton}" no-auto-open ?prefer-fixed-positioning="${this.preferFixedPositioning}">
|
@@ -294,7 +285,6 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
294
285
|
@change="${this._handleChange}"
|
295
286
|
class="d2l-dropdown-opener vdiff-target"
|
296
287
|
instructions="${ifDefined((this._showInfoTooltip && !errorTooltip && !this.invalid && this.childErrors.size === 0 && this._inputTextFocusShowTooltip) ? this.localize(`${this._namespace}.openInstructions`, { format: shortDateFormat }) : undefined)}"
|
297
|
-
description="${ifDefined(this.emptyText ? this.emptyText : undefined)}"
|
298
288
|
?disabled="${this.disabled}"
|
299
289
|
@focus="${this._handleInputTextFocus}"
|
300
290
|
@keydown="${this._handleKeydown}"
|
@@ -361,7 +351,6 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
361
351
|
|
362
352
|
_handleBlur() {
|
363
353
|
this._showInfoTooltip = true;
|
364
|
-
this._setFormattedValue(); // needed for case with empty text click on input-text then blur
|
365
354
|
this.requestValidate(true);
|
366
355
|
}
|
367
356
|
|
@@ -528,7 +517,7 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
|
|
528
517
|
}
|
529
518
|
|
530
519
|
_setFormattedValue() {
|
531
|
-
this._formattedValue = this._shownValue ? formatISODateInUserCalDescriptor(this._shownValue) :
|
520
|
+
this._formattedValue = this._shownValue ? formatISODateInUserCalDescriptor(this._shownValue) : '';
|
532
521
|
}
|
533
522
|
|
534
523
|
async _updateValueDispatchEvent(dateInISO, setToNow) {
|
@@ -8,6 +8,7 @@ import { ifDefined } from 'lit/directives/if-defined.js';
|
|
8
8
|
import { LabelledMixin } from '../../mixins/labelled/labelled-mixin.js';
|
9
9
|
import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
|
10
10
|
import { SkeletonMixin } from '../skeleton/skeleton-mixin.js';
|
11
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
11
12
|
|
12
13
|
const HINT_TYPES = {
|
13
14
|
NONE: 0,
|
@@ -178,8 +179,9 @@ class InputNumber extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixi
|
|
178
179
|
* @ignore
|
179
180
|
*/
|
180
181
|
valueTrailingZeroes: { type: String, attribute: 'value-trailing-zeroes' },
|
181
|
-
|
182
|
-
|
182
|
+
_afterSlotWidth: { state: true },
|
183
|
+
_hintType: { state: true },
|
184
|
+
_formattedValue: { state: true }
|
183
185
|
};
|
184
186
|
}
|
185
187
|
|
@@ -218,6 +220,7 @@ class InputNumber extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixi
|
|
218
220
|
this._trailingZeroes = false;
|
219
221
|
this._valueTrailingZeroes = '';
|
220
222
|
this._descriptor = getNumberDescriptor();
|
223
|
+
this._afterSlotWidth = 0;
|
221
224
|
}
|
222
225
|
|
223
226
|
get maxFractionDigits() {
|
@@ -337,6 +340,11 @@ class InputNumber extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixi
|
|
337
340
|
|
338
341
|
render() {
|
339
342
|
const valueAlign = (this.valueAlign === 'end') ? 'end' : 'start';
|
343
|
+
const hasRelativeInputWidth = this.inputWidth.includes('%');
|
344
|
+
const inputWidthStyle = {
|
345
|
+
width : '100%',
|
346
|
+
maxWidth: `calc(${this.inputWidth} + ${this._afterSlotWidth}px)`
|
347
|
+
};
|
340
348
|
return html`
|
341
349
|
<d2l-input-text
|
342
350
|
autocomplete="${ifDefined(this.autocomplete)}"
|
@@ -351,7 +359,7 @@ class InputNumber extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixi
|
|
351
359
|
.forceInvalid="${this.invalid}"
|
352
360
|
?hide-invalid-icon="${this.hideInvalidIcon}"
|
353
361
|
id="${this._inputId}"
|
354
|
-
input-width="${this.inputWidth}"
|
362
|
+
input-width="${hasRelativeInputWidth ? 'none' : this.inputWidth}"
|
355
363
|
@invalid-change="${this._handleInvalidChange}"
|
356
364
|
label="${ifDefined(this.label)}"
|
357
365
|
?label-hidden="${this.labelHidden || this.labelledBy}"
|
@@ -360,13 +368,14 @@ class InputNumber extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixi
|
|
360
368
|
placeholder="${ifDefined(this.placeholder)}"
|
361
369
|
?required="${this.required}"
|
362
370
|
?skeleton="${this.skeleton}"
|
371
|
+
style="${ifDefined(hasRelativeInputWidth ? styleMap(inputWidthStyle) : undefined)}"
|
363
372
|
unit="${ifDefined(this.unit)}"
|
364
373
|
unit-label="${ifDefined(this.unitLabel)}"
|
365
374
|
.value="${this._formattedValue}"
|
366
375
|
value-align="${valueAlign}">
|
367
376
|
<slot slot="left" name="left"></slot>
|
368
377
|
<slot slot="right" name="right"></slot>
|
369
|
-
<slot slot="after" name="after"></slot>
|
378
|
+
<slot slot="after" name="after" @slotchange=${this._handleAfterSlotChange}></slot>
|
370
379
|
<slot slot="inline-help" name="inline-help"></slot>
|
371
380
|
</d2l-input-text>
|
372
381
|
${this._getTooltip()}
|
@@ -439,6 +448,13 @@ class InputNumber extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixi
|
|
439
448
|
}
|
440
449
|
}
|
441
450
|
|
451
|
+
async _handleAfterSlotChange(e) {
|
452
|
+
const nodes = e.target.assignedNodes();
|
453
|
+
const inputTextElem = this.shadowRoot.querySelector('d2l-input-text');
|
454
|
+
await inputTextElem.updateComplete;
|
455
|
+
this._afterSlotWidth = nodes.reduce((width, ele) => width + ele.clientWidth, 0);
|
456
|
+
}
|
457
|
+
|
442
458
|
_handleBlur() {
|
443
459
|
this._hintType = HINT_TYPES.NONE;
|
444
460
|
}
|
package/custom-elements.json
CHANGED
@@ -5961,12 +5961,6 @@
|
|
5961
5961
|
"type": "boolean",
|
5962
5962
|
"default": "false"
|
5963
5963
|
},
|
5964
|
-
{
|
5965
|
-
"name": "empty-text",
|
5966
|
-
"description": "ADVANCED: Text that appears as a placeholder in the input to reassure users that they can choose not to provide a value (usually not necessary)",
|
5967
|
-
"type": "string",
|
5968
|
-
"default": "\"\""
|
5969
|
-
},
|
5970
5964
|
{
|
5971
5965
|
"name": "label-hidden",
|
5972
5966
|
"description": "Hides the label visually. Hidden labels are still read by screen readers so make sure to set an appropriate label.",
|
@@ -6032,13 +6026,6 @@
|
|
6032
6026
|
"type": "boolean",
|
6033
6027
|
"default": "false"
|
6034
6028
|
},
|
6035
|
-
{
|
6036
|
-
"name": "emptyText",
|
6037
|
-
"attribute": "empty-text",
|
6038
|
-
"description": "ADVANCED: Text that appears as a placeholder in the input to reassure users that they can choose not to provide a value (usually not necessary)",
|
6039
|
-
"type": "string",
|
6040
|
-
"default": "\"\""
|
6041
|
-
},
|
6042
6029
|
{
|
6043
6030
|
"name": "labelHidden",
|
6044
6031
|
"attribute": "label-hidden",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@brightspace-ui/core",
|
3
|
-
"version": "3.
|
3
|
+
"version": "3.46.0",
|
4
4
|
"description": "A collection of accessible, free, open-source web components for building Brightspace applications",
|
5
5
|
"type": "module",
|
6
6
|
"repository": "https://github.com/BrightspaceUI/core.git",
|
@@ -49,7 +49,7 @@
|
|
49
49
|
"@brightspace-ui/testing": "^1",
|
50
50
|
"@rollup/plugin-dynamic-import-vars": "^2",
|
51
51
|
"@rollup/plugin-node-resolve": "^15",
|
52
|
-
"@rollup/plugin-replace": "^
|
52
|
+
"@rollup/plugin-replace": "^6",
|
53
53
|
"@web/dev-server": "^0.4",
|
54
54
|
"chalk": "^5",
|
55
55
|
"eslint": "^8",
|