@politiet/sheriff-web-components 2.13.0 → 2.13.1

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.
@@ -4274,6 +4274,16 @@
4274
4274
  "description": "",
4275
4275
  "name": "SDSRadio",
4276
4276
  "members": [
4277
+ {
4278
+ "kind": "field",
4279
+ "name": "shadowRootOptions",
4280
+ "type": {
4281
+ "text": "ShadowRootInit"
4282
+ },
4283
+ "static": true,
4284
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: false, }",
4285
+ "description": "The host carries `role=\"radio\"` and must receive focus itself, so focus must not be\ndelegated into the shadow root the way SDSFormControlMixin sets up by default."
4286
+ },
4277
4287
  {
4278
4288
  "kind": "field",
4279
4289
  "name": "required",
@@ -4376,6 +4386,14 @@
4376
4386
  "text": "HTMLInputElement"
4377
4387
  }
4378
4388
  },
4389
+ {
4390
+ "kind": "field",
4391
+ "name": "_helpTextElement",
4392
+ "type": {
4393
+ "text": "HTMLElement | undefined"
4394
+ },
4395
+ "privacy": "private"
4396
+ },
4379
4397
  {
4380
4398
  "kind": "field",
4381
4399
  "name": "_hasSlottedLabel",
@@ -4385,6 +4403,24 @@
4385
4403
  "privacy": "private",
4386
4404
  "default": "false"
4387
4405
  },
4406
+ {
4407
+ "kind": "field",
4408
+ "name": "_slottedLabelText",
4409
+ "type": {
4410
+ "text": "string"
4411
+ },
4412
+ "privacy": "private",
4413
+ "default": "''"
4414
+ },
4415
+ {
4416
+ "kind": "field",
4417
+ "name": "_rootNode",
4418
+ "type": {
4419
+ "text": "Document | ShadowRoot | null"
4420
+ },
4421
+ "privacy": "private",
4422
+ "default": "null"
4423
+ },
4388
4424
  {
4389
4425
  "kind": "field",
4390
4426
  "name": "_disabled",
@@ -4430,6 +4466,15 @@
4430
4466
  "privacy": "private",
4431
4467
  "default": "false"
4432
4468
  },
4469
+ {
4470
+ "kind": "field",
4471
+ "name": "_pendingGroupSync",
4472
+ "type": {
4473
+ "text": "boolean"
4474
+ },
4475
+ "privacy": "private",
4476
+ "default": "false"
4477
+ },
4433
4478
  {
4434
4479
  "kind": "method",
4435
4480
  "name": "_getGroupRadios",
@@ -4438,34 +4483,119 @@
4438
4483
  "type": {
4439
4484
  "text": "SDSRadio[]"
4440
4485
  }
4441
- }
4486
+ },
4487
+ "parameters": [
4488
+ {
4489
+ "name": "name",
4490
+ "default": "this.name"
4491
+ },
4492
+ {
4493
+ "name": "root",
4494
+ "default": "this._rootNode ?? (this.getRootNode() as Document | ShadowRoot)"
4495
+ }
4496
+ ],
4497
+ "description": "Matches on the `name` property rather than the reflected attribute, so radios created\nimperatively are found before Lit has reflected `name` back out."
4442
4498
  },
4443
4499
  {
4444
4500
  "kind": "method",
4445
- "name": "_updateGroupValidation",
4446
- "privacy": "private"
4501
+ "name": "_syncHostAria",
4502
+ "privacy": "private",
4503
+ "description": "Mirrors state onto the host, which is the radio in the accessibility tree.\n\nWritten as attributes rather than through ElementInternals: internals ARIA is\nIDL-only, so assistive technology sees it but axe, Playwright and Testing Library —\nwhich all resolve role and name from attributes — do not."
4447
4504
  },
4448
4505
  {
4449
4506
  "kind": "field",
4450
- "name": "_handleKeydown",
4507
+ "name": "_supportsAriaElementReferences",
4451
4508
  "privacy": "private",
4509
+ "static": true,
4452
4510
  "readonly": true
4453
4511
  },
4512
+ {
4513
+ "kind": "field",
4514
+ "name": "_handleMouseDown",
4515
+ "privacy": "private",
4516
+ "readonly": true,
4517
+ "description": "Not every browser focuses a tabindex host on click, and the host must hold focus."
4518
+ },
4519
+ {
4520
+ "kind": "field",
4521
+ "name": "_handleClick",
4522
+ "privacy": "private",
4523
+ "readonly": true,
4524
+ "description": "The label is deliberately not associated with the inert input — a `for` would make\ngetByLabel and friends resolve to an unclickable element — so selection is driven here."
4525
+ },
4454
4526
  {
4455
4527
  "kind": "method",
4456
- "name": "formResetCallback"
4528
+ "name": "_select",
4529
+ "privacy": "private",
4530
+ "description": "Selection never goes through the inner input: its click is composed, so it would\nretarget to the host and every click would be seen twice from the outside.\nLike a native radio, this only fires `change` when the checkedness actually changes."
4457
4531
  },
