@politiet/sheriff-web-components 2.6.0 → 2.7.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.
- package/custom-elements.json +1284 -829
- package/dist/frameworks/preact.d.ts +4 -1
- package/dist/frameworks/preact.d.ts.map +1 -1
- package/dist/frameworks/react.d.ts +13 -10
- package/dist/frameworks/react.d.ts.map +1 -1
- package/dist/frameworks/solidjs.d.ts +1 -0
- package/dist/frameworks/solidjs.d.ts.map +1 -1
- package/dist/frameworks/svelte.d.ts +1 -0
- package/dist/frameworks/svelte.d.ts.map +1 -1
- package/dist/frameworks/vue.d.ts +1 -0
- package/dist/frameworks/vue.d.ts.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mixins/index.d.ts +3 -0
- package/dist/mixins/index.d.ts.map +1 -1
- package/dist/mixins/index.js +3 -0
- package/dist/mixins/index.js.map +1 -1
- package/dist/mixins/sds-dialog-target-mixin.d.ts +11 -0
- package/dist/mixins/sds-dialog-target-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-dialog-target-mixin.js +95 -0
- package/dist/mixins/sds-dialog-target-mixin.js.map +1 -0
- package/dist/mixins/sds-form-control-mixin.d.ts +19 -0
- package/dist/mixins/sds-form-control-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-form-control-mixin.js +40 -0
- package/dist/mixins/sds-form-control-mixin.js.map +1 -0
- package/dist/react-wrappers/SDSDetailsGroupWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSDetailsGroupWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSDetailsGroupWrapper.js +9 -0
- package/dist/react-wrappers/SDSDetailsGroupWrapper.js.map +1 -0
- package/dist/react-wrappers/SDSDetailsWrapper.d.ts.map +1 -1
- package/dist/react-wrappers/SDSDetailsWrapper.js +1 -1
- package/dist/react-wrappers/SDSDetailsWrapper.js.map +1 -1
- package/dist/react-wrappers/index.d.ts +1 -0
- package/dist/react-wrappers/index.d.ts.map +1 -1
- package/dist/react-wrappers/index.js +1 -0
- package/dist/react-wrappers/index.js.map +1 -1
- package/dist/sds-alert/sds-alert.component.js +1 -1
- package/dist/sds-alert/sds-alert.component.js.map +1 -1
- package/dist/sds-button/sds-button.component.d.ts +4 -1
- package/dist/sds-button/sds-button.component.d.ts.map +1 -1
- package/dist/sds-button/sds-button.component.js +18 -3
- package/dist/sds-button/sds-button.component.js.map +1 -1
- package/dist/sds-button/sds-button.spec.js +1 -1
- package/dist/sds-button/sds-button.spec.js.map +1 -1
- package/dist/sds-card/sds-card.js +1 -1
- package/dist/sds-card/sds-card.js.map +1 -1
- package/dist/sds-card/sds-card.styles.d.ts.map +1 -1
- package/dist/sds-card/sds-card.styles.js +24 -21
- package/dist/sds-card/sds-card.styles.js.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.d.ts +8 -16
- package/dist/sds-checkbox/sds-checkbox.d.ts.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.js +43 -53
- package/dist/sds-checkbox/sds-checkbox.js.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.styles.d.ts.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.styles.js +1 -0
- package/dist/sds-checkbox/sds-checkbox.styles.js.map +1 -1
- package/dist/sds-checkbox-group/sds-checkbox-group.d.ts.map +1 -1
- package/dist/sds-checkbox-group/sds-checkbox-group.js +5 -3
- package/dist/sds-checkbox-group/sds-checkbox-group.js.map +1 -1
- package/dist/sds-chip/sds-chip.d.ts +8 -14
- package/dist/sds-chip/sds-chip.d.ts.map +1 -1
- package/dist/sds-chip/sds-chip.js +45 -45
- package/dist/sds-chip/sds-chip.js.map +1 -1
- package/dist/sds-chip/sds-chip.styles.js +1 -1
- package/dist/sds-chip/sds-chip.styles.js.map +1 -1
- package/dist/sds-details/sds-details.d.ts +3 -2
- package/dist/sds-details/sds-details.d.ts.map +1 -1
- package/dist/sds-details/sds-details.js +11 -2
- package/dist/sds-details/sds-details.js.map +1 -1
- package/dist/sds-details/sds-details.styles.d.ts.map +1 -1
- package/dist/sds-details/sds-details.styles.js +10 -5
- package/dist/sds-details/sds-details.styles.js.map +1 -1
- package/dist/sds-details-group/sds-details-group.d.ts +24 -0
- package/dist/sds-details-group/sds-details-group.d.ts.map +1 -0
- package/dist/sds-details-group/sds-details-group.js +73 -0
- package/dist/sds-details-group/sds-details-group.js.map +1 -0
- package/dist/sds-details-group/sds-details-group.styles.d.ts +2 -0
- package/dist/sds-details-group/sds-details-group.styles.d.ts.map +1 -0
- package/dist/sds-details-group/sds-details-group.styles.js +30 -0
- package/dist/sds-details-group/sds-details-group.styles.js.map +1 -0
- package/dist/sds-dialog/sds-dialog.component.d.ts +56 -0
- package/dist/sds-dialog/sds-dialog.component.d.ts.map +1 -0
- package/dist/sds-dialog/sds-dialog.component.js +181 -0
- package/dist/sds-dialog/sds-dialog.component.js.map +1 -0
- package/dist/sds-dialog/sds-dialog.d.ts +2 -52
- package/dist/sds-dialog/sds-dialog.d.ts.map +1 -1
- package/dist/sds-dialog/sds-dialog.js +2 -163
- package/dist/sds-dialog/sds-dialog.js.map +1 -1
- package/dist/sds-dialog/sds-dialog.spec.d.ts +2 -0
- package/dist/sds-dialog/sds-dialog.spec.d.ts.map +1 -0
- package/dist/sds-dialog/sds-dialog.spec.js +50 -0
- package/dist/sds-dialog/sds-dialog.spec.js.map +1 -0
- package/dist/sds-dialog/sds-dialog.styles.d.ts.map +1 -1
- package/dist/sds-dialog/sds-dialog.styles.js +1 -3
- package/dist/sds-dialog/sds-dialog.styles.js.map +1 -1
- package/dist/sds-heading/sds-heading.styles.d.ts.map +1 -1
- package/dist/sds-heading/sds-heading.styles.js +8 -2
- package/dist/sds-heading/sds-heading.styles.js.map +1 -1
- package/dist/sds-process-step/sds-process-step.styles.d.ts.map +1 -1
- package/dist/sds-process-step/sds-process-step.styles.js +6 -2
- package/dist/sds-process-step/sds-process-step.styles.js.map +1 -1
- package/dist/sds-radio/sds-radio.d.ts +14 -17
- package/dist/sds-radio/sds-radio.d.ts.map +1 -1
- package/dist/sds-radio/sds-radio.js +48 -61
- package/dist/sds-radio/sds-radio.js.map +1 -1
- package/dist/sds-radio-group/sds-radio-group.d.ts.map +1 -1
- package/dist/sds-radio-group/sds-radio-group.js +5 -3
- package/dist/sds-radio-group/sds-radio-group.js.map +1 -1
- package/dist/sds-select/sds-select.component.d.ts +54 -0
- package/dist/sds-select/sds-select.component.d.ts.map +1 -0
- package/dist/sds-select/sds-select.component.js +292 -0
- package/dist/sds-select/sds-select.component.js.map +1 -0
- package/dist/sds-select/sds-select.d.ts +2 -61
- package/dist/sds-select/sds-select.d.ts.map +1 -1
- package/dist/sds-select/sds-select.js +2 -298
- package/dist/sds-select/sds-select.js.map +1 -1
- package/dist/sds-select/sds-select.styles.js +1 -1
- package/dist/sds-select/sds-select.styles.js.map +1 -1
- package/dist/sds-stepper/sds-stepper.d.ts +0 -1
- package/dist/sds-stepper/sds-stepper.d.ts.map +1 -1
- package/dist/sds-stepper/sds-stepper.js +2 -3
- package/dist/sds-stepper/sds-stepper.js.map +1 -1
- package/dist/sds-stepper/sds-stepper.styles.d.ts.map +1 -1
- package/dist/sds-stepper/sds-stepper.styles.js +2 -1
- package/dist/sds-stepper/sds-stepper.styles.js.map +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.styles.d.ts.map +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.styles.js +7 -5
- package/dist/sds-stepper-step/sds-stepper-step.styles.js.map +1 -1
- package/dist/sds-switch/sds-switch.d.ts +5 -14
- package/dist/sds-switch/sds-switch.d.ts.map +1 -1
- package/dist/sds-switch/sds-switch.js +13 -26
- package/dist/sds-switch/sds-switch.js.map +1 -1
- package/dist/sds-switch/sds-switch.styles.js +1 -1
- package/dist/sds-switch/sds-switch.styles.js.map +1 -1
- package/dist/sds-text/sds-text.styles.d.ts.map +1 -1
- package/dist/sds-text/sds-text.styles.js +193 -54
- package/dist/sds-text/sds-text.styles.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.d.ts +12 -21
- package/dist/sds-textarea/sds-textarea.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.js +10 -23
- package/dist/sds-textarea/sds-textarea.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.styles.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.styles.js +8 -5
- package/dist/sds-textarea/sds-textarea.styles.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.d.ts +11 -20
- package/dist/sds-textfield/sds-textfield.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.js +9 -23
- package/dist/sds-textfield/sds-textfield.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.styles.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.styles.js +5 -1
- package/dist/sds-textfield/sds-textfield.styles.js.map +1 -1
- package/dist/sheriff-web-components.js +409 -204
- package/package.json +6 -2
- package/web-types.json +1173 -830
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
import type { SDSFormControlAttributes } from '../mixins/sds-form-control-mixin';
|
|
3
|
+
import { SDS_SIZES } from '../types';
|
|
4
|
+
type SelectSize = Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;
|
|
5
|
+
export interface SDSSelectProps extends SDSFormControlAttributes {
|
|
6
|
+
'default-value'?: string;
|
|
7
|
+
'error-message'?: string;
|
|
8
|
+
'help-text'?: string;
|
|
9
|
+
label?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
size?: SelectSize;
|
|
12
|
+
value?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const SDSSelectComponent_base: import("../mixins/types").Constructable<import("../mixins/sds-delegate-interaction-mixin").DelegateInteractionMixinInterface> & import("../mixins/types").Constructable<import("../mixins/sds-event-dispatcher-mixin").SDSEventDispatcherMixinInterface> & import("../mixins/types").Constructable<import("../mixins/sds-form-control-mixin").SDSFormControlMixinInterface> & typeof LitElement;
|
|
15
|
+
export declare class SDSSelectComponent extends SDSSelectComponent_base {
|
|
16
|
+
static styles: import("lit").CSSResult[];
|
|
17
|
+
label?: SDSSelectProps['label'];
|
|
18
|
+
value?: SDSSelectProps['value'];
|
|
19
|
+
defaultValue?: SDSSelectProps['default-value'];
|
|
20
|
+
helpText?: SDSSelectProps['help-text'];
|
|
21
|
+
errorMessage?: SDSSelectProps['error-message'];
|
|
22
|
+
required: SDSSelectProps['required'];
|
|
23
|
+
size: SDSSelectProps['size'];
|
|
24
|
+
private control;
|
|
25
|
+
private _defaultValue;
|
|
26
|
+
private _lightDomObserver?;
|
|
27
|
+
private _pendingLightDomSync;
|
|
28
|
+
connectedCallback(): void;
|
|
29
|
+
disconnectedCallback(): void;
|
|
30
|
+
firstUpdated(): void;
|
|
31
|
+
updated(changed: Map<PropertyKey, unknown>): void;
|
|
32
|
+
private _setFormValue;
|
|
33
|
+
private _scheduleLightDomSync;
|
|
34
|
+
private _startObservingLightDom;
|
|
35
|
+
private _stopObservingLightDom;
|
|
36
|
+
/**
|
|
37
|
+
* Called whenever light DOM children change (options/optgroups/hr added/removed).
|
|
38
|
+
* slotchange won't fire for in-place mutations, so we also use a MutationObserver.
|
|
39
|
+
*/
|
|
40
|
+
private readonly _handleSlotChange;
|
|
41
|
+
private updateValidity;
|
|
42
|
+
private getLightDomSelectedValue;
|
|
43
|
+
formResetCallback(): void;
|
|
44
|
+
private readonly _handleChange;
|
|
45
|
+
private readonly _handleFocus;
|
|
46
|
+
private readonly _handleBlur;
|
|
47
|
+
private readonly _handleKeyDown;
|
|
48
|
+
private renderFromLightDom;
|
|
49
|
+
private renderOption;
|
|
50
|
+
private renderOptgroup;
|
|
51
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=sds-select.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sds-select.component.d.ts","sourceRoot":"","sources":["../../src/sds-select/sds-select.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAKhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,KAAK,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAEzD,MAAM,WAAW,cAAe,SAAQ,wBAAwB;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;;AAED,qBAAa,kBAAmB,SAAQ,uBAAqF;IAE5H,OAAgB,MAAM,4BAAY;IAGS,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAC1E,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAS;IAC9C,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAQ;IAE5D,OAAO,CAAC,OAAO,CAAqB;IAEvD,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,OAAO,CAAC,oBAAoB,CAAS;IAE5B,iBAAiB,IAAI,IAAI;IAczB,oBAAoB,IAAI,IAAI;IAK5B,YAAY;IAoBZ,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAYnD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,uBAAuB;IAoC/B,OAAO,CAAC,sBAAsB;IAM9B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAShC;IAEF,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,wBAAwB;IAOhC,iBAAiB;IAajB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAiB5B;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAI1B;IAEF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAS7B;IAGF,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,cAAc;IAQb,MAAM;CA8Cf"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, nothing } from 'lit';
|
|
8
|
+
import { property, query } from 'lit/decorators.js';
|
|
9
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
10
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
11
|
+
import { SDSDelegateInteractionMixin, SDSEventDispatcherMixin, SDSFormControlMixin } from '../mixins';
|
|
12
|
+
import { styles } from './sds-select.styles';
|
|
13
|
+
export class SDSSelectComponent extends SDSDelegateInteractionMixin(SDSEventDispatcherMixin(SDSFormControlMixin(LitElement))) {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.required = false;
|
|
17
|
+
this.size = 'md';
|
|
18
|
+
this._defaultValue = null;
|
|
19
|
+
this._pendingLightDomSync = false;
|
|
20
|
+
/**
|
|
21
|
+
* Called whenever light DOM children change (options/optgroups/hr added/removed).
|
|
22
|
+
* slotchange won't fire for in-place mutations, so we also use a MutationObserver.
|
|
23
|
+
*/
|
|
24
|
+
this._handleSlotChange = () => {
|
|
25
|
+
if (this.value == null) {
|
|
26
|
+
const selectedValue = this.getLightDomSelectedValue();
|
|
27
|
+
if (selectedValue != null) {
|
|
28
|
+
this.value = selectedValue;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
this._scheduleLightDomSync();
|
|
32
|
+
};
|
|
33
|
+
// Event handlers
|
|
34
|
+
this._handleChange = (event) => {
|
|
35
|
+
event.stopImmediatePropagation();
|
|
36
|
+
if (!(event.target instanceof HTMLSelectElement))
|
|
37
|
+
return;
|
|
38
|
+
if (this.disabled || this.readOnly) {
|
|
39
|
+
event.target.value = this.value ?? '';
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.value = event.target.value;
|
|
43
|
+
this._setFormValue(this.value);
|
|
44
|
+
this.updateValidity();
|
|
45
|
+
this.dispatchSheriffEvent('input');
|
|
46
|
+
this.dispatchSheriffEvent('change');
|
|
47
|
+
};
|
|
48
|
+
this._handleFocus = (event) => {
|
|
49
|
+
event.stopImmediatePropagation();
|
|
50
|
+
this.dispatchSheriffEvent('focus');
|
|
51
|
+
};
|
|
52
|
+
this._handleBlur = (event) => {
|
|
53
|
+
event.stopImmediatePropagation();
|
|
54
|
+
this.updateValidity();
|
|
55
|
+
this.dispatchSheriffEvent('blur');
|
|
56
|
+
};
|
|
57
|
+
this._handleKeyDown = (event) => {
|
|
58
|
+
if (!this.readOnly)
|
|
59
|
+
return;
|
|
60
|
+
const keysThatChange = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown', ' ', 'Enter']);
|
|
61
|
+
if (keysThatChange.has(event.key)) {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
event.stopImmediatePropagation();
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
connectedCallback() {
|
|
68
|
+
super.connectedCallback();
|
|
69
|
+
if (this.value == null) {
|
|
70
|
+
const selected = Array.from(this.querySelectorAll('option')).find((option) => option.hasAttribute('selected') || option.defaultSelected);
|
|
71
|
+
if (selected) {
|
|
72
|
+
this.value = selected.value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this._startObservingLightDom();
|
|
76
|
+
}
|
|
77
|
+
disconnectedCallback() {
|
|
78
|
+
this._stopObservingLightDom();
|
|
79
|
+
super.disconnectedCallback();
|
|
80
|
+
}
|
|
81
|
+
firstUpdated() {
|
|
82
|
+
// Let the native <select> decide first (covers <option selected>)
|
|
83
|
+
const controlValue = this.control?.value ?? '';
|
|
84
|
+
// Resolution order:
|
|
85
|
+
// 1. value (controlled)
|
|
86
|
+
// 2. default-value
|
|
87
|
+
// 3. native control value
|
|
88
|
+
this.value = this.value ?? this.defaultValue ?? controlValue;
|
|
89
|
+
// Sync native control
|
|
90
|
+
this.control.value = this.value ?? '';
|
|
91
|
+
// Store default for form reset
|
|
92
|
+
this._defaultValue = this.value ?? null;
|
|
93
|
+
this.internals.setFormValue(this._defaultValue);
|
|
94
|
+
this.updateValidity();
|
|
95
|
+
}
|
|
96
|
+
updated(changed) {
|
|
97
|
+
super.updated(changed);
|
|
98
|
+
if (!this.control)
|
|
99
|
+
return;
|
|
100
|
+
if (changed.has('value')) {
|
|
101
|
+
this.control.value = this.value ?? '';
|
|
102
|
+
this._setFormValue(this.value);
|
|
103
|
+
this.updateValidity();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
_setFormValue(value) {
|
|
107
|
+
this.internals.setFormValue(value == null ? null : value);
|
|
108
|
+
}
|
|
109
|
+
_scheduleLightDomSync() {
|
|
110
|
+
if (this._pendingLightDomSync)
|
|
111
|
+
return;
|
|
112
|
+
this._pendingLightDomSync = true;
|
|
113
|
+
queueMicrotask(() => {
|
|
114
|
+
this._pendingLightDomSync = false;
|
|
115
|
+
// If light DOM indicates a selected option, treat it as source of truth.
|
|
116
|
+
const selectedFromLightDom = this.getLightDomSelectedValue();
|
|
117
|
+
if (selectedFromLightDom !== undefined && selectedFromLightDom !== this.value) {
|
|
118
|
+
this.value = selectedFromLightDom;
|
|
119
|
+
}
|
|
120
|
+
this.requestUpdate();
|
|
121
|
+
this.updateComplete.then(() => {
|
|
122
|
+
if (!this.control)
|
|
123
|
+
return;
|
|
124
|
+
this.control.value = this.value ?? '';
|
|
125
|
+
this._setFormValue(this.value);
|
|
126
|
+
this.updateValidity();
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
_startObservingLightDom() {
|
|
131
|
+
if (this._lightDomObserver)
|
|
132
|
+
return;
|
|
133
|
+
this._lightDomObserver = new MutationObserver((mutations) => {
|
|
134
|
+
for (const m of mutations) {
|
|
135
|
+
if (m.type === 'childList') {
|
|
136
|
+
this._scheduleLightDomSync();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (m.type === 'characterData') {
|
|
140
|
+
this._scheduleLightDomSync();
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (m.type === 'attributes') {
|
|
144
|
+
const target = m.target;
|
|
145
|
+
if (!(target instanceof HTMLElement))
|
|
146
|
+
continue;
|
|
147
|
+
const tag = target.tagName;
|
|
148
|
+
if (tag === 'OPTION' || tag === 'OPTGROUP' || tag === 'HR') {
|
|
149
|
+
this._scheduleLightDomSync();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
this._lightDomObserver.observe(this, {
|
|
156
|
+
subtree: true,
|
|
157
|
+
childList: true,
|
|
158
|
+
attributes: true,
|
|
159
|
+
characterData: true,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
_stopObservingLightDom() {
|
|
163
|
+
this._lightDomObserver?.disconnect();
|
|
164
|
+
this._lightDomObserver = undefined;
|
|
165
|
+
this._pendingLightDomSync = false;
|
|
166
|
+
}
|
|
167
|
+
updateValidity() {
|
|
168
|
+
if (!this.control)
|
|
169
|
+
return;
|
|
170
|
+
if (this.control.checkValidity()) {
|
|
171
|
+
this.internals.setValidity({});
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.internals.setValidity({ customError: true }, this.control.validationMessage, this.control);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
getLightDomSelectedValue() {
|
|
178
|
+
// First selected option wins (matches typical native parsing behavior for single-select)
|
|
179
|
+
const selected = Array.from(this.querySelectorAll('option')).find((option) => option.hasAttribute('selected') || option.defaultSelected);
|
|
180
|
+
return selected?.value;
|
|
181
|
+
}
|
|
182
|
+
// Form-associated lifecycle
|
|
183
|
+
formResetCallback() {
|
|
184
|
+
this.internals.setFormValue(this._defaultValue);
|
|
185
|
+
const newValue = this._defaultValue ?? '';
|
|
186
|
+
if (this.control) {
|
|
187
|
+
this.control.value = newValue;
|
|
188
|
+
}
|
|
189
|
+
this.value = this._defaultValue ?? '';
|
|
190
|
+
this.updateValidity();
|
|
191
|
+
}
|
|
192
|
+
// Rendering helpers: mirror light DOM structure into the internal <select>
|
|
193
|
+
renderFromLightDom() {
|
|
194
|
+
const nodes = this.children ?? [];
|
|
195
|
+
const children = Array.from(nodes).filter((node) => node instanceof HTMLElement);
|
|
196
|
+
return children.map((node) => {
|
|
197
|
+
switch (node.tagName) {
|
|
198
|
+
case 'OPTION':
|
|
199
|
+
return this.renderOption(node);
|
|
200
|
+
case 'OPTGROUP':
|
|
201
|
+
return this.renderOptgroup(node);
|
|
202
|
+
case 'HR':
|
|
203
|
+
return html `<hr />`;
|
|
204
|
+
default:
|
|
205
|
+
return nothing;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
renderOption(option) {
|
|
210
|
+
const attrValue = option.getAttribute('value');
|
|
211
|
+
const optionValueForSelect = option.value;
|
|
212
|
+
const isSelected = this.value != null && optionValueForSelect === this.value;
|
|
213
|
+
return html ` <option value=${ifDefined(attrValue === null ? undefined : attrValue)} ?disabled=${option.disabled} .selected=${isSelected}>${option.text}</option> `;
|
|
214
|
+
}
|
|
215
|
+
renderOptgroup(group) {
|
|
216
|
+
const options = Array.from(group.querySelectorAll('option'));
|
|
217
|
+
return html ` <optgroup label=${ifDefined(group.label || undefined)} ?disabled=${group.disabled}>${options.map((opt) => this.renderOption(opt))}</optgroup> `;
|
|
218
|
+
}
|
|
219
|
+
// Render
|
|
220
|
+
// Hidden slot: holds light DOM <option>/<optgroup>/<hr> and triggers slotchange
|
|
221
|
+
render() {
|
|
222
|
+
const selectClasses = {
|
|
223
|
+
'sds-select': true,
|
|
224
|
+
'sds-select--error': Boolean(this.errorMessage),
|
|
225
|
+
};
|
|
226
|
+
const describedBy = [this.errorMessage ? 'error-message' : null, this.helpText ? 'help-text' : null].filter(Boolean).join(' ') || undefined;
|
|
227
|
+
return html `
|
|
228
|
+
<div class="${classMap(selectClasses)}">
|
|
229
|
+
${this.label
|
|
230
|
+
? html ` <label for="control" class="sds-select__label"> ${this.readOnly ? html `<sds-icon name="lock-material-filled" size="m"></sds-icon>` : nothing} ${this.label} </label> `
|
|
231
|
+
: nothing}
|
|
232
|
+
${this.helpText ? html `<p id="help-text" class="sds-select__help-text">${this.helpText}</p>` : nothing}
|
|
233
|
+
|
|
234
|
+
<div hidden>
|
|
235
|
+
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
236
|
+
</div>
|
|
237
|
+
|
|
238
|
+
<select
|
|
239
|
+
id="control"
|
|
240
|
+
class="sds-select__control"
|
|
241
|
+
name=${ifDefined(this.name)}
|
|
242
|
+
?disabled=${this.disabled}
|
|
243
|
+
?required=${this.required}
|
|
244
|
+
aria-readonly=${ifDefined(this.readOnly)}
|
|
245
|
+
aria-invalid=${this.errorMessage ? 'true' : 'false'}
|
|
246
|
+
aria-describedby=${ifDefined(describedBy)}
|
|
247
|
+
@keydown=${this._handleKeyDown}
|
|
248
|
+
@change=${this._handleChange}
|
|
249
|
+
@focus=${this._handleFocus}
|
|
250
|
+
@blur=${this._handleBlur}
|
|
251
|
+
>
|
|
252
|
+
${this.renderFromLightDom()}
|
|
253
|
+
</select>
|
|
254
|
+
|
|
255
|
+
${this.errorMessage
|
|
256
|
+
? html `
|
|
257
|
+
<sds-alert id="error-message" variant="secondary" data-palette="danger">
|
|
258
|
+
<p slot="message">${this.errorMessage}</p>
|
|
259
|
+
</sds-alert>
|
|
260
|
+
`
|
|
261
|
+
: nothing}
|
|
262
|
+
</div>
|
|
263
|
+
`;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Styling
|
|
267
|
+
SDSSelectComponent.styles = [styles];
|
|
268
|
+
__decorate([
|
|
269
|
+
property({ type: String, reflect: true })
|
|
270
|
+
], SDSSelectComponent.prototype, "label", void 0);
|
|
271
|
+
__decorate([
|
|
272
|
+
property({ type: String, attribute: false })
|
|
273
|
+
], SDSSelectComponent.prototype, "value", void 0);
|
|
274
|
+
__decorate([
|
|
275
|
+
property({ type: String, attribute: 'default-value' })
|
|
276
|
+
], SDSSelectComponent.prototype, "defaultValue", void 0);
|
|
277
|
+
__decorate([
|
|
278
|
+
property({ type: String, attribute: 'help-text', reflect: true })
|
|
279
|
+
], SDSSelectComponent.prototype, "helpText", void 0);
|
|
280
|
+
__decorate([
|
|
281
|
+
property({ type: String, attribute: 'error-message', reflect: true })
|
|
282
|
+
], SDSSelectComponent.prototype, "errorMessage", void 0);
|
|
283
|
+
__decorate([
|
|
284
|
+
property({ type: Boolean, reflect: true })
|
|
285
|
+
], SDSSelectComponent.prototype, "required", void 0);
|
|
286
|
+
__decorate([
|
|
287
|
+
property({ type: String, reflect: true })
|
|
288
|
+
], SDSSelectComponent.prototype, "size", void 0);
|
|
289
|
+
__decorate([
|
|
290
|
+
query('#control')
|
|
291
|
+
], SDSSelectComponent.prototype, "control", void 0);
|
|
292
|
+
//# sourceMappingURL=sds-select.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sds-select.component.js","sourceRoot":"","sources":["../../src/sds-select/sds-select.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { SDSDelegateInteractionMixin, SDSEventDispatcherMixin, SDSFormControlMixin } from '../mixins';\nimport type { SDSFormControlAttributes } from '../mixins/sds-form-control-mixin';\nimport { SDS_SIZES } from '../types';\nimport { styles } from './sds-select.styles';\n\ntype SelectSize = Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;\n\nexport interface SDSSelectProps extends SDSFormControlAttributes {\n\t'default-value'?: string;\n\t'error-message'?: string;\n\t'help-text'?: string;\n\tlabel?: string;\n\trequired?: boolean;\n\tsize?: SelectSize;\n\tvalue?: string;\n}\n\nexport class SDSSelectComponent extends SDSDelegateInteractionMixin(SDSEventDispatcherMixin(SDSFormControlMixin(LitElement))) {\n\t// Styling\n\tstatic override styles = [styles];\n\n\t// Props\n\t@property({ type: String, reflect: true }) label?: SDSSelectProps['label'];\n\t@property({ type: String, attribute: false }) value?: SDSSelectProps['value'];\n\t@property({ type: String, attribute: 'default-value' }) defaultValue?: SDSSelectProps['default-value'];\n\t@property({ type: String, attribute: 'help-text', reflect: true }) helpText?: SDSSelectProps['help-text'];\n\t@property({ type: String, attribute: 'error-message', reflect: true }) errorMessage?: SDSSelectProps['error-message'];\n\t@property({ type: Boolean, reflect: true }) required: SDSSelectProps['required'] = false;\n\t@property({ type: String, reflect: true }) size: SDSSelectProps['size'] = 'md';\n\n\t@query('#control') private control!: HTMLSelectElement;\n\n\tprivate _defaultValue: string | null = null;\n\n\t// Observe in-place mutations to existing <option>/<optgroup> (text/attrs)\n\tprivate _lightDomObserver?: MutationObserver;\n\tprivate _pendingLightDomSync = false;\n\n\toverride connectedCallback(): void {\n\t\tsuper.connectedCallback();\n\n\t\tif (this.value == null) {\n\t\t\tconst selected = Array.from(this.querySelectorAll('option')).find((option) => option.hasAttribute('selected') || option.defaultSelected);\n\n\t\t\tif (selected) {\n\t\t\t\tthis.value = selected.value;\n\t\t\t}\n\t\t}\n\n\t\tthis._startObservingLightDom();\n\t}\n\n\toverride disconnectedCallback(): void {\n\t\tthis._stopObservingLightDom();\n\t\tsuper.disconnectedCallback();\n\t}\n\n\toverride firstUpdated() {\n\t\t// Let the native <select> decide first (covers <option selected>)\n\t\tconst controlValue = this.control?.value ?? '';\n\n\t\t// Resolution order:\n\t\t// 1. value (controlled)\n\t\t// 2. default-value\n\t\t// 3. native control value\n\t\tthis.value = this.value ?? this.defaultValue ?? controlValue;\n\n\t\t// Sync native control\n\t\tthis.control.value = this.value ?? '';\n\n\t\t// Store default for form reset\n\t\tthis._defaultValue = this.value ?? null;\n\n\t\tthis.internals.setFormValue(this._defaultValue);\n\t\tthis.updateValidity();\n\t}\n\n\toverride updated(changed: Map<PropertyKey, unknown>) {\n\t\tsuper.updated(changed);\n\n\t\tif (!this.control) return;\n\n\t\tif (changed.has('value')) {\n\t\t\tthis.control.value = this.value ?? '';\n\t\t\tthis._setFormValue(this.value);\n\t\t\tthis.updateValidity();\n\t\t}\n\t}\n\n\tprivate _setFormValue(value: string | undefined) {\n\t\tthis.internals.setFormValue(value == null ? null : value);\n\t}\n\n\tprivate _scheduleLightDomSync() {\n\t\tif (this._pendingLightDomSync) return;\n\t\tthis._pendingLightDomSync = true;\n\n\t\tqueueMicrotask(() => {\n\t\t\tthis._pendingLightDomSync = false;\n\n\t\t\t// If light DOM indicates a selected option, treat it as source of truth.\n\t\t\tconst selectedFromLightDom = this.getLightDomSelectedValue();\n\t\t\tif (selectedFromLightDom !== undefined && selectedFromLightDom !== this.value) {\n\t\t\t\tthis.value = selectedFromLightDom;\n\t\t\t}\n\n\t\t\tthis.requestUpdate();\n\n\t\t\tthis.updateComplete.then(() => {\n\t\t\t\tif (!this.control) return;\n\n\t\t\t\tthis.control.value = this.value ?? '';\n\n\t\t\t\tthis._setFormValue(this.value);\n\t\t\t\tthis.updateValidity();\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _startObservingLightDom() {\n\t\tif (this._lightDomObserver) return;\n\n\t\tthis._lightDomObserver = new MutationObserver((mutations) => {\n\t\t\tfor (const m of mutations) {\n\t\t\t\tif (m.type === 'childList') {\n\t\t\t\t\tthis._scheduleLightDomSync();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m.type === 'characterData') {\n\t\t\t\t\tthis._scheduleLightDomSync();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m.type === 'attributes') {\n\t\t\t\t\tconst target = m.target;\n\t\t\t\t\tif (!(target instanceof HTMLElement)) continue;\n\n\t\t\t\t\tconst tag = target.tagName;\n\t\t\t\t\tif (tag === 'OPTION' || tag === 'OPTGROUP' || tag === 'HR') {\n\t\t\t\t\t\tthis._scheduleLightDomSync();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._lightDomObserver.observe(this, {\n\t\t\tsubtree: true,\n\t\t\tchildList: true,\n\t\t\tattributes: true,\n\t\t\tcharacterData: true,\n\t\t});\n\t}\n\n\tprivate _stopObservingLightDom() {\n\t\tthis._lightDomObserver?.disconnect();\n\t\tthis._lightDomObserver = undefined;\n\t\tthis._pendingLightDomSync = false;\n\t}\n\n\t/**\n\t * Called whenever light DOM children change (options/optgroups/hr added/removed).\n\t * slotchange won't fire for in-place mutations, so we also use a MutationObserver.\n\t */\n\tprivate readonly _handleSlotChange = () => {\n\t\tif (this.value == null) {\n\t\t\tconst selectedValue = this.getLightDomSelectedValue();\n\t\t\tif (selectedValue != null) {\n\t\t\t\tthis.value = selectedValue;\n\t\t\t}\n\t\t}\n\n\t\tthis._scheduleLightDomSync();\n\t};\n\n\tprivate updateValidity() {\n\t\tif (!this.control) return;\n\n\t\tif (this.control.checkValidity()) {\n\t\t\tthis.internals.setValidity({});\n\t\t} else {\n\t\t\tthis.internals.setValidity({ customError: true }, this.control.validationMessage, this.control);\n\t\t}\n\t}\n\n\tprivate getLightDomSelectedValue(): string | undefined {\n\t\t// First selected option wins (matches typical native parsing behavior for single-select)\n\t\tconst selected = Array.from(this.querySelectorAll('option')).find((option) => option.hasAttribute('selected') || option.defaultSelected);\n\t\treturn selected?.value;\n\t}\n\n\t// Form-associated lifecycle\n\tformResetCallback() {\n\t\tthis.internals.setFormValue(this._defaultValue);\n\n\t\tconst newValue = this._defaultValue ?? '';\n\t\tif (this.control) {\n\t\t\tthis.control.value = newValue;\n\t\t}\n\t\tthis.value = this._defaultValue ?? '';\n\n\t\tthis.updateValidity();\n\t}\n\n\t// Event handlers\n\tprivate readonly _handleChange = (event: Event) => {\n\t\tevent.stopImmediatePropagation();\n\n\t\tif (!(event.target instanceof HTMLSelectElement)) return;\n\n\t\tif (this.disabled || this.readOnly) {\n\t\t\tevent.target.value = this.value ?? '';\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = event.target.value;\n\n\t\tthis._setFormValue(this.value);\n\t\tthis.updateValidity();\n\n\t\tthis.dispatchSheriffEvent('input');\n\t\tthis.dispatchSheriffEvent('change');\n\t};\n\n\tprivate readonly _handleFocus = (event: FocusEvent) => {\n\t\tevent.stopImmediatePropagation();\n\t\tthis.dispatchSheriffEvent('focus');\n\t};\n\n\tprivate readonly _handleBlur = (event: FocusEvent) => {\n\t\tevent.stopImmediatePropagation();\n\t\tthis.updateValidity();\n\t\tthis.dispatchSheriffEvent('blur');\n\t};\n\n\tprivate readonly _handleKeyDown = (event: KeyboardEvent) => {\n\t\tif (!this.readOnly) return;\n\n\t\tconst keysThatChange = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown', ' ', 'Enter']);\n\n\t\tif (keysThatChange.has(event.key)) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\t};\n\n\t// Rendering helpers: mirror light DOM structure into the internal <select>\n\tprivate renderFromLightDom() {\n\t\tconst nodes = this.children ?? [];\n\t\tconst children: HTMLElement[] = Array.from(nodes).filter((node): node is HTMLElement => node instanceof HTMLElement);\n\n\t\treturn children.map((node) => {\n\t\t\tswitch (node.tagName) {\n\t\t\t\tcase 'OPTION':\n\t\t\t\t\treturn this.renderOption(node as HTMLOptionElement);\n\t\t\t\tcase 'OPTGROUP':\n\t\t\t\t\treturn this.renderOptgroup(node as HTMLOptGroupElement);\n\t\t\t\tcase 'HR':\n\t\t\t\t\treturn html`<hr />`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn nothing;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate renderOption(option: HTMLOptionElement) {\n\t\tconst attrValue = option.getAttribute('value');\n\t\tconst optionValueForSelect = option.value;\n\t\tconst isSelected = this.value != null && optionValueForSelect === this.value;\n\n\t\treturn html` <option value=${ifDefined(attrValue === null ? undefined : attrValue)} ?disabled=${option.disabled} .selected=${isSelected}>${option.text}</option> `;\n\t}\n\n\tprivate renderOptgroup(group: HTMLOptGroupElement) {\n\t\tconst options = Array.from(group.querySelectorAll('option'));\n\n\t\treturn html` <optgroup label=${ifDefined(group.label || undefined)} ?disabled=${group.disabled}>${options.map((opt) => this.renderOption(opt))}</optgroup> `;\n\t}\n\n\t// Render\n\t// Hidden slot: holds light DOM <option>/<optgroup>/<hr> and triggers slotchange\n\toverride render() {\n\t\tconst selectClasses = {\n\t\t\t'sds-select': true,\n\t\t\t'sds-select--error': Boolean(this.errorMessage),\n\t\t};\n\n\t\tconst describedBy = [this.errorMessage ? 'error-message' : null, this.helpText ? 'help-text' : null].filter(Boolean).join(' ') || undefined;\n\n\t\treturn html`\n\t\t\t<div class=\"${classMap(selectClasses)}\">\n\t\t\t\t${this.label\n\t\t\t\t\t? html` <label for=\"control\" class=\"sds-select__label\"> ${this.readOnly ? html`<sds-icon name=\"lock-material-filled\" size=\"m\"></sds-icon>` : nothing} ${this.label} </label> `\n\t\t\t\t\t: nothing}\n\t\t\t\t${this.helpText ? html`<p id=\"help-text\" class=\"sds-select__help-text\">${this.helpText}</p>` : nothing}\n\n\t\t\t\t<div hidden>\n\t\t\t\t\t<slot @slotchange=${this._handleSlotChange}></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<select\n\t\t\t\t\tid=\"control\"\n\t\t\t\t\tclass=\"sds-select__control\"\n\t\t\t\t\tname=${ifDefined(this.name)}\n\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t?required=${this.required}\n\t\t\t\t\taria-readonly=${ifDefined(this.readOnly)}\n\t\t\t\t\taria-invalid=${this.errorMessage ? 'true' : 'false'}\n\t\t\t\t\taria-describedby=${ifDefined(describedBy)}\n\t\t\t\t\t@keydown=${this._handleKeyDown}\n\t\t\t\t\t@change=${this._handleChange}\n\t\t\t\t\t@focus=${this._handleFocus}\n\t\t\t\t\t@blur=${this._handleBlur}\n\t\t\t\t>\n\t\t\t\t\t${this.renderFromLightDom()}\n\t\t\t\t</select>\n\n\t\t\t\t${this.errorMessage\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<sds-alert id=\"error-message\" variant=\"secondary\" data-palette=\"danger\">\n\t\t\t\t\t\t\t\t<p slot=\"message\">${this.errorMessage}</p>\n\t\t\t\t\t\t\t</sds-alert>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t</div>\n\t\t`;\n\t}\n}\n"]}
|
|
@@ -1,70 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SDSSelectComponent } from './sds-select.component';
|
|
2
2
|
import '../sds-alert/sds-alert';
|
|
3
3
|
import '../sds-icon/sds-icon';
|
|
4
|
-
|
|
5
|
-
type SelectSize = Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;
|
|
6
|
-
export interface SDSSelectProps {
|
|
7
|
-
'error-message'?: string;
|
|
8
|
-
'help-text'?: string;
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
label?: string;
|
|
11
|
-
name?: string;
|
|
12
|
-
required?: boolean;
|
|
13
|
-
readonly?: boolean;
|
|
14
|
-
size?: SelectSize;
|
|
15
|
-
value?: string;
|
|
16
|
-
'default-value'?: string;
|
|
17
|
-
}
|
|
18
|
-
declare const SDSSelect_base: import("../mixins/types").Constructable<import("../mixins/sds-delegate-interaction-mixin").DelegateInteractionMixinInterface> & import("../mixins/types").Constructable<import("../mixins/sds-event-dispatcher-mixin").SDSEventDispatcherMixinInterface> & typeof LitElement;
|
|
19
|
-
export declare class SDSSelect extends SDSSelect_base {
|
|
20
|
-
static styles: import("lit").CSSResult[];
|
|
21
|
-
static formAssociated: boolean;
|
|
22
|
-
readonly internals: ElementInternals;
|
|
23
|
-
name?: SDSSelectProps['name'];
|
|
24
|
-
label?: SDSSelectProps['label'];
|
|
25
|
-
value?: SDSSelectProps['value'];
|
|
26
|
-
defaultValue?: SDSSelectProps['default-value'];
|
|
27
|
-
helpText?: SDSSelectProps['help-text'];
|
|
28
|
-
errorMessage?: SDSSelectProps['error-message'];
|
|
29
|
-
disabled: SDSSelectProps['disabled'];
|
|
30
|
-
required: SDSSelectProps['required'];
|
|
31
|
-
readOnly: SDSSelectProps['readonly'];
|
|
32
|
-
size: SDSSelectProps['size'];
|
|
33
|
-
private control;
|
|
34
|
-
private _defaultValue;
|
|
35
|
-
private _lightDomObserver?;
|
|
36
|
-
private _pendingLightDomSync;
|
|
37
|
-
static shadowRootOptions: ShadowRootInit;
|
|
38
|
-
constructor();
|
|
39
|
-
connectedCallback(): void;
|
|
40
|
-
disconnectedCallback(): void;
|
|
41
|
-
firstUpdated(): void;
|
|
42
|
-
updated(changed: Map<PropertyKey, unknown>): void;
|
|
43
|
-
private _setFormValue;
|
|
44
|
-
private _scheduleLightDomSync;
|
|
45
|
-
private _startObservingLightDom;
|
|
46
|
-
private _stopObservingLightDom;
|
|
47
|
-
/**
|
|
48
|
-
* Called whenever light DOM children change (options/optgroups/hr added/removed).
|
|
49
|
-
* slotchange won't fire for in-place mutations, so we also use a MutationObserver.
|
|
50
|
-
*/
|
|
51
|
-
private readonly _handleSlotChange;
|
|
52
|
-
private updateValidity;
|
|
53
|
-
private getLightDomSelectedValue;
|
|
54
|
-
formResetCallback(): void;
|
|
55
|
-
private readonly _handleChange;
|
|
56
|
-
private readonly _handleFocus;
|
|
57
|
-
private readonly _handleBlur;
|
|
58
|
-
private readonly _handleKeyDown;
|
|
59
|
-
private renderFromLightDom;
|
|
60
|
-
private renderOption;
|
|
61
|
-
private renderOptgroup;
|
|
62
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
4
|
+
export declare class SDSSelect extends SDSSelectComponent {
|
|
63
5
|
}
|
|
64
6
|
declare global {
|
|
65
7
|
interface HTMLElementTagNameMap {
|
|
66
8
|
'sds-select': SDSSelect;
|
|
67
9
|
}
|
|
68
10
|
}
|
|
69
|
-
export {};
|
|
70
11
|
//# sourceMappingURL=sds-select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-select.d.ts","sourceRoot":"","sources":["../../src/sds-select/sds-select.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sds-select.d.ts","sourceRoot":"","sources":["../../src/sds-select/sds-select.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,wBAAwB,CAAC;AAChC,OAAO,sBAAsB,CAAC;AAE9B,qBACa,SAAU,SAAQ,kBAAkB;CAAG;AAEpD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,YAAY,EAAE,SAAS,CAAC;KACxB;CACD"}
|