@politiet/sheriff-web-components 2.5.0 → 2.6.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 +529 -304
- package/dist/frameworks/preact.d.ts +12 -3
- package/dist/frameworks/preact.d.ts.map +1 -1
- package/dist/frameworks/react.d.ts +12 -3
- package/dist/frameworks/react.d.ts.map +1 -1
- package/dist/frameworks/solidjs.d.ts +3 -0
- package/dist/frameworks/solidjs.d.ts.map +1 -1
- package/dist/frameworks/svelte.d.ts +3 -0
- package/dist/frameworks/svelte.d.ts.map +1 -1
- package/dist/frameworks/vue.d.ts +3 -0
- package/dist/frameworks/vue.d.ts.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mixins/index.d.ts +3 -0
- package/dist/mixins/index.d.ts.map +1 -0
- package/dist/mixins/index.js +3 -0
- package/dist/mixins/index.js.map +1 -0
- package/dist/mixins/sds-delegate-interaction-mixin.d.ts +27 -0
- package/dist/mixins/sds-delegate-interaction-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-delegate-interaction-mixin.js +29 -0
- package/dist/mixins/sds-delegate-interaction-mixin.js.map +1 -0
- package/dist/mixins/sds-event-dispatcher-mixin.d.ts +3 -3
- package/dist/mixins/sds-event-dispatcher-mixin.d.ts.map +1 -1
- package/dist/mixins/sds-event-dispatcher-mixin.js +58 -1
- package/dist/mixins/sds-event-dispatcher-mixin.js.map +1 -1
- package/dist/mixins/sds-popover-target-mixin.d.ts +8 -0
- package/dist/mixins/sds-popover-target-mixin.d.ts.map +1 -0
- package/dist/mixins/sds-popover-target-mixin.js +77 -0
- package/dist/mixins/sds-popover-target-mixin.js.map +1 -0
- package/dist/mixins/types.d.ts +2 -0
- package/dist/mixins/types.d.ts.map +1 -0
- package/dist/mixins/types.js +2 -0
- package/dist/mixins/types.js.map +1 -0
- package/dist/react-wrappers/SDSPopoverWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSPopoverWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSPopoverWrapper.js +10 -0
- package/dist/react-wrappers/SDSPopoverWrapper.js.map +1 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.js +10 -0
- package/dist/react-wrappers/SDSProcessStepWrapper.js.map +1 -0
- package/dist/react-wrappers/SDSProcessWrapper.d.ts +3 -0
- package/dist/react-wrappers/SDSProcessWrapper.d.ts.map +1 -0
- package/dist/react-wrappers/SDSProcessWrapper.js +10 -0
- package/dist/react-wrappers/SDSProcessWrapper.js.map +1 -0
- package/dist/react-wrappers/SDSTextFieldWrapper.d.ts +2 -0
- package/dist/react-wrappers/SDSTextFieldWrapper.d.ts.map +1 -1
- package/dist/react-wrappers/SDSTextFieldWrapper.js +1 -0
- package/dist/react-wrappers/SDSTextFieldWrapper.js.map +1 -1
- package/dist/react-wrappers/index.d.ts +3 -0
- package/dist/react-wrappers/index.d.ts.map +1 -1
- package/dist/react-wrappers/index.js +3 -0
- package/dist/react-wrappers/index.js.map +1 -1
- package/dist/sds-alert/sds-alert.component.d.ts +2 -1
- package/dist/sds-alert/sds-alert.component.d.ts.map +1 -1
- package/dist/sds-alert/sds-alert.component.js +3 -5
- package/dist/sds-alert/sds-alert.component.js.map +1 -1
- package/dist/sds-button/sds-button.component.d.ts +5 -4
- package/dist/sds-button/sds-button.component.d.ts.map +1 -1
- package/dist/sds-button/sds-button.component.js +20 -30
- package/dist/sds-button/sds-button.component.js.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.d.ts +2 -4
- package/dist/sds-checkbox/sds-checkbox.d.ts.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.js +5 -16
- package/dist/sds-checkbox/sds-checkbox.js.map +1 -1
- package/dist/sds-checkbox-group/sds-checkbox-group.d.ts +2 -1
- package/dist/sds-checkbox-group/sds-checkbox-group.d.ts.map +1 -1
- package/dist/sds-checkbox-group/sds-checkbox-group.js +3 -5
- package/dist/sds-checkbox-group/sds-checkbox-group.js.map +1 -1
- package/dist/sds-chip/sds-chip.d.ts +14 -12
- package/dist/sds-chip/sds-chip.d.ts.map +1 -1
- package/dist/sds-chip/sds-chip.js +29 -33
- package/dist/sds-chip/sds-chip.js.map +1 -1
- package/dist/sds-details/sds-details.d.ts +3 -1
- package/dist/sds-details/sds-details.d.ts.map +1 -1
- package/dist/sds-details/sds-details.js +3 -6
- package/dist/sds-details/sds-details.js.map +1 -1
- package/dist/sds-dialog/sds-dialog.d.ts +5 -1
- package/dist/sds-dialog/sds-dialog.d.ts.map +1 -1
- package/dist/sds-dialog/sds-dialog.js +43 -27
- package/dist/sds-dialog/sds-dialog.js.map +1 -1
- package/dist/sds-dialog/sds-dialog.styles.d.ts.map +1 -1
- package/dist/sds-dialog/sds-dialog.styles.js +3 -1
- package/dist/sds-dialog/sds-dialog.styles.js.map +1 -1
- package/dist/sds-icon/sds-icon.styles.d.ts.map +1 -1
- package/dist/sds-icon/sds-icon.styles.js +2 -1
- package/dist/sds-icon/sds-icon.styles.js.map +1 -1
- package/dist/sds-notification/sds-notification.d.ts +2 -1
- package/dist/sds-notification/sds-notification.d.ts.map +1 -1
- package/dist/sds-notification/sds-notification.js +3 -5
- package/dist/sds-notification/sds-notification.js.map +1 -1
- package/dist/sds-popover/assets/popover-styles.d.ts +3 -0
- package/dist/sds-popover/assets/popover-styles.d.ts.map +1 -0
- package/dist/sds-popover/assets/popover-styles.js +3 -0
- package/dist/sds-popover/assets/popover-styles.js.map +1 -0
- package/dist/sds-popover/assets/positioning.js +1 -0
- package/dist/sds-popover/sds-popover.d.ts +25 -0
- package/dist/sds-popover/sds-popover.d.ts.map +1 -0
- package/dist/sds-popover/sds-popover.js +43 -0
- package/dist/sds-popover/sds-popover.js.map +1 -0
- package/dist/sds-popover/sds-popover.styles.d.ts +2 -0
- package/dist/sds-popover/sds-popover.styles.d.ts.map +1 -0
- package/dist/sds-popover/sds-popover.styles.js +52 -0
- package/dist/sds-popover/sds-popover.styles.js.map +1 -0
- package/dist/sds-process/sds-process.d.ts +20 -0
- package/dist/sds-process/sds-process.d.ts.map +1 -0
- package/dist/sds-process/sds-process.js +29 -0
- package/dist/sds-process/sds-process.js.map +1 -0
- package/dist/sds-process/sds-process.styles.d.ts +2 -0
- package/dist/sds-process/sds-process.styles.d.ts.map +1 -0
- package/dist/sds-process/sds-process.styles.js +8 -0
- package/dist/sds-process/sds-process.styles.js.map +1 -0
- package/dist/sds-process-step/sds-process-step.d.ts +29 -0
- package/dist/sds-process-step/sds-process-step.d.ts.map +1 -0
- package/dist/sds-process-step/sds-process-step.js +75 -0
- package/dist/sds-process-step/sds-process-step.js.map +1 -0
- package/dist/sds-process-step/sds-process-step.styles.d.ts +2 -0
- package/dist/sds-process-step/sds-process-step.styles.d.ts.map +1 -0
- package/dist/sds-process-step/sds-process-step.styles.js +143 -0
- package/dist/sds-process-step/sds-process-step.styles.js.map +1 -0
- package/dist/sds-radio/sds-radio.d.ts +2 -4
- package/dist/sds-radio/sds-radio.d.ts.map +1 -1
- package/dist/sds-radio/sds-radio.js +5 -16
- package/dist/sds-radio/sds-radio.js.map +1 -1
- package/dist/sds-radio-group/sds-radio-group.d.ts +2 -1
- package/dist/sds-radio-group/sds-radio-group.d.ts.map +1 -1
- package/dist/sds-radio-group/sds-radio-group.js +3 -2
- package/dist/sds-radio-group/sds-radio-group.js.map +1 -1
- package/dist/sds-select/sds-select.d.ts +2 -4
- package/dist/sds-select/sds-select.d.ts.map +1 -1
- package/dist/sds-select/sds-select.js +9 -21
- package/dist/sds-select/sds-select.js.map +1 -1
- package/dist/sds-stepper/sds-stepper.d.ts +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.d.ts +1 -1
- package/dist/sds-switch/sds-switch.d.ts +2 -1
- package/dist/sds-switch/sds-switch.d.ts.map +1 -1
- package/dist/sds-switch/sds-switch.js +5 -13
- package/dist/sds-switch/sds-switch.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.d.ts +3 -4
- package/dist/sds-textarea/sds-textarea.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.js +15 -17
- package/dist/sds-textarea/sds-textarea.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.d.ts +3 -4
- package/dist/sds-textfield/sds-textfield.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.js +28 -28
- package/dist/sds-textfield/sds-textfield.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.spec.js +3 -3
- package/dist/sds-textfield/sds-textfield.spec.js.map +1 -1
- package/dist/sheriff-web-components.js +326 -116
- package/dist/skill/SKILL.md +172 -0
- package/dist/skill/references/components.md +481 -0
- package/dist/skill/references/react-wrappers.md +66 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +47 -28
- package/web-types.json +825 -371
|
@@ -9,11 +9,12 @@ import { property, state, query } from 'lit/decorators.js';
|
|
|
9
9
|
import { classMap } from 'lit/directives/class-map.js';
|
|
10
10
|
import { guardedCustomElement } from '../utils/guarded-custom-element';
|
|
11
11
|
import { styles } from './sds-checkbox-group.styles';
|
|
12
|
+
import { SDSEventDispatcherMixin } from '../mixins/sds-event-dispatcher-mixin';
|
|
12
13
|
const updatableCheckboxProps = ['disabled', 'errorMessage', 'readOnly', 'size'];
|
|
13
14
|
import '../sds-checkbox/sds-checkbox';
|
|
14
15
|
import '../sds-icon/sds-icon';
|
|
15
16
|
import '../sds-alert/sds-alert';
|
|
16
|
-
let SDSCheckboxGroup = class SDSCheckboxGroup extends LitElement {
|
|
17
|
+
let SDSCheckboxGroup = class SDSCheckboxGroup extends SDSEventDispatcherMixin(LitElement) {
|
|
17
18
|
constructor() {
|
|
18
19
|
super(...arguments);
|
|
19
20
|
this.readOnly = false;
|
|
@@ -25,10 +26,7 @@ let SDSCheckboxGroup = class SDSCheckboxGroup extends LitElement {
|
|
|
25
26
|
const value = checkbox.value;
|
|
26
27
|
const isChecked = checkbox.checked;
|
|
27
28
|
this._selectedValues = isChecked ? [...this._selectedValues, value] : this._selectedValues.filter((v) => v !== value);
|
|
28
|
-
this.
|
|
29
|
-
bubbles: true,
|
|
30
|
-
composed: true,
|
|
31
|
-
}));
|
|
29
|
+
this.dispatchSheriffEvent('sds-update');
|
|
32
30
|
};
|
|
33
31
|
this._handleSlotChange = () => {
|
|
34
32
|
this._updateChildProps([...updatableCheckboxProps]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-checkbox-group.js","sourceRoot":"","sources":["../../src/sds-checkbox-group/sds-checkbox-group.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"sds-checkbox-group.js","sourceRoot":"","sources":["../../src/sds-checkbox-group/sds-checkbox-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-checkbox-group.styles';\nimport { SDS_SIZES } from '../types';\nimport { SDSCheckbox } from '../sds-checkbox/sds-checkbox';\nimport { SDSEventDispatcherMixin } from '../mixins/sds-event-dispatcher-mixin';\n\ntype CheckboxGroupSize = Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;\nconst updatableCheckboxProps = ['disabled', 'errorMessage', 'readOnly', 'size'] as const;\ntype UpdatableCheckboxProp = (typeof updatableCheckboxProps)[number];\n\nimport '../sds-checkbox/sds-checkbox';\nimport '../sds-icon/sds-icon';\nimport '../sds-alert/sds-alert';\n\n// Props Interface\nexport interface SDSCheckboxGroupProps {\n\tlegend?: string;\n\t'help-text'?: string;\n\t'error-message'?: string;\n\treadonly?: boolean;\n\tdisabled?: boolean;\n\tsize?: CheckboxGroupSize;\n}\n\n@guardedCustomElement('sds-checkbox-group')\nexport class SDSCheckboxGroup extends SDSEventDispatcherMixin(LitElement) {\n\t// Styling\n\tstatic override styles = [styles];\n\n\t// Props\n\t@property({ type: String, reflect: true }) legend?: string;\n\t@property({ type: String, attribute: 'help-text', reflect: true }) helpText?: string;\n\t@property({ type: String, attribute: 'error-message', reflect: true }) errorMessage?: string;\n\t@property({ type: Boolean, attribute: 'readonly', reflect: true }) readOnly: boolean = false;\n\t@property({ type: Boolean, reflect: true }) disabled = false;\n\t@property({ type: String, reflect: true }) size: CheckboxGroupSize = 'md';\n\n\t@state() private _selectedValues: string[] = [];\n\t@query('slot') private _slotElement!: HTMLSlotElement;\n\n\tprivate readonly _handleCheckboxChange = (event: CustomEvent): void => {\n\t\tconst checkbox = event.target as HTMLInputElement;\n\t\tconst value = checkbox.value;\n\t\tconst isChecked = checkbox.checked;\n\n\t\tthis._selectedValues = isChecked ? [...this._selectedValues, value] : this._selectedValues.filter((v) => v !== value);\n\n\t\tthis.dispatchSheriffEvent('sds-update');\n\t};\n\n\tprivate _handleSlotChange = () => {\n\t\tthis._updateChildProps([...updatableCheckboxProps]);\n\t};\n\n\tprivate _getChildCheckboxes(): SDSCheckbox[] {\n\t\treturn this._slotElement?.assignedElements({ flatten: true }).filter((element): element is SDSCheckbox => element.tagName === 'SDS-CHECKBOX') ?? [];\n\t}\n\n\tprivate _updateChildProps(changedAttributes: Array<UpdatableCheckboxProp>) {\n\t\tconst checkboxes = this._getChildCheckboxes();\n\n\t\tfor (const childCheckbox of checkboxes) {\n\t\t\tfor (const attribute of changedAttributes) {\n\t\t\t\tswitch (attribute) {\n\t\t\t\t\tcase 'readOnly':\n\t\t\t\t\t\tchildCheckbox.readOnly = this.readOnly;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'disabled':\n\t\t\t\t\t\tchildCheckbox.parentRequestDisabled = this.disabled;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'errorMessage':\n\t\t\t\t\t\tchildCheckbox.error = Boolean(this.errorMessage);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'size':\n\t\t\t\t\t\tchildCheckbox.size = this.size;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\toverride updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps);\n\n\t\tconst changedKeys = Array.from(changedProps.keys());\n\t\tif (changedKeys.includes('errorMessage') || changedKeys.includes('error-message')) {\n\t\t\tthis._updateChildProps(['errorMessage']);\n\t\t}\n\t}\n\n\toverride attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n\t\tsuper.attributeChangedCallback(name, _old, value);\n\n\t\t// DOM attribute for readonly has different casing than our types\n\t\tif (name === 'readonly') {\n\t\t\tthis._updateChildProps(['readOnly']);\n\t\t\treturn;\n\t\t}\n\n\t\tconst property = name as UpdatableCheckboxProp;\n\t\tif (updatableCheckboxProps.includes(property)) {\n\t\t\tthis._updateChildProps([property]);\n\t\t}\n\t}\n\n\tget value(): {} {\n\t\treturn { selectedValues: this._selectedValues };\n\t}\n\n\toverride render() {\n\t\tconst groupClasses = {\n\t\t\t'sds-checkbox-group': true,\n\t\t\t'sds-checkbox-group--disabled': this.disabled,\n\t\t\t'sds-checkbox-group--error': Boolean(this.errorMessage),\n\t\t};\n\n\t\treturn html`\n\t\t\t<fieldset class=\"${classMap(groupClasses)}\">\n\t\t\t\t${this.legend\n\t\t\t\t\t? html`<legend class=\"sds-checkbox-group__legend\">${this.readOnly ? html`<sds-icon name=\"lock-material-filled\" size=\"md\"></sds-icon>` : nothing}</sds-icon>${this.legend}</legend>`\n\t\t\t\t\t: nothing}\n\t\t\t\t${this.helpText ? html`<p class=\"sds-checkbox-group__help-text\">${this.helpText}</p>` : nothing}\n\t\t\t\t<div class=\"sds-checkbox-group__checkboxes\" @change=${this._handleCheckboxChange}>\n\t\t\t\t\t<slot @slotchange=${this._handleSlotChange}></slot>\n\t\t\t\t</div>\n\t\t\t\t${this.errorMessage ? html`<sds-alert variant=\"secondary\" data-palette=\"danger\"><p slot=\"message\">${this.errorMessage}</p></sds-alert>` : nothing}\n\t\t\t</fieldset>\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-checkbox-group': SDSCheckboxGroup;\n\t}\n}\n"]}
|
|
@@ -12,26 +12,28 @@ export interface SDSChipProps {
|
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
readonly?: boolean;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
declare const SDSChip_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;
|
|
16
|
+
export declare class SDSChip extends SDSChip_base {
|
|
16
17
|
static styles: import("lit").CSSResult[];
|
|
17
18
|
static formAssociated: boolean;
|
|
18
19
|
readonly internals: ElementInternals;
|
|
19
20
|
static shadowRootOptions: ShadowRootInit;
|
|
20
|
-
variant: ChipVariant;
|
|
21
|
-
size: ChipSize;
|
|
22
|
-
checked: boolean;
|
|
23
|
-
name?: string;
|
|
24
|
-
value?: string;
|
|
25
|
-
disabled: boolean;
|
|
26
|
-
readonly: boolean;
|
|
27
|
-
control: HTMLInputElement;
|
|
28
21
|
private _initialChecked;
|
|
22
|
+
private _readOnly;
|
|
23
|
+
control: HTMLInputElement;
|
|
24
|
+
variant: SDSChipProps['variant'];
|
|
25
|
+
size: SDSChipProps['size'];
|
|
26
|
+
checked: SDSChipProps['checked'];
|
|
27
|
+
name?: SDSChipProps['name'];
|
|
28
|
+
value?: SDSChipProps['value'];
|
|
29
|
+
disabled: SDSChipProps['disabled'];
|
|
30
|
+
get readOnly(): boolean;
|
|
31
|
+
set readOnly(value: SDSChipProps['readonly']);
|
|
32
|
+
/** @deprecated Use readOnly instead */
|
|
33
|
+
set readonly(value: SDSChipProps['readonly']);
|
|
29
34
|
constructor();
|
|
30
35
|
connectedCallback(): void;
|
|
31
36
|
formResetCallback(): void;
|
|
32
|
-
focus(): void;
|
|
33
|
-
blur(): void;
|
|
34
|
-
click(): void;
|
|
35
37
|
render(): import("lit-html").TemplateResult<1>;
|
|
36
38
|
private readonly _toggle;
|
|
37
39
|
private readonly _remove;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-chip.d.ts","sourceRoot":"","sources":["../../src/sds-chip/sds-chip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAMvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sds-chip.d.ts","sourceRoot":"","sources":["../../src/sds-chip/sds-chip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAMvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,sBAAsB,CAAC;AAE9B,KAAK,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAC9C,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;;AAED,qBACa,OAAQ,SAAQ,YAAgE;IAE5F,OAAgB,MAAM,4BAAY;IAElC,MAAM,CAAC,cAAc,UAAQ;IAC7B,SAAgB,SAAS,EAAE,gBAAgB,CAAC;IAE5C,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAEF,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAkB;IAEhB,OAAO,EAAG,gBAAgB,CAAC;IAGH,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAgB;IAChD,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAQ;IACjC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAS;IAC1C,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAS;IACvF,IAEI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAI3C;IAED,uCAAuC;IACvC,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAE3C;;IAOQ,iBAAiB;IAS1B,iBAAiB;IAKR,MAAM;IAgCf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAQtB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGtB;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAUxB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,UAAU,EAAE,OAAO,CAAC;KACpB;CACD"}
|
|
@@ -10,36 +10,43 @@ import { classMap } from 'lit/directives/class-map.js';
|
|
|
10
10
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
11
11
|
import { guardedCustomElement } from '../utils/guarded-custom-element';
|
|
12
12
|
import { styles } from './sds-chip.styles';
|
|
13
|
+
import { SDSDelegateInteractionMixin, SDSEventDispatcherMixin } from '../mixins';
|
|
13
14
|
import '../sds-icon/sds-icon';
|
|
14
|
-
let SDSChip = class SDSChip extends LitElement {
|
|
15
|
+
let SDSChip = class SDSChip extends SDSDelegateInteractionMixin(SDSEventDispatcherMixin(LitElement)) {
|
|
16
|
+
get readOnly() {
|
|
17
|
+
return this._readOnly;
|
|
18
|
+
}
|
|
19
|
+
set readOnly(value) {
|
|
20
|
+
const oldVal = this._readOnly;
|
|
21
|
+
this._readOnly = value ?? false;
|
|
22
|
+
this.requestUpdate('readOnly', oldVal);
|
|
23
|
+
}
|
|
24
|
+
/** @deprecated Use readOnly instead */
|
|
25
|
+
set readonly(value) {
|
|
26
|
+
this.readOnly = value;
|
|
27
|
+
}
|
|
15
28
|
constructor() {
|
|
16
29
|
super();
|
|
30
|
+
this._initialChecked = false;
|
|
31
|
+
this._readOnly = false;
|
|
17
32
|
// Reactive Props
|
|
18
33
|
this.variant = 'selectable';
|
|
19
34
|
this.size = 'md';
|
|
20
35
|
this.checked = false;
|
|
21
36
|
this.disabled = false;
|
|
22
|
-
this.readonly = false;
|
|
23
|
-
this._initialChecked = false;
|
|
24
37
|
this._toggle = (event) => {
|
|
25
38
|
event.preventDefault();
|
|
26
39
|
event.stopImmediatePropagation();
|
|
27
|
-
if (this.disabled || this.
|
|
40
|
+
if (this.disabled || this.readOnly)
|
|
28
41
|
return;
|
|
29
42
|
this.checked = !this.checked;
|
|
30
43
|
this.internals.setFormValue(this.checked ? this.value ?? 'on' : null);
|
|
31
|
-
this.
|
|
32
|
-
bubbles: true,
|
|
33
|
-
composed: true,
|
|
34
|
-
}));
|
|
44
|
+
this.dispatchSheriffEvent('change');
|
|
35
45
|
};
|
|
36
46
|
this._remove = () => {
|
|
37
|
-
if (this.disabled || this.
|
|
47
|
+
if (this.disabled || this.readOnly)
|
|
38
48
|
return;
|
|
39
|
-
this.
|
|
40
|
-
bubbles: true,
|
|
41
|
-
composed: true,
|
|
42
|
-
}));
|
|
49
|
+
this.dispatchSheriffEvent('sds-remove');
|
|
43
50
|
};
|
|
44
51
|
this._keypress = (event) => {
|
|
45
52
|
if (![' ', 'Enter'].includes(event.key)) {
|
|
@@ -56,7 +63,7 @@ let SDSChip = class SDSChip extends LitElement {
|
|
|
56
63
|
}
|
|
57
64
|
connectedCallback() {
|
|
58
65
|
super.connectedCallback();
|
|
59
|
-
this._initialChecked = this.checked;
|
|
66
|
+
this._initialChecked = this.checked ?? false;
|
|
60
67
|
this.internals.role = 'checkbox';
|
|
61
68
|
if (this.checked) {
|
|
62
69
|
this.internals.setFormValue(this.value ?? null);
|
|
@@ -66,20 +73,8 @@ let SDSChip = class SDSChip extends LitElement {
|
|
|
66
73
|
this.checked = this._initialChecked;
|
|
67
74
|
this.internals.setFormValue(this.value ?? null);
|
|
68
75
|
}
|
|
69
|
-
focus() {
|
|
70
|
-
if (!this.disabled)
|
|
71
|
-
this.shadowRoot?.querySelector('input')?.focus();
|
|
72
|
-
}
|
|
73
|
-
blur() {
|
|
74
|
-
if (!this.disabled)
|
|
75
|
-
this.shadowRoot?.querySelector('input')?.blur();
|
|
76
|
-
}
|
|
77
|
-
click() {
|
|
78
|
-
if (!this.disabled)
|
|
79
|
-
this.shadowRoot?.querySelector('input')?.click();
|
|
80
|
-
}
|
|
81
76
|
render() {
|
|
82
|
-
const isRemovableVariant = this.variant === 'removable' && !this.
|
|
77
|
+
const isRemovableVariant = this.variant === 'removable' && !this.readOnly && !this.disabled;
|
|
83
78
|
const chipClasses = {
|
|
84
79
|
'sds-chip': true,
|
|
85
80
|
'sds-chip--small': this.size === 'small' || this.size === 'sm',
|
|
@@ -101,7 +96,7 @@ let SDSChip = class SDSChip extends LitElement {
|
|
|
101
96
|
.checked="${this.checked}"
|
|
102
97
|
?checked="${this.checked}"
|
|
103
98
|
?disabled="${this.disabled}"
|
|
104
|
-
?readonly="${this.
|
|
99
|
+
?readonly="${this.readOnly}"
|
|
105
100
|
/>
|
|
106
101
|
<slot></slot>
|
|
107
102
|
</label>`;
|
|
@@ -114,6 +109,9 @@ SDSChip.shadowRootOptions = {
|
|
|
114
109
|
...LitElement.shadowRootOptions,
|
|
115
110
|
delegatesFocus: true,
|
|
116
111
|
};
|
|
112
|
+
__decorate([
|
|
113
|
+
query('#control')
|
|
114
|
+
], SDSChip.prototype, "control", void 0);
|
|
117
115
|
__decorate([
|
|
118
116
|
property({ type: String, reflect: true })
|
|
119
117
|
], SDSChip.prototype, "variant", void 0);
|
|
@@ -133,11 +131,9 @@ __decorate([
|
|
|
133
131
|
property({ type: Boolean, reflect: true })
|
|
134
132
|
], SDSChip.prototype, "disabled", void 0);
|
|
135
133
|
__decorate([
|
|
136
|
-
property({ type: Boolean, reflect: true })
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
query('#control')
|
|
140
|
-
], SDSChip.prototype, "control", void 0);
|
|
134
|
+
property({ type: Boolean, attribute: 'readonly', reflect: true })
|
|
135
|
+
// TODO: Revert til normal prop and remove readonly fallback handling in next major version of web components package.
|
|
136
|
+
], SDSChip.prototype, "readOnly", null);
|
|
141
137
|
SDSChip = __decorate([
|
|
142
138
|
guardedCustomElement('sds-chip')
|
|
143
139
|
], SDSChip);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-chip.js","sourceRoot":"","sources":["../../src/sds-chip/sds-chip.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"sds-chip.js","sourceRoot":"","sources":["../../src/sds-chip/sds-chip.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } 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 { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-chip.styles';\nimport { SDS_SIZES } from '../types';\nimport { SDSDelegateInteractionMixin, SDSEventDispatcherMixin } from '../mixins';\n\nimport '../sds-icon/sds-icon';\n\ntype ChipVariant = 'selectable' | 'removable';\ntype ChipSize = 'large' | 'medium' | 'small' | Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;\n\nexport interface SDSChipProps {\n\tvariant?: ChipVariant;\n\tsize?: ChipSize;\n\tchecked?: boolean;\n\tname?: string;\n\tvalue?: string;\n\tdisabled?: boolean;\n\treadonly?: boolean;\n}\n\n@guardedCustomElement('sds-chip')\nexport class SDSChip extends SDSDelegateInteractionMixin(SDSEventDispatcherMixin(LitElement)) {\n\t// Styling\n\tstatic override styles = [styles];\n\n\tstatic formAssociated = true;\n\tpublic readonly internals: ElementInternals;\n\n\tstatic override shadowRootOptions: ShadowRootInit = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true,\n\t};\n\n\tprivate _initialChecked: boolean = false;\n\tprivate _readOnly: boolean = false;\n\n\t@query('#control') control!: HTMLInputElement;\n\n\t// Reactive Props\n\t@property({ type: String, reflect: true }) variant: SDSChipProps['variant'] = 'selectable';\n\t@property({ type: String, reflect: true }) size: SDSChipProps['size'] = 'md';\n\t@property({ type: Boolean, reflect: true }) checked: SDSChipProps['checked'] = false;\n\t@property({ type: String, reflect: true }) name?: SDSChipProps['name'];\n\t@property({ type: String }) value?: SDSChipProps['value'];\n\t@property({ type: Boolean, reflect: true }) disabled: SDSChipProps['disabled'] = false;\n\t@property({ type: Boolean, attribute: 'readonly', reflect: true })\n\t// TODO: Revert til normal prop and remove readonly fallback handling in next major version of web components package.\n\tget readOnly(): boolean {\n\t\treturn this._readOnly;\n\t}\n\tset readOnly(value: SDSChipProps['readonly']) {\n\t\tconst oldVal = this._readOnly;\n\t\tthis._readOnly = value ?? false;\n\t\tthis.requestUpdate('readOnly', oldVal);\n\t}\n\n\t/** @deprecated Use readOnly instead */\n\tset readonly(value: SDSChipProps['readonly']) {\n\t\tthis.readOnly = value;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.internals = this.attachInternals();\n\t}\n\n\toverride connectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis._initialChecked = this.checked ?? false;\n\t\tthis.internals.role = 'checkbox';\n\t\tif (this.checked) {\n\t\t\tthis.internals.setFormValue(this.value ?? null);\n\t\t}\n\t}\n\n\tformResetCallback() {\n\t\tthis.checked = this._initialChecked;\n\t\tthis.internals.setFormValue(this.value ?? null);\n\t}\n\n\toverride render() {\n\t\tconst isRemovableVariant = this.variant === 'removable' && !this.readOnly && !this.disabled;\n\n\t\tconst chipClasses = {\n\t\t\t'sds-chip': true,\n\t\t\t'sds-chip--small': this.size === 'small' || this.size === 'sm',\n\t\t\t'sds-chip--large': this.size === 'large' || this.size === 'lg',\n\t\t\t'sds-chip--removable': isRemovableVariant,\n\t\t};\n\n\t\tif (isRemovableVariant) {\n\t\t\treturn html`<button class=\"${classMap(chipClasses)}\" @click=${this._remove} @keyup=\"${this._keypress}\">\n\t\t\t\t<slot></slot>\n\t\t\t\t<sds-icon name=\"close-material-outlined\" size=\"s\"></sds-icon>\n\t\t\t</button>`;\n\t\t}\n\n\t\treturn html`<label class=\"${classMap(chipClasses)}\" @click=\"${this._toggle}\" @keyup=\"${this._keypress}\">\n\t\t\t<input\n\t\t\t\tid=\"control\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tname=\"${ifDefined(this.name)}\"\n\t\t\t\tvalue=\"${ifDefined(this.value)}\"\n\t\t\t\t.checked=\"${this.checked}\"\n\t\t\t\t?checked=\"${this.checked}\"\n\t\t\t\t?disabled=\"${this.disabled}\"\n\t\t\t\t?readonly=\"${this.readOnly}\"\n\t\t\t/>\n\t\t\t<slot></slot>\n\t\t</label>`;\n\t}\n\n\tprivate readonly _toggle = (event: Event) => {\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\n\t\tif (this.disabled || this.readOnly) return;\n\t\tthis.checked = !this.checked;\n\t\tthis.internals.setFormValue(this.checked ? this.value ?? 'on' : null);\n\t\tthis.dispatchSheriffEvent('change');\n\t};\n\n\tprivate readonly _remove = () => {\n\t\tif (this.disabled || this.readOnly) return;\n\t\tthis.dispatchSheriffEvent('sds-remove');\n\t};\n\n\tprivate readonly _keypress = (event: KeyboardEvent) => {\n\t\tif (![' ', 'Enter'].includes(event.key)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.variant === 'removable') {\n\t\t\tthis._remove();\n\t\t} else {\n\t\t\tthis._toggle(event);\n\t\t}\n\t};\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-chip': SDSChip;\n\t}\n}\n"]}
|
|
@@ -5,7 +5,8 @@ export interface SDSDetailsProps {
|
|
|
5
5
|
standalone?: boolean;
|
|
6
6
|
name?: string;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
declare const SDSDetails_base: import("../mixins/types").Constructable<import("../mixins/sds-event-dispatcher-mixin").SDSEventDispatcherMixinInterface> & typeof LitElement;
|
|
9
|
+
export declare class SDSDetails extends SDSDetails_base {
|
|
9
10
|
static styles: import("lit").CSSResult[];
|
|
10
11
|
open: SDSDetailsProps['open'];
|
|
11
12
|
standalone: SDSDetailsProps['standalone'];
|
|
@@ -18,4 +19,5 @@ declare global {
|
|
|
18
19
|
'sds-details': SDSDetails;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
export {};
|
|
21
23
|
//# sourceMappingURL=sds-details.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-details.d.ts","sourceRoot":"","sources":["../../src/sds-details/sds-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAIvC,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sds-details.d.ts","sourceRoot":"","sources":["../../src/sds-details/sds-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAIvC,OAAO,sBAAsB,CAAC;AAG9B,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;;AAED,qBACa,UAAW,SAAQ,eAAmC;IAClE,OAAgB,MAAM,4BAAY;IAGlC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAS;IAGtC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAS;IAGlD,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAa;IAE1C,OAAO,CAAC,aAAa,CAOnB;IAEO,MAAM;CAef;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,aAAa,EAAE,UAAU,CAAC;KAC1B;CACD"}
|
|
@@ -9,7 +9,8 @@ import { property } from 'lit/decorators.js';
|
|
|
9
9
|
import { guardedCustomElement } from '../utils/guarded-custom-element';
|
|
10
10
|
import { styles } from './sds-details.styles';
|
|
11
11
|
import '../sds-icon/sds-icon';
|
|
12
|
-
|
|
12
|
+
import { SDSEventDispatcherMixin } from '../mixins/sds-event-dispatcher-mixin';
|
|
13
|
+
let SDSDetails = class SDSDetails extends SDSEventDispatcherMixin(LitElement) {
|
|
13
14
|
constructor() {
|
|
14
15
|
super(...arguments);
|
|
15
16
|
this.open = false;
|
|
@@ -20,11 +21,7 @@ let SDSDetails = class SDSDetails extends LitElement {
|
|
|
20
21
|
if (this.open !== details.open) {
|
|
21
22
|
this.open = details.open;
|
|
22
23
|
}
|
|
23
|
-
this.
|
|
24
|
-
detail: { open: details.open },
|
|
25
|
-
bubbles: true,
|
|
26
|
-
composed: true,
|
|
27
|
-
}));
|
|
24
|
+
this.dispatchSheriffEvent('sds-toggle', { open: details.open });
|
|
28
25
|
};
|
|
29
26
|
}
|
|
30
27
|
render() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-details.js","sourceRoot":"","sources":["../../src/sds-details/sds-details.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sds-details.js","sourceRoot":"","sources":["../../src/sds-details/sds-details.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AASxE,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,uBAAuB,CAAC,UAAU,CAAC;IAA5D;;QAIN,SAAI,GAA4B,KAAK,CAAC;QAGtC,eAAU,GAAkC,KAAK,CAAC;QAGlD,SAAI,GAA4B,SAAS,CAAC;QAElC,kBAAa,GAAG,CAAC,KAAY,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAmC,CAAC;YAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC;IAiBH,CAAC;IAfS,MAAM;QACd,OAAO,IAAI,CAAA;yCAC4B,IAAI,CAAC,IAAI,IAAI,EAAE,uBAAuB,IAAI,CAAC,UAAU,YAAY,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,aAAa;;;;;;;;;;;GAWhJ,CAAC;IACH,CAAC;;AAlCe,iBAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAGlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCACL;AAGtC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CACO;AAGlD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCACA;AAV9B,UAAU;IADtB,oBAAoB,CAAC,aAAa,CAAC;GACvB,UAAU,CAoCtB","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-details.styles';\nimport '../sds-icon/sds-icon';\nimport { SDSEventDispatcherMixin } from '../mixins/sds-event-dispatcher-mixin';\n\nexport interface SDSDetailsProps {\n\topen?: boolean;\n\tstandalone?: boolean;\n\tname?: string;\n}\n\n@guardedCustomElement('sds-details')\nexport class SDSDetails extends SDSEventDispatcherMixin(LitElement) {\n\tstatic override styles = [styles];\n\n\t@property({ type: Boolean, reflect: true })\n\topen: SDSDetailsProps['open'] = false;\n\n\t@property({ type: Boolean, reflect: true })\n\tstandalone: SDSDetailsProps['standalone'] = false;\n\n\t@property({ type: String, reflect: true })\n\tname: SDSDetailsProps['name'] = undefined;\n\n\tprivate _handleToggle = (event: Event) => {\n\t\tconst details = event.currentTarget as HTMLDetailsElement;\n\t\tif (this.open !== details.open) {\n\t\t\tthis.open = details.open;\n\t\t}\n\n\t\tthis.dispatchSheriffEvent('sds-toggle', { open: details.open });\n\t};\n\n\toverride render() {\n\t\treturn html`\n\t\t\t<details class=\"sds-details\" .name=\"${this.name ?? ''}\" ?data-standalone=\"${this.standalone}\" ?open=\"${this.open}\" @toggle=\"${this._handleToggle}\">\n\t\t\t\t<summary class=\"sds-details__summary\">\n\t\t\t\t\t<sds-icon name=\"chevron_up-material-filled\"></sds-icon>\n\t\t\t\t\t<div class=\"sds-details__summary-content\">\n\t\t\t\t\t\t<slot name=\"summary\"></slot>\n\t\t\t\t\t</div>\n\t\t\t\t</summary>\n\t\t\t\t<div class=\"sds-details__content\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-details': SDSDetails;\n\t}\n}\n"]}
|
|
@@ -27,7 +27,8 @@ export interface SDSDialogProps {
|
|
|
27
27
|
closedby?: ClosedBy;
|
|
28
28
|
'close-button-label'?: string;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
declare const SDSDialog_base: import("../mixins/types").Constructable<import("../mixins/sds-event-dispatcher-mixin").SDSEventDispatcherMixinInterface> & typeof LitElement;
|
|
31
|
+
export declare class SDSDialog extends SDSDialog_base {
|
|
31
32
|
static styles: import("lit").CSSResult[];
|
|
32
33
|
open: boolean;
|
|
33
34
|
modal: boolean;
|
|
@@ -35,6 +36,7 @@ export declare class SDSDialog extends LitElement {
|
|
|
35
36
|
closeButtonLabel: string;
|
|
36
37
|
private _dialog;
|
|
37
38
|
private headerSlotElements;
|
|
39
|
+
private _pointerDownInside;
|
|
38
40
|
firstUpdated(): void;
|
|
39
41
|
updated(changedProperties: PropertyValues): void;
|
|
40
42
|
private _setupEventListeners;
|
|
@@ -42,6 +44,8 @@ export declare class SDSDialog extends LitElement {
|
|
|
42
44
|
private _closeDialog;
|
|
43
45
|
private readonly _handleClose;
|
|
44
46
|
private readonly _handleClick;
|
|
47
|
+
private readonly _handlePointerDown;
|
|
48
|
+
private readonly _handlePointerUp;
|
|
45
49
|
private readonly _handleCancel;
|
|
46
50
|
private readonly _handleAutoFocus;
|
|
47
51
|
show(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-dialog.d.ts","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sds-dialog.d.ts","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAElC,KAAK,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;;AAED,qBACa,SAAU,SAAQ,cAAmC;IACjE,OAAgB,MAAM,4BAAY;IAEU,IAAI,EAAE,OAAO,CAAS;IACtB,KAAK,EAAE,OAAO,CAAS;IACxB,QAAQ,EAAE,QAAQ,CAAkB;IAClB,gBAAgB,EAAE,MAAM,CAAsB;IAE1F,OAAO,CAAC,OAAO,CAAqB;IAEM,OAAO,CAAC,kBAAkB,CAAa;IAGlG,OAAO,CAAC,kBAAkB,CAAS;IAE1B,YAAY,IAAI,IAAI;IAOpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAYzD,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAM3B;IAKF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAIjC;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAsB/B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAkB/B;IAEK,IAAI,IAAI,IAAI;IAIZ,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,IAAI;IAIX,MAAM;CAmBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,YAAY,EAAE,SAAS,CAAC;KACxB;IACD,UAAU,2BAA2B;QACpC,WAAW,EAAE,YAAY,CAAC;KAC1B;CACD"}
|
|
@@ -8,51 +8,55 @@ import { LitElement, html, nothing } from 'lit';
|
|
|
8
8
|
import { property, query, queryAssignedElements } from 'lit/decorators.js';
|
|
9
9
|
import { guardedCustomElement } from '../utils/guarded-custom-element';
|
|
10
10
|
import { styles } from './sds-dialog.styles';
|
|
11
|
+
import { SDSEventDispatcherMixin } from '../mixins/sds-event-dispatcher-mixin';
|
|
11
12
|
import '../sds-icon/sds-icon';
|
|
12
13
|
import '../sds-button/sds-button';
|
|
13
|
-
let SDSDialog = class SDSDialog extends LitElement {
|
|
14
|
+
let SDSDialog = class SDSDialog extends SDSEventDispatcherMixin(LitElement) {
|
|
14
15
|
constructor() {
|
|
15
16
|
super(...arguments);
|
|
16
17
|
this.open = false;
|
|
17
18
|
this.modal = false;
|
|
18
19
|
this.closedby = 'closerequest';
|
|
19
20
|
this.closeButtonLabel = 'Lukk dialogvindu';
|
|
21
|
+
// Safari closedBy=any polyfill state
|
|
22
|
+
this._pointerDownInside = false;
|
|
20
23
|
this._handleClose = () => {
|
|
21
24
|
this.open = false;
|
|
22
|
-
this.
|
|
23
|
-
bubbles: true,
|
|
24
|
-
composed: true,
|
|
25
|
-
}));
|
|
25
|
+
this.dispatchSheriffEvent('sds-close');
|
|
26
26
|
};
|
|
27
27
|
this._handleClick = (event) => {
|
|
28
28
|
const target = event.target;
|
|
29
29
|
if (target?.closest('[data-command="close"]')) {
|
|
30
30
|
this._closeDialog();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
// Safari closedBy="any" polyfill
|
|
34
|
+
// Calculate whether the user's pointer down event is outside or inside dialog
|
|
35
|
+
// If outside, close the dialog
|
|
36
|
+
this._handlePointerDown = (event) => {
|
|
37
|
+
const rect = this._dialog.getBoundingClientRect();
|
|
38
|
+
const { clientX: x, clientY: y } = event;
|
|
39
|
+
this._pointerDownInside = rect.top <= y && y <= rect.bottom && rect.left <= x && x <= rect.right;
|
|
40
|
+
};
|
|
41
|
+
this._handlePointerUp = (event) => {
|
|
42
|
+
const wasDownInside = this._pointerDownInside;
|
|
43
|
+
this._pointerDownInside = false;
|
|
44
|
+
if (this.closedby !== 'any' || wasDownInside) {
|
|
31
45
|
return;
|
|
32
46
|
}
|
|
33
47
|
// Clicking the backdrop will have the dialog as the target in Safari/Chrome.
|
|
34
48
|
// Firefox does not fire this callback when ::backdrop is clicked.
|
|
35
|
-
if (target !== this._dialog) {
|
|
49
|
+
if (event.target !== this._dialog) {
|
|
36
50
|
return;
|
|
37
51
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (hasClosedBy) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
// Manual bounds checking for Safari as it does not (yet) support closedby="any".
|
|
50
|
-
const { clientX: x, clientY: y } = event;
|
|
51
|
-
const { top, bottom, left, right } = this._dialog.getBoundingClientRect();
|
|
52
|
-
const clickedOutsideDialog = top > y || bottom < y || left > x || right < x;
|
|
53
|
-
if (clickedOutsideDialog) {
|
|
54
|
-
this._closeDialog();
|
|
55
|
-
}
|
|
52
|
+
// Use requestAnimationFrame to let the browser handle native closedBy first.
|
|
53
|
+
// This avoids checking for the closedBy property, which Safari 26.2 exposes
|
|
54
|
+
// without implementing.
|
|
55
|
+
requestAnimationFrame(() => {
|
|
56
|
+
if (this._dialog && this._dialog.open) {
|
|
57
|
+
this._closeDialog();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
56
60
|
};
|
|
57
61
|
this._handleCancel = (event) => {
|
|
58
62
|
if (this.closedby === 'none') {
|
|
@@ -86,19 +90,31 @@ let SDSDialog = class SDSDialog extends LitElement {
|
|
|
86
90
|
if (!changedProperties.has('open')) {
|
|
87
91
|
return;
|
|
88
92
|
}
|
|
89
|
-
this.open
|
|
93
|
+
if (this.open) {
|
|
94
|
+
this._openDialog();
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this._closeDialog();
|
|
98
|
+
}
|
|
90
99
|
}
|
|
91
100
|
_setupEventListeners() {
|
|
92
101
|
this._dialog.addEventListener('close', this._handleClose);
|
|
93
102
|
this._dialog.addEventListener('cancel', this._handleCancel);
|
|
94
103
|
this._dialog.addEventListener('click', this._handleClick);
|
|
104
|
+
this._dialog.addEventListener('pointerdown', this._handlePointerDown);
|
|
105
|
+
this._dialog.addEventListener('pointerup', this._handlePointerUp);
|
|
95
106
|
this._dialog.addEventListener('animationend', this._handleAutoFocus);
|
|
96
107
|
}
|
|
97
108
|
_openDialog() {
|
|
98
109
|
if (!this._dialog) {
|
|
99
110
|
return;
|
|
100
111
|
}
|
|
101
|
-
this.modal
|
|
112
|
+
if (this.modal) {
|
|
113
|
+
this._dialog.showModal();
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this._dialog.show();
|
|
117
|
+
}
|
|
102
118
|
}
|
|
103
119
|
_closeDialog() {
|
|
104
120
|
if (!this._dialog) {
|
|
@@ -119,7 +135,7 @@ let SDSDialog = class SDSDialog extends LitElement {
|
|
|
119
135
|
render() {
|
|
120
136
|
const headerIsEmpty = this.headerSlotElements.length === 0;
|
|
121
137
|
return html `
|
|
122
|
-
<dialog
|
|
138
|
+
<dialog .closedBy="${this.closedby}" class=${headerIsEmpty ? 'sds-dialog__empty-header' : ''}>
|
|
123
139
|
<div class="sds-dialog__header">
|
|
124
140
|
<slot name="header"></slot>
|
|
125
141
|
${this.closeButtonLabel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-dialog.js","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-dialog.styles';\nimport { SheriffEvent } from '../types';\n\nimport '../sds-icon/sds-icon';\nimport '../sds-button/sds-button';\n\ntype ClosedBy = 'none' | 'closerequest' | 'any';\n\nexport interface SDSDialogProps {\n\topen?: boolean;\n\t/**\n\t * Set if dialog opens as a modal or not\n\t *\n\t * If non-modal, the user is allowed to interact with content outside of the dialog.\n\t * If modal, the dialog is placed in the top layer with a ::backdrop pseudo-element.\n\t *\n\t * Docs:\n\t * - https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/show\n\t * - https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/showModal\n\t */\n\tmodal?: boolean;\n\t/**\n\t * Set what type of dismiss behavior closes the dialog\n\t * - 'none': Dialog can only be closed programmatically\n\t * - 'closerequest': Dialog closes on ESC key (default)\n\t * - 'any': Dialog closes on ESC key or clicking outside\n\t *\n\t * Docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\t */\n\tclosedby?: ClosedBy;\n\t'close-button-label'?: string;\n}\n\n@guardedCustomElement('sds-dialog')\nexport class SDSDialog extends LitElement {\n\tstatic override styles = [styles];\n\n\t@property({ type: Boolean, reflect: true }) open: boolean = false;\n\t@property({ type: Boolean, reflect: true }) modal: boolean = false;\n\t@property({ type: String, reflect: true }) closedby: ClosedBy = 'closerequest';\n\t@property({ type: String, attribute: 'close-button-label' }) closeButtonLabel: string = 'Lukk dialogvindu';\n\n\t@query('dialog') private _dialog!: HTMLDialogElement;\n\n\t@queryAssignedElements({ slot: 'header', flatten: false }) private headerSlotElements!: Element[];\n\n\toverride firstUpdated(): void {\n\t\tthis._setupEventListeners();\n\t\tif (this.open) {\n\t\t\tthis._openDialog();\n\t\t}\n\t}\n\n\toverride updated(changedProperties: PropertyValues): void {\n\t\tif (!changedProperties.has('open')) {\n\t\t\treturn;\n\t\t}\n\t\tthis.open ? this._openDialog() : this._closeDialog();\n\t}\n\n\tprivate _setupEventListeners(): void {\n\t\tthis._dialog.addEventListener('close', this._handleClose);\n\t\tthis._dialog.addEventListener('cancel', this._handleCancel);\n\t\tthis._dialog.addEventListener('click', this._handleClick);\n\t\tthis._dialog.addEventListener('animationend', this._handleAutoFocus);\n\t}\n\n\tprivate _openDialog(): void {\n\t\tif (!this._dialog) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.modal ? this._dialog.showModal() : this._dialog.show();\n\t}\n\n\tprivate _closeDialog(): void {\n\t\tif (!this._dialog) {\n\t\t\treturn;\n\t\t}\n\t\tthis._dialog.close();\n\t}\n\n\tprivate readonly _handleClose = (): void => {\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('sds-close', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t})\n\t\t);\n\t};\n\n\tprivate readonly _handleClick = (event: MouseEvent): void => {\n\t\tconst target = event.target as Element | null;\n\n\t\tif (target?.closest('[data-command=\"close\"]')) {\n\t\t\tthis._closeDialog();\n\t\t\treturn;\n\t\t}\n\n\t\t// Clicking the backdrop will have the dialog as the target in Safari/Chrome.\n\t\t// Firefox does not fire this callback when ::backdrop is clicked.\n\t\tif (target !== this._dialog) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.closedby !== 'any') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Cast _dialog to its own type to avoid it being narrowed to never by TS.\n\t\t// The types defines that `closedBy` _is_ in dialog.\n\t\t// So, if it is not, it can't be that type and is cast to never.\n\t\t// Do this test to check if closedBy is supported in current browser.\n\t\tconst hasClosedBy = 'closedBy' in (this._dialog as typeof this._dialog);\n\t\tif (hasClosedBy) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Manual bounds checking for Safari as it does not (yet) support closedby=\"any\".\n\t\tconst { clientX: x, clientY: y } = event;\n\t\tconst { top, bottom, left, right } = this._dialog.getBoundingClientRect();\n\t\tconst clickedOutsideDialog = top > y || bottom < y || left > x || right < x;\n\t\tif (clickedOutsideDialog) {\n\t\t\tthis._closeDialog();\n\t\t}\n\t};\n\n\tprivate readonly _handleCancel = (event: Event): void => {\n\t\tif (this.closedby === 'none') {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tprivate readonly _handleAutoFocus = (): void => {\n\t\t// slot:not([name]) finds the default nameless slot\n\t\tconst contentSlotElements = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])')?.assignedElements({ flatten: true });\n\t\tif (!contentSlotElements || contentSlotElements.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementToFocus = contentSlotElements.find((element) => {\n\t\t\treturn element.getAttribute('autofocus') != null;\n\t\t});\n\n\t\tif (!(elementToFocus instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (document.activeElement !== elementToFocus) {\n\t\t\telementToFocus.focus();\n\t\t}\n\t};\n\n\tpublic show(): void {\n\t\tthis.open = true;\n\t}\n\n\tpublic showModal(): void {\n\t\tthis.modal = true;\n\t\tthis.open = true;\n\t}\n\n\tpublic close(): void {\n\t\tthis.open = false;\n\t}\n\n\toverride render() {\n\t\tconst headerIsEmpty = this.headerSlotElements.length === 0;\n\t\treturn html`\n\t\t\t<dialog closedby=\"${this.closedby}\" class=${headerIsEmpty ? 'sds-dialog__empty-header' : ''}>\n\t\t\t\t<div class=\"sds-dialog__header\">\n\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t${this.closeButtonLabel\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<sds-button class=\"sds-dialog__close-button\" icon variant=\"tertiary\" size=\"md\" data-command=\"close\" aria-label=\"${this.closeButtonLabel}\">\n\t\t\t\t\t\t\t\t\t<sds-icon name=\"close-material-outlined\" size=\"md\"></sds-icon>\n\t\t\t\t\t\t\t\t</sds-button>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: nothing}\n\t\t\t\t</div>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t</dialog>\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-dialog': SDSDialog;\n\t}\n\tinterface GlobalEventHandlersEventMap {\n\t\t'sds-close': SheriffEvent;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sds-dialog.js","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-dialog.styles';\nimport { SheriffEvent } from '../types';\nimport { SDSEventDispatcherMixin } from '../mixins/sds-event-dispatcher-mixin';\n\nimport '../sds-icon/sds-icon';\nimport '../sds-button/sds-button';\n\ntype ClosedBy = 'none' | 'closerequest' | 'any';\n\nexport interface SDSDialogProps {\n\topen?: boolean;\n\t/**\n\t * Set if dialog opens as a modal or not\n\t *\n\t * If non-modal, the user is allowed to interact with content outside of the dialog.\n\t * If modal, the dialog is placed in the top layer with a ::backdrop pseudo-element.\n\t *\n\t * Docs:\n\t * - https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/show\n\t * - https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/showModal\n\t */\n\tmodal?: boolean;\n\t/**\n\t * Set what type of dismiss behavior closes the dialog\n\t * - 'none': Dialog can only be closed programmatically\n\t * - 'closerequest': Dialog closes on ESC key (default)\n\t * - 'any': Dialog closes on ESC key or clicking outside\n\t *\n\t * Docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\t */\n\tclosedby?: ClosedBy;\n\t'close-button-label'?: string;\n}\n\n@guardedCustomElement('sds-dialog')\nexport class SDSDialog extends SDSEventDispatcherMixin(LitElement) {\n\tstatic override styles = [styles];\n\n\t@property({ type: Boolean, reflect: true }) open: boolean = false;\n\t@property({ type: Boolean, reflect: true }) modal: boolean = false;\n\t@property({ type: String, reflect: true }) closedby: ClosedBy = 'closerequest';\n\t@property({ type: String, attribute: 'close-button-label' }) closeButtonLabel: string = 'Lukk dialogvindu';\n\n\t@query('dialog') private _dialog!: HTMLDialogElement;\n\n\t@queryAssignedElements({ slot: 'header', flatten: false }) private headerSlotElements!: Element[];\n\n\t// Safari closedBy=any polyfill state\n\tprivate _pointerDownInside = false;\n\n\toverride firstUpdated(): void {\n\t\tthis._setupEventListeners();\n\t\tif (this.open) {\n\t\t\tthis._openDialog();\n\t\t}\n\t}\n\n\toverride updated(changedProperties: PropertyValues): void {\n\t\tif (!changedProperties.has('open')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.open) {\n\t\t\tthis._openDialog();\n\t\t} else {\n\t\t\tthis._closeDialog();\n\t\t}\n\t}\n\n\tprivate _setupEventListeners(): void {\n\t\tthis._dialog.addEventListener('close', this._handleClose);\n\t\tthis._dialog.addEventListener('cancel', this._handleCancel);\n\t\tthis._dialog.addEventListener('click', this._handleClick);\n\t\tthis._dialog.addEventListener('pointerdown', this._handlePointerDown);\n\t\tthis._dialog.addEventListener('pointerup', this._handlePointerUp);\n\t\tthis._dialog.addEventListener('animationend', this._handleAutoFocus);\n\t}\n\n\tprivate _openDialog(): void {\n\t\tif (!this._dialog) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.modal) {\n\t\t\tthis._dialog.showModal();\n\t\t} else {\n\t\t\tthis._dialog.show();\n\t\t}\n\t}\n\n\tprivate _closeDialog(): void {\n\t\tif (!this._dialog) {\n\t\t\treturn;\n\t\t}\n\t\tthis._dialog.close();\n\t}\n\n\tprivate readonly _handleClose = (): void => {\n\t\tthis.open = false;\n\t\tthis.dispatchSheriffEvent('sds-close');\n\t};\n\n\tprivate readonly _handleClick = (event: MouseEvent): void => {\n\t\tconst target = event.target as Element | null;\n\n\t\tif (target?.closest('[data-command=\"close\"]')) {\n\t\t\tthis._closeDialog();\n\t\t}\n\t};\n\n\t// Safari closedBy=\"any\" polyfill\n\t// Calculate whether the user's pointer down event is outside or inside dialog\n\t// If outside, close the dialog\n\tprivate readonly _handlePointerDown = (event: PointerEvent): void => {\n\t\tconst rect = this._dialog.getBoundingClientRect();\n\t\tconst { clientX: x, clientY: y } = event;\n\t\tthis._pointerDownInside = rect.top <= y && y <= rect.bottom && rect.left <= x && x <= rect.right;\n\t};\n\n\tprivate readonly _handlePointerUp = (event: PointerEvent): void => {\n\t\tconst wasDownInside = this._pointerDownInside;\n\t\tthis._pointerDownInside = false;\n\n\t\tif (this.closedby !== 'any' || wasDownInside) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clicking the backdrop will have the dialog as the target in Safari/Chrome.\n\t\t// Firefox does not fire this callback when ::backdrop is clicked.\n\t\tif (event.target !== this._dialog) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Use requestAnimationFrame to let the browser handle native closedBy first.\n\t\t// This avoids checking for the closedBy property, which Safari 26.2 exposes\n\t\t// without implementing.\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this._dialog && this._dialog.open) {\n\t\t\t\tthis._closeDialog();\n\t\t\t}\n\t\t});\n\t};\n\n\tprivate readonly _handleCancel = (event: Event): void => {\n\t\tif (this.closedby === 'none') {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tprivate readonly _handleAutoFocus = (): void => {\n\t\t// slot:not([name]) finds the default nameless slot\n\t\tconst contentSlotElements = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])')?.assignedElements({ flatten: true });\n\t\tif (!contentSlotElements || contentSlotElements.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementToFocus = contentSlotElements.find((element) => {\n\t\t\treturn element.getAttribute('autofocus') != null;\n\t\t});\n\n\t\tif (!(elementToFocus instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (document.activeElement !== elementToFocus) {\n\t\t\telementToFocus.focus();\n\t\t}\n\t};\n\n\tpublic show(): void {\n\t\tthis.open = true;\n\t}\n\n\tpublic showModal(): void {\n\t\tthis.modal = true;\n\t\tthis.open = true;\n\t}\n\n\tpublic close(): void {\n\t\tthis.open = false;\n\t}\n\n\toverride render() {\n\t\tconst headerIsEmpty = this.headerSlotElements.length === 0;\n\t\treturn html`\n\t\t\t<dialog .closedBy=\"${this.closedby}\" class=${headerIsEmpty ? 'sds-dialog__empty-header' : ''}>\n\t\t\t\t<div class=\"sds-dialog__header\">\n\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t${this.closeButtonLabel\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<sds-button class=\"sds-dialog__close-button\" icon variant=\"tertiary\" size=\"md\" data-command=\"close\" aria-label=\"${this.closeButtonLabel}\">\n\t\t\t\t\t\t\t\t\t<sds-icon name=\"close-material-outlined\" size=\"md\"></sds-icon>\n\t\t\t\t\t\t\t\t</sds-button>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: nothing}\n\t\t\t\t</div>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t</dialog>\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-dialog': SDSDialog;\n\t}\n\tinterface GlobalEventHandlersEventMap {\n\t\t'sds-close': SheriffEvent;\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sds-dialog.styles.d.ts","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"sds-dialog.styles.d.ts","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAkHlB,CAAC"}
|
|
@@ -11,6 +11,7 @@ export const styles = css `
|
|
|
11
11
|
--_sds-dialog-max-width: var(--sds-dialog-max-width, min(60ch, 100vw));
|
|
12
12
|
--_sds-dialog-max-height: var(--sds-dialog-max-height, calc(100dvh - var(--sds-spacing-lg)));
|
|
13
13
|
|
|
14
|
+
--_sds-dialog-margin: var(--sds-dialog-margin, auto);
|
|
14
15
|
--_sds-dialog-padding-block: var(--sds-dialog-padding-block, var(--sds-spacing-sm));
|
|
15
16
|
--_sds-dialog-padding-inline: var(--sds-dialog-padding-inline, var(--sds-spacing-sm));
|
|
16
17
|
--_sds-dialog-gap: var(--sds-dialog-gap, var(--sds-spacing-xs));
|
|
@@ -54,6 +55,7 @@ export const styles = css `
|
|
|
54
55
|
&[open] {
|
|
55
56
|
display: flex;
|
|
56
57
|
flex-direction: column;
|
|
58
|
+
margin: var(--_sds-dialog-margin);
|
|
57
59
|
padding-block: var(--_sds-dialog-padding-block);
|
|
58
60
|
padding-inline: var(--_sds-dialog-padding-inline);
|
|
59
61
|
gap: var(--_sds-dialog-gap);
|
|
@@ -102,7 +104,7 @@ export const styles = css `
|
|
|
102
104
|
@media (max-width: 640px) {
|
|
103
105
|
:host {
|
|
104
106
|
--_sds-dialog-max-width: var(--sds-dialog-max-width, 100%);
|
|
105
|
-
--_sds-dialog-
|
|
107
|
+
--_sds-dialog-margin: var(--sds-dialog-margin, var(--sds-spacing-xs));
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
|