4458
4532
  {
4459
4533
  "kind": "method",
4460
- "name": "_uncheckSiblings",
4534
+ "name": "_updateGroupPositions",
4535
+ "privacy": "private",
4536
+ "parameters": [
4537
+ {
4538
+ "name": "members",
4539
+ "type": {
4540
+ "text": "SDSRadio[]"
4541
+ }
4542
+ }
4543
+ ],
4544
+ "description": "A radio group does not cross shadow roots, so the browser sees each radio as a set of\none. State the position explicitly across the whole name-group instead."
4545
+ },
4546
+ {
4547
+ "kind": "method",
4548
+ "name": "_updateGroupTabStops",
4549
+ "privacy": "private",
4550
+ "parameters": [
4551
+ {
4552
+ "name": "members",
4553
+ "type": {
4554
+ "text": "SDSRadio[]"
4555
+ }
4556
+ }
4557
+ ],
4558
+ "description": "A radio group is one tab stop: the checked option, or the first enabled one."
4559
+ },
4560
+ {
4561
+ "kind": "method",
4562
+ "name": "_syncGroup",
4563
+ "privacy": "private",
4564
+ "parameters": [
4565
+ {
4566
+ "name": "members",
4567
+ "type": {
4568
+ "text": "SDSRadio[]"
4569
+ }
4570
+ }
4571
+ ]
4572
+ },
4573
+ {
4574
+ "kind": "method",
4575
+ "name": "_scheduleGroupSync",
4576
+ "privacy": "private",
4577
+ "description": "Conditional rendering and reordering both run through disconnect/connect, while\nfirstUpdated only ever fires once. Membership is recomputed from the microtask so the\nsurrounding batch of insertions has settled — and so every member has been upgraded,\nsince a non-upgraded element matches the selector but has no `name`."
4578
+ },
4579
+ {
4580
+ "kind": "method",
4581
+ "name": "_updateGroupValidation",
4461
4582
  "privacy": "private"
4462
4583
  },
4463
4584
  {
4464
4585
  "kind": "field",
4465
- "name": "_handleChange",
4586
+ "name": "_handleKeydown",
4466
4587
  "privacy": "private",
4467
4588
  "readonly": true
4468
4589
  },
4590
+ {
4591
+ "kind": "method",
4592
+ "name": "formResetCallback"
4593
+ },
4594
+ {
4595
+ "kind": "method",
4596
+ "name": "_uncheckSiblings",
4597
+ "privacy": "private"
4598
+ },
4469
4599
  {
4470
4600
  "kind": "field",
4471
4601
  "name": "_handleFocus",
@@ -4478,6 +4608,42 @@
4478
4608
  "privacy": "private",
4479
4609
  "readonly": true
4480
4610
  },
