@1024pix/pix-ui 42.0.3 → 43.0.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/addon/components/pix-checkbox.hbs +11 -7
- package/addon/components/pix-checkbox.js +0 -14
- package/addon/components/pix-filterable-and-searchable-select.hbs +8 -8
- package/addon/components/pix-filterable-and-searchable-select.js +0 -8
- package/addon/components/pix-input-password.hbs +9 -14
- package/addon/components/pix-input.hbs +9 -14
- package/addon/components/pix-input.js +0 -8
- package/addon/components/pix-label.hbs +11 -0
- package/addon/components/pix-label.js +19 -0
- package/addon/components/pix-multi-select.hbs +9 -6
- package/addon/components/pix-radio-button.hbs +10 -7
- package/addon/components/pix-search-input.hbs +9 -4
- package/addon/components/pix-select.hbs +10 -12
- package/addon/components/pix-select.js +0 -3
- package/addon/components/pix-selectable-tag.hbs +3 -3
- package/addon/components/pix-selectable-tag.js +1 -5
- package/addon/components/pix-textarea.hbs +11 -12
- package/addon/components/pix-textarea.js +1 -22
- package/addon/components/pix-toggle.hbs +10 -3
- package/addon/components/pix-toggle.js +5 -6
- package/addon/styles/_pix-button-base.scss +2 -1
- package/addon/styles/_pix-checkbox.scss +1 -18
- package/addon/styles/_pix-filterable-and-searchable-select.scss +0 -8
- package/addon/styles/_pix-input-code.scss +0 -4
- package/addon/styles/_pix-input-password.scss +0 -2
- package/addon/styles/_pix-input.scss +1 -11
- package/addon/styles/_pix-label.scss +35 -0
- package/addon/styles/_pix-multi-select.scss +0 -4
- package/addon/styles/_pix-radio-button.scss +1 -9
- package/addon/styles/_pix-search-input.scss +18 -30
- package/addon/styles/_pix-select.scss +0 -8
- package/addon/styles/_pix-textarea.scss +0 -4
- package/addon/styles/_pix-toggle.scss +0 -22
- package/addon/styles/addon.scss +1 -0
- package/addon/styles/component-state/_form.scss +5 -19
- package/addon/styles/pix-design-tokens/_typography.scss +17 -17
- package/app/components/pix-label.js +1 -0
- package/app/stories/form.stories.js +5 -0
- package/app/stories/pix-checkbox.mdx +0 -6
- package/app/stories/pix-checkbox.stories.js +18 -15
- package/app/stories/pix-filterable-and-searchable-select.stories.js +11 -0
- package/app/stories/pix-input-password.mdx +2 -4
- package/app/stories/pix-input-password.stories.js +10 -5
- package/app/stories/pix-input.mdx +3 -5
- package/app/stories/pix-input.stories.js +11 -6
- package/app/stories/pix-label.mdx +46 -0
- package/app/stories/pix-label.stories.js +102 -0
- package/app/stories/pix-multi-select.stories.js +11 -0
- package/app/stories/pix-radio-button.stories.js +40 -6
- package/app/stories/pix-search-input.mdx +9 -2
- package/app/stories/pix-search-input.stories.js +7 -7
- package/app/stories/pix-select.stories.js +11 -0
- package/app/stories/pix-textarea.stories.js +17 -0
- package/app/stories/pix-toggle.stories.js +17 -0
- package/package.json +6 -6
|
@@ -4,14 +4,18 @@
|
|
|
4
4
|
id={{this.id}}
|
|
5
5
|
class={{this.inputClasses}}
|
|
6
6
|
checked={{@checked}}
|
|
7
|
+
aria-disabled={{@isDisabled}}
|
|
7
8
|
...attributes
|
|
8
9
|
/>
|
|
9
10
|
|
|
10
|
-
<
|
|
11
|
-
{{
|
|
12
|
-
|
|
13
|
-
{{
|
|
14
|
-
|
|
15
|
-
{{
|
|
16
|
-
|
|
11
|
+
<PixLabel
|
|
12
|
+
@for={{this.id}}
|
|
13
|
+
@requiredLabel={{@requiredLabel}}
|
|
14
|
+
@labelSize={{@labelSize}}
|
|
15
|
+
@inlineLabel={{true}}
|
|
16
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
17
|
+
@isDisabled={{@isDisabled}}
|
|
18
|
+
>
|
|
19
|
+
{{yield}}
|
|
20
|
+
</PixLabel>
|
|
17
21
|
</div>
|
|
@@ -19,18 +19,4 @@ export default class PixCheckbox extends Component {
|
|
|
19
19
|
|
|
20
20
|
return classes.join(' ');
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
get labelClasses() {
|
|
24
|
-
const classes = ['pix-checkbox__label'];
|
|
25
|
-
|
|
26
|
-
if (this.args.labelSize) {
|
|
27
|
-
classes.push(`${classes[0]}--${this.args.labelSize}`);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (this.args.screenReaderOnly) {
|
|
31
|
-
classes.push('screen-reader-only');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return classes.join(' ');
|
|
35
|
-
}
|
|
36
22
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<div id={{this.mainId}} ...attributes>
|
|
2
|
-
<
|
|
3
|
-
{{
|
|
4
|
-
|
|
5
|
-
{{
|
|
2
|
+
<PixLabel
|
|
3
|
+
@for={{this.pixSelectId}}
|
|
4
|
+
@requiredLabel={{@requiredText}}
|
|
5
|
+
@labelSize={{@labelSize}}
|
|
6
|
+
@subLabel={{@subLabel}}
|
|
7
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
8
|
+
>
|
|
6
9
|
{{@label}}
|
|
7
|
-
|
|
8
|
-
<span class="pix-select__sub-label">{{@subLabel}}</span>
|
|
9
|
-
{{/if}}
|
|
10
|
-
</label>
|
|
10
|
+
</PixLabel>
|
|
11
11
|
<div
|
|
12
12
|
class="pix-filterable-and-searchable-select{{if
|
|
13
13
|
@errorMessage
|
|
@@ -15,14 +15,6 @@ export default class PixFilterableAndSearchableSelect extends Component {
|
|
|
15
15
|
this.selectedCategories = categories;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
get classLabel() {
|
|
19
|
-
const cssClass = ['pix-filterable-and-searchable-select__label'];
|
|
20
|
-
|
|
21
|
-
if (this.args.screenReaderOnly) cssClass.push('screen-reader-only');
|
|
22
|
-
|
|
23
|
-
return cssClass.join(' ');
|
|
24
|
-
}
|
|
25
|
-
|
|
26
18
|
get categories() {
|
|
27
19
|
const categoryNames = [];
|
|
28
20
|
this.args.options.forEach((option) => {
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
<div class="pix-input-password">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<span class="pix-input__sub-label">{{@information}}</span>
|
|
12
|
-
{{/if}}
|
|
13
|
-
</label>
|
|
14
|
-
{{/if}}
|
|
2
|
+
<PixLabel
|
|
3
|
+
@for={{this.id}}
|
|
4
|
+
@requiredLabel={{@requiredLabel}}
|
|
5
|
+
@labelSize={{@labelSize}}
|
|
6
|
+
@subLabel={{@information}}
|
|
7
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
8
|
+
>
|
|
9
|
+
{{@label}}
|
|
10
|
+
</PixLabel>
|
|
15
11
|
<div
|
|
16
12
|
class="pix-input-password__container
|
|
17
13
|
{{this.validationStatusClassName}}
|
|
@@ -26,7 +22,6 @@
|
|
|
26
22
|
id={{this.id}}
|
|
27
23
|
type={{if this.isPasswordVisible "text" "password"}}
|
|
28
24
|
value={{@value}}
|
|
29
|
-
aria-label={{this.ariaLabel}}
|
|
30
25
|
aria-required="{{if @requiredLabel true false}}"
|
|
31
26
|
required={{if @requiredLabel true false}}
|
|
32
27
|
aria-describedby={{if (eq @validationStatus "error") "text-input-password-error"}}
|
|
@@ -1,24 +1,19 @@
|
|
|
1
1
|
<div class="pix-input">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<span class="pix-input__sub-label">{{@information}}</span>
|
|
12
|
-
{{/if}}
|
|
13
|
-
</label>
|
|
14
|
-
{{/if}}
|
|
2
|
+
<PixLabel
|
|
3
|
+
@for={{this.id}}
|
|
4
|
+
@requiredLabel={{@requiredLabel}}
|
|
5
|
+
@subLabel={{@information}}
|
|
6
|
+
@labelSize={{@labelSize}}
|
|
7
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
8
|
+
>
|
|
9
|
+
{{@label}}
|
|
10
|
+
</PixLabel>
|
|
15
11
|
|
|
16
12
|
<div class="pix-input__container">
|
|
17
13
|
<input
|
|
18
14
|
id={{this.id}}
|
|
19
15
|
class="pix-input__input {{this.validationStatusClassName}}"
|
|
20
16
|
value={{@value}}
|
|
21
|
-
aria-label={{this.ariaLabel}}
|
|
22
17
|
aria-required="{{if @requiredLabel true false}}"
|
|
23
18
|
required={{if @requiredLabel true false}}
|
|
24
19
|
aria-describedby={{if (eq @validationStatus "error") "text-input-error"}}
|
|
@@ -14,14 +14,6 @@ export default class PixInput extends Component {
|
|
|
14
14
|
return this.args.id;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
get label() {
|
|
18
|
-
return this.args.label;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
get ariaLabel() {
|
|
22
|
-
return this.args.label ? null : this.args.ariaLabel;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
17
|
get validationStatusClassName() {
|
|
26
18
|
return INPUT_VALIDATION_STATUS_MAP[this.args.validationStatus] || '';
|
|
27
19
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<label for={{@for}} class={{this.className}} ...attributes>
|
|
2
|
+
{{#if @requiredLabel}}
|
|
3
|
+
<abbr title={{@requiredLabel}} class="mandatory-mark">*</abbr>
|
|
4
|
+
{{/if}}
|
|
5
|
+
|
|
6
|
+
{{yield}}
|
|
7
|
+
|
|
8
|
+
{{#if @subLabel}}
|
|
9
|
+
<span class="pix-label__sub-label">{{@subLabel}}</span>
|
|
10
|
+
{{/if}}
|
|
11
|
+
</label>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
|
|
3
|
+
export default class PixLabel extends Component {
|
|
4
|
+
get className() {
|
|
5
|
+
const classes = ['pix-label'];
|
|
6
|
+
|
|
7
|
+
if (this.args.screenReaderOnly) classes.push('screen-reader-only');
|
|
8
|
+
if (this.args.inlineLabel) classes.push('pix-label--inline-label');
|
|
9
|
+
if (this.args.isDisabled) classes.push('pix-label--disabled');
|
|
10
|
+
|
|
11
|
+
const labelSize = ['small', 'large'].includes(this.args.labelSize)
|
|
12
|
+
? this.args.labelSize
|
|
13
|
+
: 'default';
|
|
14
|
+
|
|
15
|
+
classes.push(`pix-label--${labelSize}`);
|
|
16
|
+
|
|
17
|
+
return classes.join(' ');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -5,13 +5,16 @@
|
|
|
5
5
|
{{on-arrow-down-up-action this.listId this.showDropDown this.isExpanded}}
|
|
6
6
|
{{on-escape-action this.hideDropDown this.multiSelectId}}
|
|
7
7
|
>
|
|
8
|
+
<PixLabel
|
|
9
|
+
@for={{this.multiSelectId}}
|
|
10
|
+
@requiredLabel={{@requiredText}}
|
|
11
|
+
@subLabel={{@subLabel}}
|
|
12
|
+
@labelSize={{@labelSize}}
|
|
13
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
14
|
+
>
|
|
15
|
+
{{@label}}
|
|
16
|
+
</PixLabel>
|
|
8
17
|
|
|
9
|
-
{{#if @label}}
|
|
10
|
-
<label
|
|
11
|
-
for={{this.multiSelectId}}
|
|
12
|
-
class="pix-multi-select__label{{if @screenReaderOnly ' screen-reader-only'}}"
|
|
13
|
-
>{{@label}}</label>
|
|
14
|
-
{{/if}}
|
|
15
18
|
<PopperJS @placement={{@placement}} as |reference popover|>
|
|
16
19
|
|
|
17
20
|
{{#if @isSearchable}}
|
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
value={{@value}}
|
|
7
7
|
...attributes
|
|
8
8
|
/>
|
|
9
|
-
<
|
|
10
|
-
{{
|
|
11
|
-
|
|
12
|
-
{{
|
|
13
|
-
|
|
14
|
-
{{
|
|
15
|
-
|
|
9
|
+
<PixLabel
|
|
10
|
+
@for={{this.id}}
|
|
11
|
+
@requiredLabel={{@requiredLabel}}
|
|
12
|
+
@labelSize={{@labelSize}}
|
|
13
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
14
|
+
@isDisabled={{@isDisabled}}
|
|
15
|
+
@inlineLabel={{true}}
|
|
16
|
+
>
|
|
17
|
+
{{yield}}
|
|
18
|
+
</PixLabel>
|
|
16
19
|
</div>
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
<div class="pix-search-input">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<PixLabel
|
|
3
|
+
@for={{this.searchInputId}}
|
|
4
|
+
@requiredLabel={{@requiredText}}
|
|
5
|
+
@subLabel={{@subLabel}}
|
|
6
|
+
@labelSize={{@labelSize}}
|
|
7
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
8
|
+
>
|
|
9
|
+
{{@label}}
|
|
10
|
+
</PixLabel>
|
|
5
11
|
|
|
6
12
|
<div class="pix-search-input__input-container">
|
|
7
13
|
<FaIcon @icon="magnifying-glass" />
|
|
@@ -10,7 +16,6 @@
|
|
|
10
16
|
class="pix-search-input__input"
|
|
11
17
|
name={{@inputName}}
|
|
12
18
|
placeholder={{@placeholder}}
|
|
13
|
-
aria-label={{this.ariaLabel}}
|
|
14
19
|
value={{@value}}
|
|
15
20
|
oninput={{this.onSearch}}
|
|
16
21
|
...attributes
|
|
@@ -9,19 +9,17 @@
|
|
|
9
9
|
...attributes
|
|
10
10
|
>
|
|
11
11
|
{{#if @label}}
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<span class="pix-select__sub-label">{{@subLabel}}</span>
|
|
22
|
-
{{/if}}
|
|
23
|
-
</div>
|
|
12
|
+
<PixLabel
|
|
13
|
+
@for={{this.selectId}}
|
|
14
|
+
@requiredLabel={{@requiredText}}
|
|
15
|
+
@subLabel={{@subLabel}}
|
|
16
|
+
@labelSize={{@labelSize}}
|
|
17
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
18
|
+
>
|
|
19
|
+
{{@label}}
|
|
20
|
+
</PixLabel>
|
|
24
21
|
{{/if}}
|
|
22
|
+
|
|
25
23
|
<PopperJS @placement={{@placement}} as |reference popover|>
|
|
26
24
|
<button
|
|
27
25
|
{{reference}}
|
|
@@ -12,9 +12,6 @@ export default class PixSelect extends Component {
|
|
|
12
12
|
constructor(...args) {
|
|
13
13
|
super(...args);
|
|
14
14
|
|
|
15
|
-
if (!this.args.label && !this.args.id)
|
|
16
|
-
throw new Error('ERROR in PixSelect, a @label or an @id was not provided');
|
|
17
|
-
|
|
18
15
|
const categories = [];
|
|
19
16
|
this.args.options.forEach((element) => {
|
|
20
17
|
if (!categories.includes(element.category) && element.category !== undefined) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<div class="pix-selectable-tag {{if
|
|
1
|
+
<div class="pix-selectable-tag {{if @checked ' pix-selectable-tag--checked'}}">
|
|
2
2
|
<input
|
|
3
3
|
type="checkbox"
|
|
4
4
|
id={{@id}}
|
|
5
|
-
|
|
6
|
-
checked={{
|
|
5
|
+
{{on "change" this.toggleIsChecked}}
|
|
6
|
+
checked={{@checked}}
|
|
7
7
|
...attributes
|
|
8
8
|
/>
|
|
9
9
|
<label for={{@id}}>{{@label}}</label>
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
-
import { tracked } from '@glimmer/tracking';
|
|
3
2
|
import { action } from '@ember/object';
|
|
4
3
|
|
|
5
4
|
export default class PixSelectableTag extends Component {
|
|
6
|
-
@tracked isChecked = this.args.checked;
|
|
7
|
-
|
|
8
5
|
@action
|
|
9
6
|
toggleIsChecked() {
|
|
10
|
-
this.
|
|
11
|
-
return this.args.onChange(this.isChecked);
|
|
7
|
+
return this.args.onChange(!this.args.checked);
|
|
12
8
|
}
|
|
13
9
|
}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
<div class="pix-textarea">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{{/if}}
|
|
2
|
+
<PixLabel
|
|
3
|
+
@for={{@id}}
|
|
4
|
+
@requiredLabel={{@requiredLabel}}
|
|
5
|
+
@subLabel={{@subLabel}}
|
|
6
|
+
@labelSize={{@labelSize}}
|
|
7
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
8
|
+
>
|
|
9
|
+
{{@label}}
|
|
10
|
+
</PixLabel>
|
|
12
11
|
|
|
13
12
|
<textarea
|
|
14
13
|
id={{@id}}
|
|
15
14
|
maxlength={{if @maxlength @maxlength}}
|
|
16
|
-
aria-required="{{if
|
|
17
|
-
required={{if
|
|
15
|
+
aria-required="{{if @requiredLabel true false}}"
|
|
16
|
+
required={{if @requiredLabel true false}}
|
|
18
17
|
class="{{if @errorMessage 'pix-textarea--error'}}"
|
|
19
18
|
{{on "keyup" this.updateValue}}
|
|
20
19
|
...attributes
|
|
@@ -3,36 +3,15 @@ import { action } from '@ember/object';
|
|
|
3
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
4
|
|
|
5
5
|
export default class PixTextarea extends Component {
|
|
6
|
+
// eslint-disable-next-line ember/no-tracked-properties-from-args
|
|
6
7
|
@tracked value = this.args.value;
|
|
7
8
|
|
|
8
9
|
get textLengthIndicator() {
|
|
9
10
|
return this.value ? this.value.length : 0;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
get label() {
|
|
13
|
-
const labelIsDefined = this.args.label?.trim();
|
|
14
|
-
const idIsDefined = this.args.id?.trim();
|
|
15
|
-
|
|
16
|
-
if (labelIsDefined && !idIsDefined) {
|
|
17
|
-
throw new Error('ERROR in PixTextarea component, @id param is necessary when giving @label');
|
|
18
|
-
}
|
|
19
|
-
return this.args.label || null;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
13
|
@action
|
|
23
14
|
updateValue(event) {
|
|
24
15
|
this.value = event.target.value;
|
|
25
16
|
}
|
|
26
|
-
|
|
27
|
-
get requiredLabel() {
|
|
28
|
-
const idRequiredLabelDefined = this.args.requiredLabel?.trim();
|
|
29
|
-
const labelIsDefined = this.args.label?.trim();
|
|
30
|
-
|
|
31
|
-
if (idRequiredLabelDefined && !labelIsDefined) {
|
|
32
|
-
throw new Error(
|
|
33
|
-
'ERROR in PixTextarea component, @label param is necessary when giving @requiredLabel',
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
return this.args.requiredLabel || null;
|
|
37
|
-
}
|
|
38
17
|
}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
<
|
|
2
|
-
<
|
|
1
|
+
<div class={{this.className}}>
|
|
2
|
+
<PixLabel
|
|
3
|
+
@for={{this.id}}
|
|
4
|
+
@screenReaderOnly={{@screenReaderOnly}}
|
|
5
|
+
@subLabel={{@subLabel}}
|
|
6
|
+
@labelSize={{@labelSize}}
|
|
7
|
+
@inlineLabel={{@inline}}
|
|
8
|
+
>{{@label}}</PixLabel>
|
|
3
9
|
<button
|
|
4
10
|
class="pix-toggle__button"
|
|
11
|
+
id={{this.id}}
|
|
5
12
|
aria-pressed={{if @toggled "true" "false"}}
|
|
6
13
|
type="button"
|
|
7
14
|
{{on "click" this.onToggle}}
|
|
@@ -21,4 +28,4 @@
|
|
|
21
28
|
{{/if}}
|
|
22
29
|
</span>
|
|
23
30
|
</button>
|
|
24
|
-
</
|
|
31
|
+
</div>
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { action } from '@ember/object';
|
|
3
|
+
import { guidFor } from '@ember/object/internals';
|
|
3
4
|
|
|
4
5
|
export default class PixToggle extends Component {
|
|
5
6
|
get className() {
|
|
6
7
|
const classes = ['pix-toggle'];
|
|
7
|
-
if (this.args.inline) {
|
|
8
|
-
classes.push('pix-toggle--inline');
|
|
9
|
-
}
|
|
10
8
|
if (this.args.toggled) {
|
|
11
9
|
classes.push('pix-toggle--pressed');
|
|
12
10
|
}
|
|
13
|
-
if (this.args.screenReaderOnly) {
|
|
14
|
-
classes.push('pix-toggle--screen-reader-only');
|
|
15
|
-
}
|
|
16
11
|
return classes.join(' ');
|
|
17
12
|
}
|
|
18
13
|
|
|
@@ -20,4 +15,8 @@ export default class PixToggle extends Component {
|
|
|
20
15
|
onToggle() {
|
|
21
16
|
this.args.onChange(!this.args.toggled);
|
|
22
17
|
}
|
|
18
|
+
|
|
19
|
+
get id() {
|
|
20
|
+
return guidFor(this);
|
|
21
|
+
}
|
|
23
22
|
}
|
|
@@ -2,30 +2,13 @@
|
|
|
2
2
|
position: relative;
|
|
3
3
|
z-index: 0;
|
|
4
4
|
display: flex;
|
|
5
|
+
gap: var(--pix-spacing-3x);
|
|
5
6
|
align-items: center;
|
|
6
7
|
|
|
7
8
|
& + .pix-checkbox {
|
|
8
9
|
margin-top: var(--pix-spacing-4x);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
/* Label */
|
|
12
|
-
&__label {
|
|
13
|
-
@extend %pix-body-m;
|
|
14
|
-
|
|
15
|
-
padding-left: var(--pix-spacing-3x);
|
|
16
|
-
color: var(--pix-neutral-900);
|
|
17
|
-
font-weight: var(--pix-font-normal);
|
|
18
|
-
cursor: pointer;
|
|
19
|
-
|
|
20
|
-
&--small {
|
|
21
|
-
font-size: 0.875rem;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
&--large {
|
|
25
|
-
font-size: 1.125rem;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
12
|
/* Input */
|
|
30
13
|
&__input {
|
|
31
14
|
position: relative;
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
position: relative;
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
12
|
-
padding: 1px 0 1px 1px;
|
|
13
12
|
border: 1px solid var(--pix-neutral-500);
|
|
14
13
|
border-radius: var(--pix-spacing-1x);
|
|
15
14
|
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
@extend %pix-input-default;
|
|
19
18
|
|
|
20
19
|
flex-grow: 1;
|
|
21
|
-
height: 34px;
|
|
22
20
|
background-color: transparent;
|
|
23
21
|
border: none;
|
|
24
22
|
outline: none;
|
|
@@ -3,15 +3,6 @@
|
|
|
3
3
|
display: flex;
|
|
4
4
|
flex-direction: column;
|
|
5
5
|
|
|
6
|
-
&__label {
|
|
7
|
-
@extend %pix-label;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
&__sub-label {
|
|
11
|
-
@extend %pix-sublabel;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
6
|
&__container {
|
|
16
7
|
position: relative;
|
|
17
8
|
}
|
|
@@ -41,11 +32,10 @@
|
|
|
41
32
|
}
|
|
42
33
|
|
|
43
34
|
&__input {
|
|
44
|
-
@extend %pix-form-element-state;
|
|
45
35
|
@extend %pix-input-default;
|
|
36
|
+
@extend %pix-form-element-state;
|
|
46
37
|
|
|
47
38
|
width: 100%;
|
|
48
|
-
height: 36px;
|
|
49
39
|
border: 1px solid var(--pix-neutral-500);
|
|
50
40
|
|
|
51
41
|
&--error {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
.pix-label {
|
|
2
|
+
display: block;
|
|
3
|
+
margin-bottom: var(--pix-spacing-1x);
|
|
4
|
+
color: var(--pix-neutral-900);
|
|
5
|
+
font-weight: var(--pix-font-medium);
|
|
6
|
+
|
|
7
|
+
&--disabled {
|
|
8
|
+
color: var(--pix-neutral-500);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&--default {
|
|
12
|
+
@extend %pix-body-m;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&--small {
|
|
16
|
+
@extend %pix-body-s;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&--large {
|
|
20
|
+
@extend %pix-body-l;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
&--inline-label {
|
|
25
|
+
margin: 0;
|
|
26
|
+
font-weight: var(--pix-font-normal)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&__sub-label {
|
|
30
|
+
@extend %pix-body-xs;
|
|
31
|
+
|
|
32
|
+
display: block;
|
|
33
|
+
color: var(--pix-neutral-500);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
.pix-radio-button {
|
|
2
2
|
display: flex;
|
|
3
|
+
gap: var(--pix-spacing-3x);
|
|
3
4
|
align-items: center;
|
|
4
5
|
|
|
5
6
|
& + .pix-radio-button {
|
|
6
7
|
margin-top: var(--pix-spacing-4x);
|
|
7
8
|
}
|
|
8
9
|
|
|
9
|
-
&__label {
|
|
10
|
-
@extend %pix-body-m;
|
|
11
|
-
|
|
12
|
-
padding-left: var(--pix-spacing-3x);
|
|
13
|
-
color: var(--pix-neutral-900);
|
|
14
|
-
font-weight: var(--pix-font-normal);
|
|
15
|
-
cursor: pointer;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
10
|
&__input {
|
|
19
11
|
position: relative;
|
|
20
12
|
flex-shrink: 0;
|