4611
+ {
4612
+ "kind": "method",
4613
+ "name": "focus",
4614
+ "return": {
4615
+ "type": {
4616
+ "text": "void"
4617
+ }
4618
+ },
4619
+ "parameters": [
4620
+ {
4621
+ "name": "options",
4622
+ "optional": true,
4623
+ "type": {
4624
+ "text": "FocusOptions"
4625
+ }
4626
+ }
4627
+ ]
4628
+ },
4629
+ {
4630
+ "kind": "method",
4631
+ "name": "blur",
4632
+ "return": {
4633
+ "type": {
4634
+ "text": "void"
4635
+ }
4636
+ }
4637
+ },
4638
+ {
4639
+ "kind": "method",
4640
+ "name": "click",
4641
+ "return": {
4642
+ "type": {
4643
+ "text": "void"
4644
+ }
4645
+ }
4646
+ },
4481
4647
  {
4482
4648
  "kind": "field",
4483
4649
  "name": "type",
@@ -1 +1 @@
1
- {"version":3,"file":"sds-dialog-target-mixin.d.ts","sourceRoot":"","sources":["../../src/mixins/sds-dialog-target-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxC,KAAK,aAAa,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,CAAC;AAM9D,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,gBAAgB,IAAI,IAAI,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAkHzI"}
1
+ {"version":3,"file":"sds-dialog-target-mixin.d.ts","sourceRoot":"","sources":["../../src/mixins/sds-dialog-target-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxC,KAAK,aAAa,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,CAAC;AAM9D,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,gBAAgB,IAAI,IAAI,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,CAAC,6BAA6B,CAAC,GAAG,CAAC,CA8HzI"}
@@ -22,6 +22,13 @@ export function SDSDialogTargetMixin(superClass) {
22
22
  this._updateCommandTarget();
23
23
  }
24
24
  }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ // React moves keyed nodes by disconnect/reconnect without changing props, so updated() won't re-run.
28
+ if (this.hasUpdated) {
29
+ this._updateCommandTarget();
30
+ }
31
+ }
25
32
  disconnectedCallback() {
26
33
  super.disconnectedCallback();
27
34
  this._cleanupDialogObserver();
@@ -80,6 +87,9 @@ export function SDSDialogTargetMixin(superClass) {
80
87
  }
81
88
  }
82
89
  runDialogCommand() {
90
+ if (!this._dialogElement?.isConnected) {
91
+ this._updateCommandTarget();
92
+ }
83
93
  if (!this._dialogElement) {
84
94
  return;
85
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sds-dialog-target-mixin.js","sourceRoot":"","sources":["../../src/mixins/sds-dialog-target-mixin.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Constructable } from './types';\n\nimport type { SDSDialog } from '../sds-dialog/sds-dialog';\n\ntype DialogCommand = 'close' | 'request-close' | 'show-modal';\n\nfunction isSDSDialog(node: Element | null): node is SDSDialog {\n\treturn node != null && 'showModal' in node && 'requestClose' in node && 'close' in node && 'open' in node;\n}\n\nexport interface SDSDialogTargetMixinInterface {\n\tcommand?: DialogCommand;\n\tcommandFor?: string;\n\treadonly effectiveCommand?: DialogCommand;\n\treadonly effectiveCommandFor?: string;\n\trunDialogCommand(): void;\n}\n\nexport function SDSDialogTargetMixin<T extends Constructable<LitElement>>(superClass: T): Constructable<SDSDialogTargetMixinInterface> & T {\n\tclass SDSDialogTarget extends superClass {\n\t\t@property({ type: String, attribute: 'command', reflect: true }) command?: DialogCommand;\n\t\t@property({ type: String, attribute: 'commandfor', reflect: true }) commandFor?: string;\n\t\t@property({ type: String, attribute: 'data-command' }) dataCommand?: DialogCommand;\n\t\t@property({ type: String, attribute: 'data-commandfor' }) dataCommandFor?: string;\n\n\t\tprivate _dialogElement?: SDSDialog;\n\t\tprivate _dialogOpenObserver?: MutationObserver;\n\n\t\tget effectiveCommand(): DialogCommand | undefined {\n\t\t\treturn this.command ?? this.dataCommand;\n\t\t}\n\n\t\tget effectiveCommandFor(): string | undefined {\n\t\t\treturn this.commandFor ?? this.dataCommandFor;\n\t\t}\n\n\t\toverride updated(changed: PropertyValues) {\n\t\t\tsuper.updated(changed);\n\n\t\t\tif (changed.has('command') || changed.has('commandFor') || changed.has('dataCommand') || changed.has('dataCommandFor')) {\n\t\t\t\tthis._updateCommandTarget();\n\t\t\t}\n\t\t}\n\n\t\toverride disconnectedCallback() {\n\t\t\tsuper.disconnectedCallback();\n\t\t\tthis._cleanupDialogObserver();\n\t\t}\n\n\t\tprivate _cleanupDialogObserver() {\n\t\t\tif (this._dialogOpenObserver) {\n\t\t\t\tthis._dialogOpenObserver.disconnect();\n\t\t\t\tthis._dialogOpenObserver = undefined;\n\t\t\t}\n\t\t\tthis._dialogElement = undefined;\n\t\t}\n\n\t\tprivate _observeDialog(button: HTMLButtonElement, dialog: SDSDialog) {\n\t\t\t// Observe the 'open' attribute to detect when the dialog opens\n\t\t\tthis._dialogOpenObserver = new MutationObserver((mutations) => {\n\t\t\t\tfor (const mutation of mutations) {\n\t\t\t\t\tif (mutation.attributeName === 'open') {\n\t\t\t\t\t\tconst isOpen = dialog.hasAttribute('open');\n\t\t\t\t\t\tbutton.setAttribute('aria-expanded', String(isOpen));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis._dialogOpenObserver.observe(dialog, { attributes: true, attributeFilter: ['open'] });\n\t\t}\n\n\t\tprivate _clearAriaFields(button: HTMLButtonElement) {\n\t\t\tbutton.removeAttribute('aria-haspopup');\n\t\t\tbutton.removeAttribute('aria-expanded');\n\t\t\tbutton.removeAttribute('aria-controls');\n\t\t}\n\n\t\tprivate _updateCommandTarget() {\n\t\t\tthis._cleanupDialogObserver();\n\n\t\t\tconst internalButton = this.shadowRoot?.querySelector<HTMLButtonElement>('#control');\n\t\t\tif (!internalButton) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst command = this.effectiveCommand;\n\t\t\tconst commandFor = this.effectiveCommandFor;\n\n\t\t\tif (!commandFor || !command) {\n\t\t\t\tthis._clearAriaFields(internalButton);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\t\tconst targetDialog = root.getElementById?.(commandFor) ?? document.getElementById(commandFor);\n\n\t\t\tif (!isSDSDialog(targetDialog)) {\n\t\t\t\tthis._clearAriaFields(internalButton);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._dialogElement = targetDialog;\n\n\t\t\tif (command === 'show-modal') {\n\t\t\t\tinternalButton.setAttribute('aria-haspopup', 'dialog');\n\t\t\t\tinternalButton.setAttribute('aria-expanded', String(targetDialog.open));\n\t\t\t\tinternalButton.setAttribute('aria-controls', commandFor);\n\t\t\t\tthis._observeDialog(internalButton, targetDialog);\n\t\t\t} else {\n\t\t\t\tthis._clearAriaFields(internalButton);\n\t\t\t}\n\t\t}\n\n\t\trunDialogCommand(): void {\n\t\t\tif (!this._dialogElement) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (this.effectiveCommand) {\n\t\t\t\tcase 'show-modal':\n\t\t\t\t\tthis._dialogElement.showModal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'close':\n\t\t\t\t\tthis._dialogElement.close();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'request-close':\n\t\t\t\t\tthis._dialogElement.requestClose();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn SDSDialogTarget;\n}\n"]}
1
+ {"version":3,"file":"sds-dialog-target-mixin.js","sourceRoot":"","sources":["../../src/mixins/sds-dialog-target-mixin.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Constructable } from './types';\n\nimport type { SDSDialog } from '../sds-dialog/sds-dialog';\n\ntype DialogCommand = 'close' | 'request-close' | 'show-modal';\n\nfunction isSDSDialog(node: Element | null): node is SDSDialog {\n\treturn node != null && 'showModal' in node && 'requestClose' in node && 'close' in node && 'open' in node;\n}\n\nexport interface SDSDialogTargetMixinInterface {\n\tcommand?: DialogCommand;\n\tcommandFor?: string;\n\treadonly effectiveCommand?: DialogCommand;\n\treadonly effectiveCommandFor?: string;\n\trunDialogCommand(): void;\n}\n\nexport function SDSDialogTargetMixin<T extends Constructable<LitElement>>(superClass: T): Constructable<SDSDialogTargetMixinInterface> & T {\n\tclass SDSDialogTarget extends superClass {\n\t\t@property({ type: String, attribute: 'command', reflect: true }) command?: DialogCommand;\n\t\t@property({ type: String, attribute: 'commandfor', reflect: true }) commandFor?: string;\n\t\t@property({ type: String, attribute: 'data-command' }) dataCommand?: DialogCommand;\n\t\t@property({ type: String, attribute: 'data-commandfor' }) dataCommandFor?: string;\n\n\t\tprivate _dialogElement?: SDSDialog;\n\t\tprivate _dialogOpenObserver?: MutationObserver;\n\n\t\tget effectiveCommand(): DialogCommand | undefined {\n\t\t\treturn this.command ?? this.dataCommand;\n\t\t}\n\n\t\tget effectiveCommandFor(): string | undefined {\n\t\t\treturn this.commandFor ?? this.dataCommandFor;\n\t\t}\n\n\t\toverride updated(changed: PropertyValues) {\n\t\t\tsuper.updated(changed);\n\n\t\t\tif (changed.has('command') || changed.has('commandFor') || changed.has('dataCommand') || changed.has('dataCommandFor')) {\n\t\t\t\tthis._updateCommandTarget();\n\t\t\t}\n\t\t}\n\n\t\toverride connectedCallback() {\n\t\t\tsuper.connectedCallback();\n\t\t\t// React moves keyed nodes by disconnect/reconnect without changing props, so updated() won't re-run.\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis._updateCommandTarget();\n\t\t\t}\n\t\t}\n\n\t\toverride disconnectedCallback() {\n\t\t\tsuper.disconnectedCallback();\n\t\t\tthis._cleanupDialogObserver();\n\t\t}\n\n\t\tprivate _cleanupDialogObserver() {\n\t\t\tif (this._dialogOpenObserver) {\n\t\t\t\tthis._dialogOpenObserver.disconnect();\n\t\t\t\tthis._dialogOpenObserver = undefined;\n\t\t\t}\n\t\t\tthis._dialogElement = undefined;\n\t\t}\n\n\t\tprivate _observeDialog(button: HTMLButtonElement, dialog: SDSDialog) {\n\t\t\t// Observe the 'open' attribute to detect when the dialog opens\n\t\t\tthis._dialogOpenObserver = new MutationObserver((mutations) => {\n\t\t\t\tfor (const mutation of mutations) {\n\t\t\t\t\tif (mutation.attributeName === 'open') {\n\t\t\t\t\t\tconst isOpen = dialog.hasAttribute('open');\n\t\t\t\t\t\tbutton.setAttribute('aria-expanded', String(isOpen));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis._dialogOpenObserver.observe(dialog, { attributes: true, attributeFilter: ['open'] });\n\t\t}\n\n\t\tprivate _clearAriaFields(button: HTMLButtonElement) {\n\t\t\tbutton.removeAttribute('aria-haspopup');\n\t\t\tbutton.removeAttribute('aria-expanded');\n\t\t\tbutton.removeAttribute('aria-controls');\n\t\t}\n\n\t\tprivate _updateCommandTarget() {\n\t\t\tthis._cleanupDialogObserver();\n\n\t\t\tconst internalButton = this.shadowRoot?.querySelector<HTMLButtonElement>('#control');\n\t\t\tif (!internalButton) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst command = this.effectiveCommand;\n\t\t\tconst commandFor = this.effectiveCommandFor;\n\n\t\t\tif (!commandFor || !command) {\n\t\t\t\tthis._clearAriaFields(internalButton);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\t\tconst targetDialog = root.getElementById?.(commandFor) ?? document.getElementById(commandFor);\n\n\t\t\tif (!isSDSDialog(targetDialog)) {\n\t\t\t\tthis._clearAriaFields(internalButton);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._dialogElement = targetDialog;\n\n\t\t\tif (command === 'show-modal') {\n\t\t\t\tinternalButton.setAttribute('aria-haspopup', 'dialog');\n\t\t\t\tinternalButton.setAttribute('aria-expanded', String(targetDialog.open));\n\t\t\t\tinternalButton.setAttribute('aria-controls', commandFor);\n\t\t\t\tthis._observeDialog(internalButton, targetDialog);\n\t\t\t} else {\n\t\t\t\tthis._clearAriaFields(internalButton);\n\t\t\t}\n\t\t}\n\n\t\trunDialogCommand(): void {\n\t\t\tif (!this._dialogElement?.isConnected) {\n\t\t\t\tthis._updateCommandTarget();\n\t\t\t}\n\n\t\t\tif (!this._dialogElement) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (this.effectiveCommand) {\n\t\t\t\tcase 'show-modal':\n\t\t\t\t\tthis._dialogElement.showModal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'close':\n\t\t\t\t\tthis._dialogElement.close();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'request-close':\n\t\t\t\t\tthis._dialogElement.requestClose();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn SDSDialogTarget;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sds-button.styles.d.ts","sourceRoot":"","sources":["../../src/sds-button/sds-button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA4PlB,CAAC"}
1
+ {"version":3,"file":"sds-button.styles.d.ts","sourceRoot":"","sources":["../../src/sds-button/sds-button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAiQlB,CAAC"}
@@ -149,7 +149,7 @@ export const styles = css `
149
149
  --_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-md));
150
150
  --_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-md));
151
151
 
152
- &:host([variant='tertiary']) {
152
+ &:host([variant='tertiary']:not([inverted])) {
153
153
  --_sds-button-padding-inline: var(--sds-button-padding-inline, 0);
154
154
  }
155
155
  }
@@ -159,7 +159,7 @@ export const styles = css `
159
159
  --_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-sm));
160
160
  --_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-sm));
161
161
 
162
- &:host([variant='tertiary']) {
162
+ &:host([variant='tertiary']:not([inverted])) {
163
163
  --_sds-button-padding-inline: var(--sds-button-padding-inline, 0);
164
164
  }
165
165
  }
@@ -227,10 +227,15 @@ export const styles = css `
227
227
  :host([inverted][variant='tertiary']) {
228
228
  --_sds-button-background-color: var(--sds-button-background-color, transparent);
229
229
  --_sds-button-border-color: var(--sds-button-border-color, transparent);
230
+ --_sds-button-padding-inline: var(--sds-button-padding-inline, var(--sds-spacing-xs));
230
231
  --_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));
231
232
  --sds-typography-link-text-decoration: none;
232
233
  --sds-loader-main-color: var(--sds-color-accent-action-contrast-default);
233
234
 
235
+ &:host([icon]) {
236
+ --_sds-button-padding-inline: var(--sds-button-padding-inline, 0);
237
+ }
238
+
234
239
  .sds-button:hover {
235
240
  --_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));
236
241
  --_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));
@@ -1 +1 @@
1
- {"version":3,"file":"sds-button.styles.js","sourceRoot":"","sources":["../../src/sds-button/sds-button.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4PxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n\t:host {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-button-border-width: var(--sds-button-border-width, var(--sds-border-sm));\n\t\t--_sds-button-disabled-opacity: var(--sds-button-disabled-opacity, var(--sds-color-states-disabled-opacity));\n\t\t--_sds-button-focus-color: var(--sds-button-focus-color, var(--sds-color-states-focus-outer));\n\t\t--_sds-button-focus-inner-color: var(--sds-button-focus-inner-color, var(--sds-color-states-focus-inner));\n\t\t--_sds-button-focus-spacing: var(--sds-button-focus-spacing, var(--sds-color-states-focus-spacing));\n\t\t--_sds-button-focus-outline-size: var(--sds-button-focus-outline-size, var(--sds-color-states-focus-outline-size));\n\t\t--_sds-button-font-family: var(--sds-button-font, var(--sds-typography-font-family));\n\t\t--_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-lg));\n\t\t--_sds-button-font-weight: var(--sds-button-font-weight, var(--sds-typography-body-md-strong-desktop-font-weight));\n\t\t--_sds-button-gap: var(--sds-button-gap, var(--sds-spacing-3xs));\n\t\t--_sds-button-line-height: var(--sds-button-line-height, var(--sds-typography-body-md-desktop-line-height));\n\t\t--_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-lg));\n\t\t--_sds-button-padding-block: var(--sds-button-padding-block, 0);\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, var(--sds-spacing-xs));\n\t\t--_sds-button-radius: var(--sds-button-radius, var(--sds-radius-sm));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-main-action-contrast-default)));\n\n\t\t--_sds-button-tertiary-text-decoration: var(--sds-typography-link-text-decoration, underline);\n\t\t--_sds-button-tertiary-text-underline-offset: var(--sds-typography-link-text-underline-offset, 4px);\n\t\t--_sds-button-tertiary-text-underline-thickness: 2px;\n\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\n\t\t::slotted(sds-icon) {\n\t\t\t--sds-icon-color: var(--_sds-button-text-color);\n\t\t}\n\t}\n\n\t.sds-button {\n\t\talign-items: center;\n\t\tbackground-color: var(--_sds-button-background-color);\n\t\tborder-radius: var(--_sds-button-radius);\n\t\tborder: var(--_sds-button-border-width) solid var(--_sds-button-border-color);\n\t\tcolor: var(--_sds-button-text-color);\n\t\tcursor: pointer;\n\t\tdisplay: inline-flex;\n\t\tfont-family: var(--_sds-button-font-family);\n\t\tfont-size: var(--_sds-button-font-size);\n\t\tfont-weight: var(--_sds-button-font-weight);\n\t\tgap: var(--_sds-button-gap);\n\t\tinline-size: 100%;\n\t\tjustify-content: center;\n\t\tline-height: var(--_sds-button-line-height);\n\t\tmin-height: var(--_sds-button-min-height);\n\t\tpadding: var(--_sds-button-padding-block) var(--_sds-button-padding-inline);\n\t\ttext-align: center;\n\n\t\t&:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-hover, var(--sds-color-main-action-hover)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-hover, var(--sds-color-main-action-hover)));\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: 0 0 0 var(--_sds-button-focus-spacing) var(--_sds-button-focus-inner-color);\n\t\t\toutline: var(--_sds-button-focus-outline-size) solid var(--_sds-button-focus-color);\n\t\t\toutline-offset: var(--_sds-button-focus-spacing);\n\t\t}\n\n\t\t&:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-active, var(--sds-color-main-action-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-active, var(--sds-color-main-action-active)));\n\t\t}\n\n\t\t&:disabled {\n\t\t\topacity: var(--_sds-button-disabled-opacity);\n\t\t\tcursor: not-allowed;\n\t\t\tpointer-events: none;\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-neutral-action-default));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-neutral-action-default));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-neutral-action-contrast-default));\n\t\t}\n\t}\n\n\t.sds-button--as-link {\n\t\tbox-sizing: border-box;\n\t\tinline-size: auto;\n\t\ttext-decoration: none;\n\t}\n\n\t:host([variant='secondary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-hover, var(--sds-color-main-surface-hover)));\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-main-surface-active)));\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-neutral-action-default));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-neutral-action-default));\n\t\t}\n\t}\n\n\t:host([variant='tertiary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-hover, var(--sds-color-main-action-hover)));\n\n\t\t\ttext-decoration: var(--_sds-button-tertiary-text-decoration);\n\t\t\ttext-decoration-thickness: var(--_sds-button-tertiary-text-underline-thickness);\n\t\t\ttext-underline-offset: var(--_sds-button-tertiary-text-underline-offset);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-active, var(--sds-color-main-action-active)));\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-neutral-action-default));\n\t\t}\n\t}\n\n\t:host([variant='tertiary']):host([icon]) {\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-hover, var(--sds-color-main-surface-hover)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-main-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t}\n\t}\n\n\t:host([size='medium']), /* Deprecated */\n\t:host([size='md']) {\n\t\t--_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-md));\n\t\t--_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-md));\n\n\t\t&:host([variant='tertiary']) {\n\t\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t}\n\t}\n\n\t:host([size='small']), /* Deprecated */\n\t:host([size='sm']) {\n\t\t--_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-sm));\n\t\t--_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-sm));\n\n\t\t&:host([variant='tertiary']) {\n\t\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t}\n\t}\n\n\t:host([icon]) {\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\tmin-width: var(--_sds-button-min-height);\n\t}\n\n\t:host([inverted]) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\n\t\t--sds-loader-main-color: var(--sds-color-action-default, var(--sds-color-accent-action-default));\n\t\t--sds-loader-secondary-color: var(--sds-color-border-subtle, var(--sds-color-accent-border-subtle));\n\t\t--sds-icon-color: var(--sds-color-action-default, var(--sds-color-accent-action-default));\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-hover, var(--sds-color-accent-surface-hover)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-hover, var(--sds-color-accent-surface-hover)));\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t}\n\t}\n\n\t:host([inverted][variant='primary']) {\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-neutral-action-default)));\n\t\t}\n\t}\n\n\t:host([inverted][variant='secondary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--sds-loader-main-color: var(--sds-color-accent-action-contrast-default);\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t}\n\t}\n\n\t:host([inverted][variant='tertiary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--sds-typography-link-text-decoration: none;\n\t\t--sds-loader-main-color: var(--sds-color-accent-action-contrast-default);\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t}\n\t}\n`;\n"]}
1
+ {"version":3,"file":"sds-button.styles.js","sourceRoot":"","sources":["../../src/sds-button/sds-button.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiQxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n\t:host {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-button-border-width: var(--sds-button-border-width, var(--sds-border-sm));\n\t\t--_sds-button-disabled-opacity: var(--sds-button-disabled-opacity, var(--sds-color-states-disabled-opacity));\n\t\t--_sds-button-focus-color: var(--sds-button-focus-color, var(--sds-color-states-focus-outer));\n\t\t--_sds-button-focus-inner-color: var(--sds-button-focus-inner-color, var(--sds-color-states-focus-inner));\n\t\t--_sds-button-focus-spacing: var(--sds-button-focus-spacing, var(--sds-color-states-focus-spacing));\n\t\t--_sds-button-focus-outline-size: var(--sds-button-focus-outline-size, var(--sds-color-states-focus-outline-size));\n\t\t--_sds-button-font-family: var(--sds-button-font, var(--sds-typography-font-family));\n\t\t--_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-lg));\n\t\t--_sds-button-font-weight: var(--sds-button-font-weight, var(--sds-typography-body-md-strong-desktop-font-weight));\n\t\t--_sds-button-gap: var(--sds-button-gap, var(--sds-spacing-3xs));\n\t\t--_sds-button-line-height: var(--sds-button-line-height, var(--sds-typography-body-md-desktop-line-height));\n\t\t--_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-lg));\n\t\t--_sds-button-padding-block: var(--sds-button-padding-block, 0);\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, var(--sds-spacing-xs));\n\t\t--_sds-button-radius: var(--sds-button-radius, var(--sds-radius-sm));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-main-action-contrast-default)));\n\n\t\t--_sds-button-tertiary-text-decoration: var(--sds-typography-link-text-decoration, underline);\n\t\t--_sds-button-tertiary-text-underline-offset: var(--sds-typography-link-text-underline-offset, 4px);\n\t\t--_sds-button-tertiary-text-underline-thickness: 2px;\n\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\n\t\t::slotted(sds-icon) {\n\t\t\t--sds-icon-color: var(--_sds-button-text-color);\n\t\t}\n\t}\n\n\t.sds-button {\n\t\talign-items: center;\n\t\tbackground-color: var(--_sds-button-background-color);\n\t\tborder-radius: var(--_sds-button-radius);\n\t\tborder: var(--_sds-button-border-width) solid var(--_sds-button-border-color);\n\t\tcolor: var(--_sds-button-text-color);\n\t\tcursor: pointer;\n\t\tdisplay: inline-flex;\n\t\tfont-family: var(--_sds-button-font-family);\n\t\tfont-size: var(--_sds-button-font-size);\n\t\tfont-weight: var(--_sds-button-font-weight);\n\t\tgap: var(--_sds-button-gap);\n\t\tinline-size: 100%;\n\t\tjustify-content: center;\n\t\tline-height: var(--_sds-button-line-height);\n\t\tmin-height: var(--_sds-button-min-height);\n\t\tpadding: var(--_sds-button-padding-block) var(--_sds-button-padding-inline);\n\t\ttext-align: center;\n\n\t\t&:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-hover, var(--sds-color-main-action-hover)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-hover, var(--sds-color-main-action-hover)));\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: 0 0 0 var(--_sds-button-focus-spacing) var(--_sds-button-focus-inner-color);\n\t\t\toutline: var(--_sds-button-focus-outline-size) solid var(--_sds-button-focus-color);\n\t\t\toutline-offset: var(--_sds-button-focus-spacing);\n\t\t}\n\n\t\t&:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-active, var(--sds-color-main-action-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-active, var(--sds-color-main-action-active)));\n\t\t}\n\n\t\t&:disabled {\n\t\t\topacity: var(--_sds-button-disabled-opacity);\n\t\t\tcursor: not-allowed;\n\t\t\tpointer-events: none;\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-neutral-action-default));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-neutral-action-default));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-neutral-action-contrast-default));\n\t\t}\n\t}\n\n\t.sds-button--as-link {\n\t\tbox-sizing: border-box;\n\t\tinline-size: auto;\n\t\ttext-decoration: none;\n\t}\n\n\t:host([variant='secondary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-hover, var(--sds-color-main-surface-hover)));\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-main-surface-active)));\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-neutral-action-default));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-neutral-action-default));\n\t\t}\n\t}\n\n\t:host([variant='tertiary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-hover, var(--sds-color-main-action-hover)));\n\n\t\t\ttext-decoration: var(--_sds-button-tertiary-text-decoration);\n\t\t\ttext-decoration-thickness: var(--_sds-button-tertiary-text-underline-thickness);\n\t\t\ttext-underline-offset: var(--_sds-button-tertiary-text-underline-offset);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-active, var(--sds-color-main-action-active)));\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-neutral-action-default));\n\t\t}\n\t}\n\n\t:host([variant='tertiary']):host([icon]) {\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-hover, var(--sds-color-main-surface-hover)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-main-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t}\n\t}\n\n\t:host([size='medium']), /* Deprecated */\n\t:host([size='md']) {\n\t\t--_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-md));\n\t\t--_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-md));\n\n\t\t&:host([variant='tertiary']:not([inverted])) {\n\t\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t}\n\t}\n\n\t:host([size='small']), /* Deprecated */\n\t:host([size='sm']) {\n\t\t--_sds-button-min-height: var(--sds-button-height, var(--sds-components-button-sm));\n\t\t--_sds-button-font-size: var(--sds-button-font-size, var(--sds-components-font-size-content-sm));\n\n\t\t&:host([variant='tertiary']:not([inverted])) {\n\t\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t}\n\t}\n\n\t:host([icon]) {\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\tmin-width: var(--_sds-button-min-height);\n\t}\n\n\t:host([inverted]) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\n\t\t--sds-loader-main-color: var(--sds-color-action-default, var(--sds-color-accent-action-default));\n\t\t--sds-loader-secondary-color: var(--sds-color-border-subtle, var(--sds-color-accent-border-subtle));\n\t\t--sds-icon-color: var(--sds-color-action-default, var(--sds-color-accent-action-default));\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-hover, var(--sds-color-accent-surface-hover)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-hover, var(--sds-color-accent-surface-hover)));\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t}\n\t}\n\n\t:host([inverted][variant='primary']) {\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-neutral-action-default)));\n\t\t}\n\t}\n\n\t:host([inverted][variant='secondary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--sds-loader-main-color: var(--sds-color-accent-action-contrast-default);\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t}\n\t}\n\n\t:host([inverted][variant='tertiary']) {\n\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, var(--sds-spacing-xs));\n\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t--sds-typography-link-text-decoration: none;\n\t\t--sds-loader-main-color: var(--sds-color-accent-action-contrast-default);\n\n\t\t&:host([icon]) {\n\t\t\t--_sds-button-padding-inline: var(--sds-button-padding-inline, 0);\n\t\t}\n\n\t\t.sds-button:hover {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-action-contrast-default, var(--sds-color-accent-action-contrast-default)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:active {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, var(--sds-color-surface-active, var(--sds-color-accent-surface-active)));\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-default, var(--sds-color-accent-action-default)));\n\t\t\t--sds-loader-main-color: var(--sds-color-accent-action-default);\n\t\t}\n\n\t\t.sds-button:disabled {\n\t\t\t--_sds-button-background-color: var(--sds-button-background-color, transparent);\n\t\t\t--_sds-button-border-color: var(--sds-button-border-color, transparent);\n\t\t\t--_sds-button-text-color: var(--sds-button-text-color, var(--sds-color-action-contrast-default, var(--sds-color-neutral-action-contrast-default)));\n\t\t}\n\t}\n`;\n"]}
@@ -17,6 +17,11 @@ export interface SDSRadioProps extends SDSFormControlAttributes {
17
17
  declare const SDSRadio_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 SDSElement;
18
18
  export declare class SDSRadio extends SDSRadio_base {
19
19
  static styles: import("lit").CSSResult[];
20
+ /**
21
+ * The host carries `role="radio"` and must receive focus itself, so focus must not be
22
+ * delegated into the shadow root the way SDSFormControlMixin sets up by default.
23
+ */
24
+ static shadowRootOptions: ShadowRootInit;
20
25
  required: SDSRadioProps['required'];
21
26
  label: SDSRadioProps['label'];
22
27
  hideLabel: SDSRadioProps['hide-label'];
@@ -41,24 +46,71 @@ export declare class SDSRadio extends SDSRadio_base {
41
46
  get parentRequestDisabled(): SDSRadioProps['parentRequestDisabled'];
42
47
  set parentRequestDisabled(value: SDSRadioProps['parentRequestDisabled']);
43
48
  control: HTMLInputElement;
49
+ private _helpTextElement?;
44
50
  private _hasSlottedLabel;
51
+ private _slottedLabelText;
52
+ private _rootNode;
45
53
  private _disabled;
46
54
  private _disabledIsAuthorControlled;
47
55
  private _settingDisabledFromParent;
48
56
  private _parentRequestDisabled;
49
57
  private _initialChecked;
58
+ private _pendingGroupSync;
50
59
  connectedCallback(): void;
51
60
  disconnectedCallback(): void;
52
61
  firstUpdated(_changedProperties: PropertyValues): void;
53
62
  updated(changedProperties: Map<string | number | symbol, unknown>): void;
63
+ /**
64
+ * Matches on the `name` property rather than the reflected attribute, so radios created
65
+ * imperatively are found before Lit has reflected `name` back out.
66
+ */
54
67
  private _getGroupRadios;
68
+ /**
69
+ * Mirrors state onto the host, which is the radio in the accessibility tree.
70
+ *
71
+ * Written as attributes rather than through ElementInternals: internals ARIA is
72
+ * IDL-only, so assistive technology sees it but axe, Playwright and Testing Library —
73
+ * which all resolve role and name from attributes — do not.
74
+ */
75
+ private _syncHostAria;
76
+ private static readonly _supportsAriaElementReferences;
77
+ /** Not every browser focuses a tabindex host on click, and the host must hold focus. */
78
+ private readonly _handleMouseDown;
79
+ /**
80
+ * The label is deliberately not associated with the inert input — a `for` would make
81
+ * getByLabel and friends resolve to an unclickable element — so selection is driven here.
82
+ */
83
+ private readonly _handleClick;
84
+ /**
85
+ * Selection never goes through the inner input: its click is composed, so it would
86
+ * retarget to the host and every click would be seen twice from the outside.
87
+ * Like a native radio, this only fires `change` when the checkedness actually changes.
88
+ */
89
+ private _select;
90
+ /**
91
+ * A radio group does not cross shadow roots, so the browser sees each radio as a set of
92
+ * one. State the position explicitly across the whole name-group instead.
93
+ */
94
+ private _updateGroupPositions;
95
+ /** A radio group is one tab stop: the checked option, or the first enabled one. */
96
+ private _updateGroupTabStops;
97
+ private _syncGroup;
98
+ /**
99
+ * Conditional rendering and reordering both run through disconnect/connect, while
100
+ * firstUpdated only ever fires once. Membership is recomputed from the microtask so the
101
+ * surrounding batch of insertions has settled — and so every member has been upgraded,
102
+ * since a non-upgraded element matches the selector but has no `name`.
103
+ */
104
+ private _scheduleGroupSync;
55
105
  private _updateGroupValidation;
56
106
  private readonly _handleKeydown;
57
107
  formResetCallback(): void;
58
108
  private _uncheckSiblings;
59
- private readonly _handleChange;
60
109
  private readonly _handleFocus;
61
110
  private readonly _handleBlur;
111
+ focus(options?: FocusOptions): void;
112
+ blur(): void;
113
+ click(): void;
62
114
  get type(): string;
63
115
  get validity(): ValidityState;
64
116
  get validationMessage(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"sds-radio.d.ts","sourceRoot":"","sources":["../../src/sds-radio/sds-radio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sds-radio.d.ts","sourceRoot":"","sources":["../../src/sds-radio/sds-radio.ts"],"names":[],"mappings":"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"}