@joster-dev/chaos-control 0.1.0 → 0.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"joster-dev-chaos-control.mjs","sources":["../../../projects/chaos-control/src/lib/directives/border-radius.directive.ts","../../../projects/chaos-control/src/lib/directives/control.directive.ts","../../../projects/chaos-control/src/lib/models/is-number.function.ts","../../../projects/chaos-control/src/lib/models/is-primitive.function.ts","../../../projects/chaos-control/src/lib/models/is-item.function.ts","../../../projects/chaos-control/src/lib/models/is-items.function.ts","../../../projects/chaos-control/src/lib/directives/item.directive.ts","../../../projects/chaos-control/src/lib/components/choice/choice.component.ts","../../../projects/chaos-control/src/lib/components/choice/choice.component.html","../../../projects/chaos-control/src/lib/components/color/color.component.ts","../../../projects/chaos-control/src/lib/components/color/color.component.html","../../../projects/chaos-control/src/lib/components/file/file.component.ts","../../../projects/chaos-control/src/lib/components/file/file.component.html","../../../projects/chaos-control/src/lib/components/number/number.component.ts","../../../projects/chaos-control/src/lib/components/number/number.component.html","../../../projects/chaos-control/src/lib/components/readonly/readonly.component.ts","../../../projects/chaos-control/src/lib/components/readonly/readonly.component.html","../../../projects/chaos-control/src/lib/components/text/text.component.ts","../../../projects/chaos-control/src/lib/components/text/text.component.html","../../../projects/chaos-control/src/lib/components/select/select.component.ts","../../../projects/chaos-control/src/lib/components/select/select.component.html","../../../projects/chaos-control/src/lib/chaos-control.module.ts","../../../projects/chaos-control/src/lib/chaos-control.service.ts","../../../projects/chaos-control/src/public-api.ts","../../../projects/chaos-control/src/joster-dev-chaos-control.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[joBorderRadius]'\r\n})\r\nexport class BorderRadiusDirective {\r\n\r\n @Input()\r\n get borderRadiusRight() {\r\n return this._borderRadiusRight;\r\n }\r\n set borderRadiusRight(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n this._borderRadiusRight = value;\r\n }\r\n _borderRadiusRight = true;\r\n\r\n @Input()\r\n get borderRadiusLeft() {\r\n return this._borderRadiusLeft;\r\n }\r\n set borderRadiusLeft(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n this._borderRadiusLeft = value;\r\n }\r\n _borderRadiusLeft = true;\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { Directive, Input, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BorderRadiusDirective } from './border-radius.directive';\r\n\r\n@Directive({\r\n selector: '[joControl]'\r\n})\r\nexport class ControlDirective extends BorderRadiusDirective implements OnDestroy {\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('required input must be: boolean');\r\n this._required = value;\r\n this.validation.next();\r\n }\r\n _required = false;\r\n\r\n isDisabled = false;\r\n validation = new Subject<void>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.validation.complete();\r\n }\r\n\r\n onTouched() { }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","export function isNumber(value: unknown): value is number {\r\n return typeof value === 'number'\r\n && !isNaN(value);\r\n}\r\n","import { isNumber } from './is-number.function';\r\nimport { primitive } from './primitive.type';\r\n\r\nexport function isPrimitive(value: unknown): value is primitive {\r\n return typeof value === 'boolean'\r\n || isNumber(value)\r\n || typeof value === 'string';\r\n}\r\n","import { isPrimitive } from './is-primitive.function';\r\nimport { Item } from './item.interface';\r\n\r\nexport function isItem(item: Item): item is Item {\r\n return typeof (item) === 'object'\r\n && item !== null\r\n && isPrimitive(item.key)\r\n && typeof item.value === 'string';\r\n}\r\n","import { isItem } from './is-item.function';\r\nimport { Item } from './item.interface';\r\n\r\nexport function isItems(value: Item[]): value is Item[] {\r\n return Array.isArray(value) && value.every(item => isItem(item));\r\n}\r\n","import { Directive, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { isItems, isNumber, isPrimitive, Item, primitive } from '../models';\r\n\r\nimport { ControlDirective } from './control.directive';\r\n\r\n@Directive({\r\n selector: '[joItem]'\r\n})\r\nexport class ItemDirective extends ControlDirective implements ControlValueAccessor {\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: { key: boolean | number | string, value: string, [key: string]: unknown }[]) {\r\n if (!isItems(value))\r\n throw new Error('[items] expects: { key: boolean | number | string, value: string }[]');\r\n this._items = value;\r\n this.validation.next();\r\n }\r\n _items: Item[] = [];\r\n\r\n @Input()\r\n get limit() {\r\n return this._limit;\r\n }\r\n set limit(value: number) {\r\n if (value == null)\r\n value = 0;\r\n\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value))\r\n throw new Error('limit expects: positive integer');\r\n\r\n this._limit = value;\r\n this.validation.next();\r\n }\r\n _limit = 0;\r\n\r\n @Input()\r\n get isMultiple() {\r\n return this._isMultiple;\r\n }\r\n set isMultiple(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('multiple expects: boolean')\r\n this._isMultiple = value;\r\n }\r\n _isMultiple = false;\r\n\r\n set model(value: primitive[]) {\r\n this._model = value;\r\n this.onChange(\r\n value.length === 0\r\n ? null\r\n : this.isMultiple\r\n ? this._model\r\n : this._model[0]\r\n );\r\n }\r\n _model: primitive[] = [];\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n onChange(_value: primitive[] | primitive | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: primitive[] | primitive | null) {\r\n if (value == null)\r\n value = [];\r\n\r\n if (!Array.isArray(value))\r\n value = [value];\r\n\r\n if (value.every(item => isPrimitive(item)))\r\n this._model = value;\r\n }\r\n\r\n private invalidValidator(items: Item[], isMultiple: boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n (\r\n isMultiple\r\n ? Array.isArray(control.value) && control.value.every((key: any) => !items.map(item => item.key).includes(key))\r\n : ![undefined, null].includes(control.value) && !items.map(item => item.key).includes(control.value)\r\n )\r\n ? { invalid: control.value }\r\n : null;\r\n }\r\n\r\n private limitValidator(limit: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n control.value !== null && limit !== 0 && control.value.length > limit\r\n ? { limit: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator(this._items, this._isMultiple),\r\n ];\r\n\r\n if (this._isMultiple)\r\n validators.push(this.limitValidator(this._limit));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n if (this.ngControl.control === null)\r\n throw new Error('expected control to be defined');\r\n\r\n this.ngControl.control.setValidators(validators);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n}\r\n","import { Component, Input, Self } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\n\r\nimport { ItemDirective } from '../../directives';\r\nimport { Item } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-choice',\r\n templateUrl: './choice.component.html',\r\n styleUrls: [\r\n './choice.component.scss',\r\n '../../styles.scss',\r\n '../../atomic.scss',\r\n ]\r\n})\r\nexport class ChoiceComponent extends ItemDirective implements ControlValueAccessor {\r\n constructor(\r\n @Self() public override ngControl: NgControl,\r\n ) {\r\n super(ngControl);\r\n }\r\n\r\n @Input()\r\n get isColumn() {\r\n return this._isColumn;\r\n }\r\n set isColumn(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('isColumn expects: boolean')\r\n this._isColumn = value;\r\n }\r\n _isColumn = false;\r\n\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n onClick(item: Item) {\r\n this._model = this._model\r\n .filter(key => this._items.map(item => item.key).includes(key))\r\n\r\n if (this._model.includes(item.key)) {\r\n if (this.required === true && this._model.length === 1)\r\n return;\r\n\r\n this.model = this._model.filter(key => key !== item.key);\r\n return;\r\n }\r\n\r\n if (!this.isMultiple && this._model.length === 1) {\r\n this.model = [item.key];\r\n return;\r\n }\r\n\r\n this.model = [...this._model, item.key];\r\n }\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"choice_{{id}}\"\r\n [class.required]=\"required\"\r\n >\r\n <ng-content></ng-content>\r\n </label>\r\n <div>\r\n <ng-content select=\"[rightAligned]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"d-flex flex-wrap align-items-start\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"choice_{{id}}\"\r\n [class.flex-column]=\"isColumn\"\r\n>\r\n <button\r\n *ngFor=\"let item of items; let idx = index\"\r\n type=\"button\"\r\n class=\"d-flex align-items-center text-left\"\r\n role=\"menuitemcheckbox\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n (click)=\"onClick(item)\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <div\r\n class=\"button margin-right-1 {{isMultiple ? 'br-20' : 'br-50'}}\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [class.disabled]=\"isDisabled\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n >\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n size=\"1em\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n {{item.value}}\r\n </button>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->","import { Component, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ControlDirective } from '../../directives';\r\n\r\n@Component({\r\n selector: 'jo-color',\r\n templateUrl: './color.component.html',\r\n styleUrls: [\r\n './color.component.scss',\r\n '../../atomic.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ColorComponent extends ControlDirective implements ControlValueAccessor {\r\n private partialHex = /^[0-9A-Fa-f]{1,6}$/;\r\n fullHex = /^[0-9A-Fa-f]{6}$/;\r\n\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: string | null) {\r\n this._model = value;\r\n this.onChange(\r\n this._model !== null && this.fullHex.test(this._model)\r\n ? this._model\r\n : null\r\n );\r\n }\r\n _model: string | null = null;\r\n\r\n id = `_${Math.random().toString(36).substring(2, 11)}`;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n onChangeColor(event: Event) {\r\n const ele = event.target as HTMLInputElement;\r\n this.model = ele.value.substring(1).toUpperCase();\r\n }\r\n\r\n onChange(_model: string | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n onBeforeinput(e: Event): void {\r\n const event = e as InputEvent;\r\n if (event.data === null)\r\n return;\r\n const ele = event.target as HTMLInputElement;\r\n const tooLong = event.data.length + (ele.selectionStart || 0) > 6;\r\n const valid = this.partialHex.test(event.data);\r\n if (tooLong || !valid)\r\n event.preventDefault();\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n if (value === undefined || typeof value !== 'string' || !this.partialHex.test(value))\r\n value = null;\r\n\r\n if (value === null || this.partialHex.test(value))\r\n this._model = value;\r\n }\r\n\r\n private invalidValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n control.value !== null && (typeof control.value !== 'string' || !this.fullHex.test(control.value))\r\n ? { invalid: control.value }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator()\r\n ];\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Color\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"colorInput.click()\"\r\n >\r\n <icon\r\n size=\"1em\"\r\n type=\"square\"\r\n [fill]=\"fullHex.test(_model || '') ? _model : [null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"fullHex.test(_model || '') ? _model : ['current']\"\r\n ></icon>\r\n </button>\r\n <input\r\n [(ngModel)]=\"model\"\r\n spellcheck=\"false\"\r\n size=\"5\"\r\n type=\"text\"\r\n [class.active]=\"ngControl.control?.value !== null\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n (beforeinput)=\"onBeforeinput($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->\r\n\r\n<input\r\n #colorInput\r\n type=\"color\"\r\n (change)=\"onChangeColor($event)\"\r\n/>","import { Component, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: [\r\n './file.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class FileComponent extends ControlDirective implements ControlValueAccessor {\r\n @Input() get acceptedTypes() {\r\n return this._acceptedTypes;\r\n }\r\n set acceptedTypes(value: string[]) {\r\n if (!Array.isArray(value) || !value.every(item => typeof item === 'string'))\r\n throw new Error(`acceptedTypes expects: string[]`);\r\n this._acceptedTypes = value;\r\n this.validation.next();\r\n }\r\n _acceptedTypes: string[] = [];\r\n\r\n @Input() get sizeLimitMb() {\r\n return this._sizeLimitMb;\r\n }\r\n set sizeLimitMb(value: number) {\r\n if (!isNumber(value) || value < 0)\r\n throw new Error('sizeLimitMb expects: positive number');\r\n this._sizeLimitMb = value;\r\n this.validation.next();\r\n }\r\n _sizeLimitMb = 0;\r\n\r\n @Input() get multiple() {\r\n return this._multiple;\r\n }\r\n set multiple(value: boolean) {\r\n this._multiple = value === true;\r\n this.validation.next();\r\n }\r\n _multiple = false;\r\n\r\n @Input() showSize = false;\r\n\r\n model: '' | null = null;\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n get fileNames(): string {\r\n if (this.ngControl.value instanceof FileList)\r\n return Object.values(this.ngControl.value).map(file => file.name).join(', ');\r\n\r\n if (this.ngControl.value instanceof File)\r\n return this.ngControl.value.name;\r\n\r\n return '';\r\n }\r\n\r\n get sizeLimit(): string {\r\n return this.sizeLimitMb < 1\r\n ? `${this.sizeLimitMb * 1000} KB`\r\n : `${this.sizeLimitMb} MB`;\r\n }\r\n\r\n onFileChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.onChange(\r\n target.files?.length\r\n ? target.files\r\n : null\r\n );\r\n }\r\n\r\n onChange(_model: FileList | null) { }\r\n registerOnChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n if (value === undefined)\r\n value = null;\r\n\r\n if (value !== null && !(value instanceof FileList))\r\n throw new Error('control value must be: File or null');\r\n // todo\r\n // this.model = value;\r\n }\r\n\r\n private acceptedTypesValidator(acceptedTypes: string[]): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value !== null\r\n && control.value instanceof FileList\r\n && !Object.values(control.value).map(item => item.type.toLowerCase())\r\n .every(type => acceptedTypes.includes(type.toLowerCase()))\r\n ? { acceptedTypes: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private invalidValidator(multiple: boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value !== null\r\n && (!(control.value instanceof FileList) || (control.value.length > 1 && !multiple))\r\n ? { invalid: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private sizeLimitMbValidator(sizeLimitMb: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value instanceof FileList\r\n && Object.values(control.value).map(item => item.size / 1024 / 1024)\r\n .reduce((acc, cur) => acc + cur, 0) > sizeLimitMb\r\n ? { sizeLimitMb: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator(this.multiple)\r\n ];\r\n\r\n if (this.acceptedTypes.length > 0)\r\n validators.push(this.acceptedTypesValidator(this.acceptedTypes));\r\n\r\n if (this.sizeLimitMb > 0)\r\n validators.push(this.sizeLimitMbValidator(this.sizeLimitMb));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label [class.required]=\"required\">\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-center\">\r\n <div>\r\n <button\r\n class=\"white-space-nowrap\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n [class.active]=\"ngControl.value !== null\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <icon\r\n type=\"folder\"\r\n size=\"1em\"\r\n class=\"margin-right-1\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n Choose {{multiple ? 'Files' : 'File'}}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"ngControl.value\"\r\n id=\"filename\"\r\n >\r\n {{fileNames}}\r\n </div>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['acceptedTypes']\">\r\n valid types are {{acceptedTypes.join(', ')}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['sizeLimitMb']\">\r\n max file size is {{sizeLimit}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->\r\n\r\n<input\r\n [(ngModel)]=\"model\"\r\n #fileInput\r\n type=\"file\"\r\n [accept]=\"acceptedTypes.join()\"\r\n [multiple]=\"multiple\"\r\n [id]=\"id\"\r\n (change)=\"onFileChange($event)\"\r\n/>\r\n","import { Component, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-number',\r\n templateUrl: './number.component.html',\r\n styleUrls: [\r\n './number.component.scss',\r\n '../../atomic.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class NumberComponent extends ControlDirective implements ControlValueAccessor {\r\n @Input()\r\n get min() {\r\n return this._min;\r\n }\r\n set min(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[min] expects: number');\r\n this._min = value;\r\n this.validation.next();\r\n }\r\n _min = 0;\r\n\r\n @Input()\r\n get max() {\r\n return this._max;\r\n }\r\n set max(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[max] expects: number');\r\n this._max = value;\r\n this.validation.next();\r\n }\r\n _max = 9;\r\n\r\n @Input()\r\n get step() {\r\n return this._step;\r\n }\r\n set step(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[step] expects: number');\r\n this._step = value;\r\n this.mustBeInteger = Number.isInteger(this._step);\r\n }\r\n _step = 1;\r\n\r\n mustBeInteger = true;\r\n readonly sizePadding = 5;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation.subscribe(() => this.validate());\r\n this.validation.next();\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n _model: number | null = null;\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: number | null) {\r\n this._model = value;\r\n this.onChange(this._model);\r\n }\r\n\r\n get isDisabledAdd() {\r\n return this.isDisabled === true\r\n || this.model !== null\r\n && this.model + this.step > this.max;\r\n }\r\n\r\n get isDisabledSubtract() {\r\n return this.isDisabled === true\r\n || this._model !== null\r\n && this._model - this.step < this.min;\r\n }\r\n\r\n get maxDigitSize() {\r\n return Math.max(\r\n this._step.toString().length,\r\n this._max.toString().length,\r\n this._min.toString().length\r\n );\r\n }\r\n\r\n onBeforeinput(e: Event) {\r\n const event = e as InputEvent;\r\n if (event.data === null)\r\n return;\r\n const isDigit = /\\d/.test(event.data);\r\n const isMinus = event.data === '-';\r\n const isMinusAllowed = this.min < 0;\r\n const isBlockedNonDigit = !isDigit && !(isMinus && isMinusAllowed)\r\n const isPastMax = Number((this._model || '') + event.data) > this.max;\r\n if (isBlockedNonDigit || isPastMax)\r\n event.preventDefault();\r\n }\r\n\r\n add(e: HTMLInputElement) {\r\n if (this.model === null) {\r\n this.model = this.max;\r\n return;\r\n }\r\n\r\n e.stepUp();\r\n this.model = e.valueAsNumber;\r\n }\r\n\r\n subtract(e: HTMLInputElement) {\r\n if (this.model === null) {\r\n this.model = this.min;\r\n return;\r\n }\r\n\r\n e.stepDown();\r\n this.model = e.valueAsNumber;\r\n }\r\n\r\n onChange(_model: number | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: number | null) {\r\n if (value === undefined)\r\n value = null;\r\n\r\n if (typeof value === 'string')\r\n value = parseFloat(value);\r\n\r\n if (value === null || isNumber(value))\r\n this._model = value;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n Validators.min(this.min),\r\n Validators.max(this.max)\r\n ];\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label [class.required]=\"required\">\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"model\"\r\n #numberInput\r\n class=\"d-flex align-items-center\"\r\n type=\"number\"\r\n [size]=\"maxDigitSize + sizePadding\"\r\n [class.active]=\"_model !== null\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n (beforeinput)=\"onBeforeinput($event)\"\r\n />\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Subtract\"\r\n type=\"button\"\r\n [disabled]=\"isDisabledSubtract\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n (blur)=\"onTouched()\"\r\n (click)=\"subtract(numberInput)\"\r\n >\r\n <icon\r\n type=\"minus\"\r\n size=\"1em\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </button>\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Add\"\r\n type=\"button\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [disabled]=\"isDisabledAdd\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n (blur)=\"onTouched()\"\r\n (click)=\"add(numberInput)\"\r\n >\r\n <icon\r\n type=\"plus\"\r\n size=\"1em\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['min']\">\r\n minimum number is {{min}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['max']\">\r\n maximum number is {{max}}\r\n </li>\r\n</ul> -->","import { Component, Input } from '@angular/core';\r\nimport { primitive } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-readonly',\r\n templateUrl: './readonly.component.html',\r\n styleUrls: [\r\n './readonly.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ReadonlyComponent {\r\n @Input() model?: primitive;\r\n\r\n constructor() { }\r\n}\r\n","<label>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"readonly\">\r\n {{model}}\r\n</div>\r\n","import { Component, ElementRef, HostListener, Input, OnDestroy, Output, Renderer2, Self, ViewChild, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: [\r\n './text.component.scss',\r\n '../../atomic.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class TextComponent extends ControlDirective implements OnDestroy, ControlValueAccessor {\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(v: string) {\r\n const value = v as unknown;\r\n if (typeof value !== 'string')\r\n throw new Error('[placeholder] expects: string');\r\n this._placeholder = value;\r\n }\r\n _placeholder = '';\r\n\r\n @Input()\r\n get minLength() {\r\n return this._minLength;\r\n }\r\n set minLength(value: string | number | null | undefined) {\r\n if (typeof value === 'string')\r\n value = parseInt(value, 10);\r\n if (value === undefined)\r\n value = null;\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)\r\n throw new Error('[minLength] expects: positive integer');\r\n this._minLength = value;\r\n this.validation.next();\r\n }\r\n _minLength: number | null = null;\r\n\r\n @Input()\r\n get maxLength() {\r\n return this._maxLength;\r\n }\r\n set maxLength(value: string | number | null | undefined) {\r\n if (typeof value === 'string')\r\n value = parseInt(value, 10);\r\n if (value === undefined)\r\n value = null;\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)\r\n throw new Error('[maxLength] expects: positive integer');\r\n this._maxLength = value;\r\n this.validation.next();\r\n }\r\n _maxLength: number | null = null;\r\n\r\n @Input()\r\n isSpellCheck = false;\r\n\r\n @Input()\r\n set isGrow(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('[isGrow] expects: boolean');\r\n this._isGrow = value;\r\n }\r\n _isGrow = false;\r\n\r\n @Input() rows = 3;\r\n\r\n @Output() onBlur = new EventEmitter<FocusEvent>();\r\n @Output() onFocus = new EventEmitter<FocusEvent>();\r\n\r\n @ViewChild('textarea') textareaElement?: ElementRef;\r\n @ViewChild('textareaHidden') textareaHiddenElement?: ElementRef;\r\n\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: string | null) {\r\n if (value === '')\r\n value = null;\r\n\r\n this._model = value;\r\n\r\n this.onChange(this._model);\r\n setTimeout(() => this.setTextareaHeight());\r\n }\r\n _model: string | null = null;\r\n\r\n id = `_${Math.random().toString(36).substring(2, 11)}`;\r\n resizeSubject = new Subject<void>();\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n private renderer: Renderer2,\r\n ) {\r\n super();\r\n this.validation.subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n this.resizeSubject\r\n .pipe(debounceTime(300))\r\n .subscribe(() => this._isGrow && this.setTextareaHeight());\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.resizeSubject.complete();\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.resizeSubject.next();\r\n }\r\n\r\n setTextareaHeight() {\r\n if (!this.textareaElement || !this.textareaHiddenElement)\r\n return;\r\n const textarea = this.textareaElement.nativeElement as HTMLElement;\r\n const textareaHidden = this.textareaHiddenElement.nativeElement as HTMLElement;\r\n this.renderer.setStyle(textareaHidden, 'width', `calc(${textarea.scrollWidth}px - 1em)`);\r\n this.renderer.setStyle(textareaHidden, 'height', 'auto');\r\n this.renderer.setStyle(textarea, 'height', `${textareaHidden.scrollHeight}px`);\r\n }\r\n\r\n onChange(_model: string | null) { }\r\n registerOnChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(v: string | null): void {\r\n let value = v as unknown;\r\n if (value === '' || value === undefined)\r\n value = null;\r\n if (isNumber(value))\r\n value = value.toString();\r\n if (value === null || typeof value === 'string') {\r\n this._model = value;\r\n setTimeout(() => this.setTextareaHeight());\r\n }\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (this._minLength != null)\r\n validators.push(Validators.minLength(this._minLength));\r\n\r\n if (this._maxLength != null)\r\n validators.push(Validators.maxLength(this._maxLength));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex\">\r\n <input\r\n *ngIf=\"!_isGrow\"\r\n type=\"text\"\r\n [(ngModel)]=\"model\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n />\r\n <textarea\r\n *ngIf=\"_isGrow\"\r\n #textarea\r\n [(ngModel)]=\"model\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [rows]=\"rows\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n ></textarea>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"_isGrow\"\r\n class=\"d-flex\"\r\n>\r\n <textarea\r\n #textareaHidden\r\n [ngModel]=\"model\"\r\n class=\"hidden flex-1\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['minlength']\">\r\n minimum length is {{minLength}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['maxLength']\">\r\n maximum length is {{maxLength}}\r\n </li>\r\n</ul> -->","import { Component, ElementRef, HostListener, Input, Self } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { ItemDirective } from '../../directives';\r\nimport { Item } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: [\r\n './select.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class SelectComponent extends ItemDirective implements ControlValueAccessor {\r\n\r\n @Input() dropdownMaxHeight = '200px';\r\n\r\n set searchTerm(value: string) {\r\n this._searchTerm = value;\r\n }\r\n _searchTerm = '';\r\n\r\n get showDropdown() {\r\n return this._showDropdown;\r\n }\r\n set showDropdown(value: boolean) {\r\n this._showDropdown = value;\r\n if (this._showDropdown === false)\r\n return;\r\n const hostBoundingRect: DOMRect = this.hostElement.nativeElement.getBoundingClientRect();\r\n this.isDropdownCloseToBottom = window.innerHeight < hostBoundingRect.bottom + parseInt(this.dropdownMaxHeight, 10);\r\n }\r\n _showDropdown = false;\r\n\r\n isDropdownCloseToBottom = false;\r\n\r\n constructor(\r\n @Self() public override ngControl: NgControl,\r\n private hostElement: ElementRef,\r\n ) {\r\n super(ngControl);\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n onGlobalClick(event: MouseEvent) {\r\n if (!this.hostElement.nativeElement.contains(event.target))\r\n this._showDropdown = false;\r\n }\r\n\r\n onClickSearch() {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onFocusSearch() {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onClick(item: Item) {\r\n this._model = this._model.filter(key => this._items.map(item => item.key).includes(key))\r\n\r\n if (this._model.includes(item.key)) {\r\n if (this.required === true && this._model.length === 1)\r\n return;\r\n\r\n this.model = this._model.filter(key => key !== item.key);\r\n return;\r\n }\r\n\r\n if (!this.isMultiple && this._model.length === 1) {\r\n this.model = [item.key];\r\n return;\r\n }\r\n\r\n this.model = [...this._model, item.key];\r\n }\r\n}\r\n","<label>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <jo-text\r\n [borderRadiusLeft]=\"borderRadiusLeft\"\r\n [borderRadiusRight]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n [isGrow]=\"false\"\r\n class=\"flex-1\"\r\n (onFocus)=\"onFocusSearch()\"\r\n ></jo-text>\r\n <button\r\n class=\"d-flex\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClickSearch()\"\r\n >\r\n <icon\r\n size=\"1em\"\r\n type=\"chevron\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"['current']\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<div\r\n class=\"drop {{isDropdownCloseToBottom ? 'up' : 'down'}}\"\r\n [hidden]=\"!showDropdown\"\r\n [style.max-height]=\"dropdownMaxHeight\"\r\n>\r\n <!-- <jo-button *ngIf=\"items.length === 0\">\r\n No Results\r\n </jo-button> -->\r\n <button\r\n *ngFor=\"let item of items; let idx = index\"\r\n class=\"d-flex\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [disabled]=\"isDisabled\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n [class.border-radius-right]=\"borderRadiusRight && idx === items.length - 1\"\r\n [class.border-radius-left]=\"borderRadiusLeft && idx === 0\"\r\n (click)=\"onClick(item)\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <icon-stack\r\n class=\"margin-right-1\"\r\n size=\"1em\"\r\n >\r\n <icon [type]=\"isMultiple ? 'squircle' : 'circle'\"></icon>\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </icon-stack>\r\n {{item.value}}\r\n </button>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IconModule } from '@joster-dev/icon';\r\n\r\nimport {\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n SelectComponent,\r\n} from './components';\r\nimport {\r\n BorderRadiusDirective,\r\n ControlDirective,\r\n ItemDirective,\r\n} from './directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n ControlDirective,\r\n ItemDirective,\r\n SelectComponent,\r\n BorderRadiusDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IconModule,\r\n RouterModule,\r\n ],\r\n exports: [\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n SelectComponent,\r\n ]\r\n})\r\nexport class ChaosControlModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChaosControlService {\r\n\r\n constructor() { }\r\n}\r\n","// Public API Surface of chaos-control\r\n\r\nexport * from './lib/chaos-control.module';\r\nexport * from './lib/components';\r\nexport * from './lib/models';\r\nexport * from './lib/chaos-control.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4.TextComponent"],"mappings":"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"}
1
+ {"version":3,"file":"joster-dev-chaos-control.mjs","sources":["../../../projects/chaos-control/src/lib/directives/border-radius.directive.ts","../../../projects/chaos-control/src/lib/directives/control.directive.ts","../../../projects/chaos-control/src/lib/models/is-number.function.ts","../../../projects/chaos-control/src/lib/models/is-primitive.function.ts","../../../projects/chaos-control/src/lib/models/is-item.function.ts","../../../projects/chaos-control/src/lib/models/is-items.function.ts","../../../projects/chaos-control/src/lib/directives/item.directive.ts","../../../projects/chaos-control/src/lib/components/choice/choice.component.ts","../../../projects/chaos-control/src/lib/components/choice/choice.component.html","../../../projects/chaos-control/src/lib/components/color/color.component.ts","../../../projects/chaos-control/src/lib/components/color/color.component.html","../../../projects/chaos-control/src/lib/components/file/file.component.ts","../../../projects/chaos-control/src/lib/components/file/file.component.html","../../../projects/chaos-control/src/lib/components/number/number.component.ts","../../../projects/chaos-control/src/lib/components/number/number.component.html","../../../projects/chaos-control/src/lib/components/readonly/readonly.component.ts","../../../projects/chaos-control/src/lib/components/readonly/readonly.component.html","../../../projects/chaos-control/src/lib/components/text/text.component.ts","../../../projects/chaos-control/src/lib/components/text/text.component.html","../../../projects/chaos-control/src/lib/components/select/select.component.ts","../../../projects/chaos-control/src/lib/components/select/select.component.html","../../../projects/chaos-control/src/lib/chaos-control.module.ts","../../../projects/chaos-control/src/lib/chaos-control.service.ts","../../../projects/chaos-control/src/public-api.ts","../../../projects/chaos-control/src/joster-dev-chaos-control.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[joBorderRadius]'\r\n})\r\nexport class BorderRadiusDirective {\r\n\r\n @Input()\r\n get borderRadiusRight() {\r\n return this._borderRadiusRight;\r\n }\r\n set borderRadiusRight(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n this._borderRadiusRight = value;\r\n }\r\n _borderRadiusRight = true;\r\n\r\n @Input()\r\n get borderRadiusLeft() {\r\n return this._borderRadiusLeft;\r\n }\r\n set borderRadiusLeft(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n this._borderRadiusLeft = value;\r\n }\r\n _borderRadiusLeft = true;\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { Directive, Input, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BorderRadiusDirective } from './border-radius.directive';\r\n\r\n@Directive({\r\n selector: '[joControl]'\r\n})\r\nexport class ControlDirective extends BorderRadiusDirective implements OnDestroy {\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('required input must be: boolean');\r\n this._required = value;\r\n this.validation.next();\r\n }\r\n _required = false;\r\n\r\n isDisabled = false;\r\n validation = new Subject<void>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.validation.complete();\r\n }\r\n\r\n onTouched() { }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","export function isNumber(value: unknown): value is number {\r\n return typeof value === 'number'\r\n && !isNaN(value);\r\n}\r\n","import { isNumber } from './is-number.function';\r\nimport { primitive } from './primitive.type';\r\n\r\nexport function isPrimitive(value: unknown): value is primitive {\r\n return typeof value === 'boolean'\r\n || isNumber(value)\r\n || typeof value === 'string';\r\n}\r\n","import { isPrimitive } from './is-primitive.function';\r\nimport { Item } from './item.interface';\r\n\r\nexport function isItem(item: Item): item is Item {\r\n return typeof (item) === 'object'\r\n && item !== null\r\n && isPrimitive(item.key)\r\n && typeof item.value === 'string';\r\n}\r\n","import { isItem } from './is-item.function';\r\nimport { Item } from './item.interface';\r\n\r\nexport function isItems(value: Item[]): value is Item[] {\r\n return Array.isArray(value) && value.every(item => isItem(item));\r\n}\r\n","import { Directive, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { isItems, isNumber, isPrimitive, Item, primitive } from '../models';\r\n\r\nimport { ControlDirective } from './control.directive';\r\n\r\n@Directive({\r\n selector: '[joItem]'\r\n})\r\nexport class ItemDirective extends ControlDirective implements ControlValueAccessor {\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: { key: boolean | number | string, value: string, [key: string]: unknown }[]) {\r\n if (!isItems(value))\r\n throw new Error('[items] expects: { key: boolean | number | string, value: string }[]');\r\n this._items = value;\r\n this.filteredItems = value;\r\n this.validation.next();\r\n }\r\n _items: Item[] = [];\r\n filteredItems: Item[] = [];\r\n\r\n @Input()\r\n get limit() {\r\n return this._limit;\r\n }\r\n set limit(value: number) {\r\n if (value == null)\r\n value = 0;\r\n\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value))\r\n throw new Error('limit expects: positive integer');\r\n\r\n this._limit = value;\r\n this.validation.next();\r\n }\r\n _limit = 0;\r\n\r\n @Input()\r\n get isMultiple() {\r\n return this._isMultiple;\r\n }\r\n set isMultiple(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('multiple expects: boolean')\r\n this._isMultiple = value;\r\n }\r\n _isMultiple = false;\r\n\r\n set model(value: primitive[]) {\r\n this._model = value;\r\n this.onChange(\r\n value.length === 0\r\n ? null\r\n : this.isMultiple\r\n ? this._model\r\n : this._model[0]\r\n );\r\n }\r\n _model: primitive[] = [];\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n onChange(_value: primitive[] | primitive | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: primitive[] | primitive | null) {\r\n if (value == null)\r\n value = [];\r\n\r\n if (!Array.isArray(value))\r\n value = [value];\r\n\r\n if (value.every(item => isPrimitive(item)))\r\n this._model = value;\r\n }\r\n\r\n private invalidValidator(items: Item[], isMultiple: boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n (\r\n isMultiple\r\n ? Array.isArray(control.value) && control.value.every((key: any) => !items.map(item => item.key).includes(key))\r\n : ![undefined, null].includes(control.value) && !items.map(item => item.key).includes(control.value)\r\n )\r\n ? { invalid: control.value }\r\n : null;\r\n }\r\n\r\n private limitValidator(limit: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n control.value !== null && limit !== 0 && control.value.length > limit\r\n ? { limit: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator(this._items, this._isMultiple),\r\n ];\r\n\r\n if (this._isMultiple)\r\n validators.push(this.limitValidator(this._limit));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n if (this.ngControl.control === null)\r\n throw new Error('expected control to be defined');\r\n\r\n this.ngControl.control.setValidators(validators);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n}\r\n","import { Component, Input, Self } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\n\r\nimport { ItemDirective } from '../../directives';\r\nimport { Item } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-choice',\r\n templateUrl: './choice.component.html',\r\n styleUrls: [\r\n './choice.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ChoiceComponent extends ItemDirective implements ControlValueAccessor {\r\n constructor(\r\n @Self() public override ngControl: NgControl,\r\n ) {\r\n super(ngControl);\r\n }\r\n\r\n @Input()\r\n get isColumn() {\r\n return this._isColumn;\r\n }\r\n set isColumn(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('isColumn expects: boolean')\r\n this._isColumn = value;\r\n }\r\n _isColumn = false;\r\n\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n onClick(item: Item) {\r\n this._model = this._model\r\n .filter(key => this._items.map(item => item.key).includes(key))\r\n\r\n if (this._model.includes(item.key)) {\r\n if (this.required === true && this._model.length === 1)\r\n return;\r\n\r\n this.model = this._model.filter(key => key !== item.key);\r\n return;\r\n }\r\n\r\n if (!this.isMultiple && this._model.length === 1) {\r\n this.model = [item.key];\r\n return;\r\n }\r\n\r\n this.model = [...this._model, item.key];\r\n }\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"choice_{{id}}\"\r\n [class.required]=\"required\"\r\n >\r\n <ng-content></ng-content>\r\n </label>\r\n <div>\r\n <ng-content select=\"[rightAligned]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"d-flex flex-wrap align-items-start\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"choice_{{id}}\"\r\n [class.flex-column]=\"isColumn\"\r\n>\r\n <button\r\n *ngFor=\"let item of items; let idx = index\"\r\n type=\"button\"\r\n class=\"d-flex align-items-center gap-2 text-start\"\r\n role=\"menuitemcheckbox\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClick(item)\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <div\r\n class=\"jo-button {{isMultiple ? 'br-20' : 'br-50'}}\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [class.disabled]=\"isDisabled\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n >\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n size=\"1rem\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n <span>{{item.value}}</span>\r\n </button>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->","import { Component, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ControlDirective } from '../../directives';\r\n\r\n@Component({\r\n selector: 'jo-color',\r\n templateUrl: './color.component.html',\r\n styleUrls: [\r\n './color.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ColorComponent extends ControlDirective implements ControlValueAccessor {\r\n private partialHex = /^[0-9A-Fa-f]{1,6}$/;\r\n fullHex = /^[0-9A-Fa-f]{6}$/;\r\n\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: string | null) {\r\n this._model = value;\r\n this.onChange(\r\n this._model !== null && this.fullHex.test(this._model)\r\n ? this._model\r\n : null\r\n );\r\n }\r\n _model: string | null = null;\r\n\r\n id = `_${Math.random().toString(36).substring(2, 11)}`;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n onChangeColor(event: Event) {\r\n const ele = event.target as HTMLInputElement;\r\n this.model = ele.value.substring(1).toUpperCase();\r\n }\r\n\r\n onChange(_model: string | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n onBeforeinput(e: Event): void {\r\n const event = e as InputEvent;\r\n if (event.data === null)\r\n return;\r\n const ele = event.target as HTMLInputElement;\r\n const tooLong = event.data.length + (ele.selectionStart || 0) > 6;\r\n const valid = this.partialHex.test(event.data);\r\n if (tooLong || !valid)\r\n event.preventDefault();\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n if (value === undefined || typeof value !== 'string' || !this.partialHex.test(value))\r\n value = null;\r\n\r\n if (value === null || this.partialHex.test(value))\r\n this._model = value;\r\n }\r\n\r\n private invalidValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n control.value !== null && (typeof control.value !== 'string' || !this.fullHex.test(control.value))\r\n ? { invalid: control.value }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator()\r\n ];\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Color\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"colorInput.click()\"\r\n >\r\n <icon\r\n size=\"1rem\"\r\n type=\"square\"\r\n [fill]=\"fullHex.test(_model || '') ? _model : [null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"fullHex.test(_model || '') ? _model : ['current']\"\r\n ></icon>\r\n </button>\r\n <input\r\n [(ngModel)]=\"model\"\r\n spellcheck=\"false\"\r\n size=\"5\"\r\n type=\"text\"\r\n [class.active]=\"ngControl.control?.value !== null\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n (beforeinput)=\"onBeforeinput($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->\r\n\r\n<input\r\n #colorInput\r\n type=\"color\"\r\n (change)=\"onChangeColor($event)\"\r\n/>","import { Component, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: [\r\n './file.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class FileComponent extends ControlDirective implements ControlValueAccessor {\r\n @Input() get acceptedTypes() {\r\n return this._acceptedTypes;\r\n }\r\n set acceptedTypes(value: string[]) {\r\n if (!Array.isArray(value) || !value.every(item => typeof item === 'string'))\r\n throw new Error(`acceptedTypes expects: string[]`);\r\n this._acceptedTypes = value;\r\n this.validation.next();\r\n }\r\n _acceptedTypes: string[] = [];\r\n\r\n @Input() get sizeLimitMb() {\r\n return this._sizeLimitMb;\r\n }\r\n set sizeLimitMb(value: number) {\r\n if (!isNumber(value) || value < 0)\r\n throw new Error('sizeLimitMb expects: positive number');\r\n this._sizeLimitMb = value;\r\n this.validation.next();\r\n }\r\n _sizeLimitMb = 0;\r\n\r\n @Input() get multiple() {\r\n return this._multiple;\r\n }\r\n set multiple(value: boolean) {\r\n this._multiple = value === true;\r\n this.validation.next();\r\n }\r\n _multiple = false;\r\n\r\n @Input() showSize = false;\r\n\r\n model: '' | null = null;\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n get fileNames(): string {\r\n if (this.ngControl.value instanceof FileList)\r\n return Object.values(this.ngControl.value).map(file => file.name).join(', ');\r\n\r\n if (this.ngControl.value instanceof File)\r\n return this.ngControl.value.name;\r\n\r\n return '';\r\n }\r\n\r\n get sizeLimit(): string {\r\n return this.sizeLimitMb < 1\r\n ? `${this.sizeLimitMb * 1000} KB`\r\n : `${this.sizeLimitMb} MB`;\r\n }\r\n\r\n onFileChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.onChange(\r\n target.files?.length\r\n ? target.files\r\n : null\r\n );\r\n }\r\n\r\n onChange(_model: FileList | null) { }\r\n registerOnChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n if (value === undefined)\r\n value = null;\r\n\r\n if (value !== null && !(value instanceof FileList))\r\n throw new Error('control value must be: File or null');\r\n // todo\r\n // this.model = value;\r\n }\r\n\r\n private acceptedTypesValidator(acceptedTypes: string[]): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value !== null\r\n && control.value instanceof FileList\r\n && !Object.values(control.value).map(item => item.type.toLowerCase())\r\n .every(type => acceptedTypes.includes(type.toLowerCase()))\r\n ? { acceptedTypes: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private invalidValidator(multiple: boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value !== null\r\n && (!(control.value instanceof FileList) || (control.value.length > 1 && !multiple))\r\n ? { invalid: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private sizeLimitMbValidator(sizeLimitMb: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value instanceof FileList\r\n && Object.values(control.value).map(item => item.size / 1024 / 1024)\r\n .reduce((acc, cur) => acc + cur, 0) > sizeLimitMb\r\n ? { sizeLimitMb: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator(this.multiple)\r\n ];\r\n\r\n if (this.acceptedTypes.length > 0)\r\n validators.push(this.acceptedTypesValidator(this.acceptedTypes));\r\n\r\n if (this.sizeLimitMb > 0)\r\n validators.push(this.sizeLimitMbValidator(this.sizeLimitMb));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label [class.required]=\"required\">\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-center\">\r\n <div>\r\n <button\r\n class=\"white-space-nowrap\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n [class.active]=\"ngControl.value !== null\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <icon\r\n type=\"folder\"\r\n size=\"1rem\"\r\n class=\"me-2\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n Choose {{multiple ? 'Files' : 'File'}}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"ngControl.value\"\r\n class=\"ml-2\"\r\n >\r\n {{fileNames}}\r\n </div>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['acceptedTypes']\">\r\n valid types are {{acceptedTypes.join(', ')}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['sizeLimitMb']\">\r\n max file size is {{sizeLimit}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->\r\n\r\n<input\r\n [(ngModel)]=\"model\"\r\n #fileInput\r\n type=\"file\"\r\n [accept]=\"acceptedTypes.join()\"\r\n [multiple]=\"multiple\"\r\n [id]=\"id\"\r\n (change)=\"onFileChange($event)\"\r\n/>","import { Component, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-number',\r\n templateUrl: './number.component.html',\r\n styleUrls: [\r\n './number.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class NumberComponent extends ControlDirective implements ControlValueAccessor {\r\n @Input()\r\n get min() {\r\n return this._min;\r\n }\r\n set min(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[min] expects: number');\r\n this._min = value;\r\n this.validation.next();\r\n }\r\n _min = 0;\r\n\r\n @Input()\r\n get max() {\r\n return this._max;\r\n }\r\n set max(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[max] expects: number');\r\n this._max = value;\r\n this.validation.next();\r\n }\r\n _max = 9;\r\n\r\n @Input()\r\n get step() {\r\n return this._step;\r\n }\r\n set step(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[step] expects: number');\r\n this._step = value;\r\n this.mustBeInteger = Number.isInteger(this._step);\r\n }\r\n _step = 1;\r\n\r\n mustBeInteger = true;\r\n readonly sizePadding = 5;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation.subscribe(() => this.validate());\r\n this.validation.next();\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n _model: number | null = null;\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: number | null) {\r\n this._model = value;\r\n this.onChange(this._model);\r\n }\r\n\r\n get isDisabledAdd() {\r\n return this.isDisabled === true\r\n || this.model !== null\r\n && this.model + this.step > this.max;\r\n }\r\n\r\n get isDisabledSubtract() {\r\n return this.isDisabled === true\r\n || this._model !== null\r\n && this._model - this.step < this.min;\r\n }\r\n\r\n get maxDigitSize() {\r\n return Math.max(\r\n this._step.toString().length,\r\n this._max.toString().length,\r\n this._min.toString().length\r\n );\r\n }\r\n\r\n onBeforeinput(e: Event) {\r\n const event = e as InputEvent;\r\n if (event.data === null)\r\n return;\r\n const isDigit = /\\d/.test(event.data);\r\n const isMinus = event.data === '-';\r\n const isMinusAllowed = this.min < 0;\r\n const isBlockedNonDigit = !isDigit && !(isMinus && isMinusAllowed)\r\n const isPastMax = Number((this._model || '') + event.data) > this.max;\r\n if (isBlockedNonDigit || isPastMax)\r\n event.preventDefault();\r\n }\r\n\r\n add(e: HTMLInputElement) {\r\n if (this.model === null) {\r\n this.model = this.max;\r\n return;\r\n }\r\n\r\n e.stepUp();\r\n this.model = e.valueAsNumber;\r\n }\r\n\r\n subtract(e: HTMLInputElement) {\r\n if (this.model === null) {\r\n this.model = this.min;\r\n return;\r\n }\r\n\r\n e.stepDown();\r\n this.model = e.valueAsNumber;\r\n }\r\n\r\n onChange(_model: number | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: number | null) {\r\n if (value === undefined)\r\n value = null;\r\n\r\n if (typeof value === 'string')\r\n value = parseFloat(value);\r\n\r\n if (value === null || isNumber(value))\r\n this._model = value;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n Validators.min(this.min),\r\n Validators.max(this.max)\r\n ];\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label [class.required]=\"required\">\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"model\"\r\n #numberInput\r\n class=\"d-flex align-items-center\"\r\n type=\"number\"\r\n [size]=\"maxDigitSize + sizePadding\"\r\n [class.active]=\"_model !== null\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n (beforeinput)=\"onBeforeinput($event)\"\r\n />\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Subtract\"\r\n type=\"button\"\r\n [disabled]=\"isDisabledSubtract\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n (blur)=\"onTouched()\"\r\n (click)=\"subtract(numberInput)\"\r\n >\r\n <icon\r\n type=\"minus\"\r\n size=\"1rem\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </button>\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Add\"\r\n type=\"button\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [disabled]=\"isDisabledAdd\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n (blur)=\"onTouched()\"\r\n (click)=\"add(numberInput)\"\r\n >\r\n <icon\r\n type=\"plus\"\r\n size=\"1rem\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['min']\">\r\n minimum number is {{min}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['max']\">\r\n maximum number is {{max}}\r\n </li>\r\n</ul> -->","import { Component, Input } from '@angular/core';\r\nimport { primitive } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-readonly',\r\n templateUrl: './readonly.component.html',\r\n styleUrls: [\r\n './readonly.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ReadonlyComponent {\r\n @Input() model?: primitive;\r\n\r\n constructor() { }\r\n}\r\n","<label>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"readonly p-2\">\r\n {{model}}\r\n</div>","import { Component, ElementRef, HostListener, Input, OnDestroy, Output, Renderer2, Self, ViewChild, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: [\r\n './text.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class TextComponent extends ControlDirective implements OnDestroy, ControlValueAccessor {\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(v: string) {\r\n const value = v as unknown;\r\n if (typeof value !== 'string')\r\n throw new Error('[placeholder] expects: string');\r\n this._placeholder = value;\r\n }\r\n _placeholder = '';\r\n\r\n @Input()\r\n get minLength() {\r\n return this._minLength;\r\n }\r\n set minLength(value: string | number | null | undefined) {\r\n if (typeof value === 'string')\r\n value = parseInt(value, 10);\r\n if (value === undefined)\r\n value = null;\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)\r\n throw new Error('[minLength] expects: positive integer');\r\n this._minLength = value;\r\n this.validation.next();\r\n }\r\n _minLength: number | null = null;\r\n\r\n @Input()\r\n get maxLength() {\r\n return this._maxLength;\r\n }\r\n set maxLength(value: string | number | null | undefined) {\r\n if (typeof value === 'string')\r\n value = parseInt(value, 10);\r\n if (value === undefined)\r\n value = null;\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)\r\n throw new Error('[maxLength] expects: positive integer');\r\n this._maxLength = value;\r\n this.validation.next();\r\n }\r\n _maxLength: number | null = null;\r\n\r\n @Input()\r\n isSpellCheck = false;\r\n\r\n @Input()\r\n set isGrow(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('[isGrow] expects: boolean');\r\n this._isGrow = value;\r\n }\r\n _isGrow = false;\r\n\r\n @Input() rows = 3;\r\n\r\n @Output() onBlur = new EventEmitter<FocusEvent>();\r\n @Output() onFocus = new EventEmitter<FocusEvent>();\r\n\r\n @ViewChild('textarea') textareaElement?: ElementRef;\r\n @ViewChild('textareaHidden') textareaHiddenElement?: ElementRef;\r\n\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: string | null) {\r\n if (value === '')\r\n value = null;\r\n\r\n this._model = value;\r\n\r\n this.onChange(this._model);\r\n setTimeout(() => this.setTextareaHeight());\r\n }\r\n _model: string | null = null;\r\n\r\n id = `_${Math.random().toString(36).substring(2, 11)}`;\r\n resizeSubject = new Subject<void>();\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n private renderer: Renderer2,\r\n ) {\r\n super();\r\n this.validation.subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n this.resizeSubject\r\n .pipe(debounceTime(300))\r\n .subscribe(() => this._isGrow && this.setTextareaHeight());\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.resizeSubject.complete();\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.resizeSubject.next();\r\n }\r\n\r\n setTextareaHeight() {\r\n if (!this.textareaElement || !this.textareaHiddenElement)\r\n return;\r\n const textarea = this.textareaElement.nativeElement as HTMLElement;\r\n const textareaHidden = this.textareaHiddenElement.nativeElement as HTMLElement;\r\n this.renderer.setStyle(textareaHidden, 'width', `calc(${textarea.scrollWidth}px - 1em)`);\r\n this.renderer.setStyle(textareaHidden, 'height', 'auto');\r\n this.renderer.setStyle(textarea, 'height', `${textareaHidden.scrollHeight}px`);\r\n }\r\n\r\n onChange(_model: string | null) { }\r\n registerOnChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(v: string | null): void {\r\n let value = v as unknown;\r\n if (value === '' || value === undefined)\r\n value = null;\r\n if (isNumber(value))\r\n value = value.toString();\r\n if (value === null || typeof value === 'string') {\r\n this._model = value;\r\n setTimeout(() => this.setTextareaHeight());\r\n }\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (this._minLength != null)\r\n validators.push(Validators.minLength(this._minLength));\r\n\r\n if (this._maxLength != null)\r\n validators.push(Validators.maxLength(this._maxLength));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex\">\r\n <input\r\n *ngIf=\"!_isGrow\"\r\n type=\"text\"\r\n [(ngModel)]=\"model\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n />\r\n <textarea\r\n *ngIf=\"_isGrow\"\r\n #textarea\r\n [(ngModel)]=\"model\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [rows]=\"rows\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n ></textarea>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"_isGrow\"\r\n class=\"d-flex\"\r\n>\r\n <textarea\r\n #textareaHidden\r\n [ngModel]=\"model\"\r\n class=\"hidden flex-1\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['minlength']\">\r\n minimum length is {{minLength}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['maxLength']\">\r\n maximum length is {{maxLength}}\r\n </li>\r\n</ul> -->","import { Component, ElementRef, HostBinding, HostListener, Input, Self, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { ItemDirective } from '../../directives';\r\nimport { Item } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: [\r\n './select.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class SelectComponent extends ItemDirective implements ControlValueAccessor {\r\n @ViewChild('dropGroup') dropGroup!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dropup') dropup!: ElementRef<HTMLDialogElement>;\r\n @ViewChild('dropdown') dropdown!: ElementRef<HTMLDialogElement>;\r\n\r\n @Input()\r\n @HostBinding('style.--dropHeightPx')\r\n dropHeightPx = 200;\r\n\r\n get searchTerm(): string {\r\n return this._searchTerm;\r\n }\r\n set searchTerm(value: string) {\r\n this._searchTerm = value;\r\n this.filteredItems = value\r\n ? this._items.filter(item => item.value.toLowerCase().includes(value.toLowerCase()))\r\n : this._items;\r\n }\r\n _searchTerm = '';\r\n\r\n isDropdownCloseToBottom = false;\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n constructor(\r\n @Self() public override ngControl: NgControl,\r\n private hostElement: ElementRef,\r\n ) {\r\n super(ngControl);\r\n }\r\n\r\n get activeItemValues(): string {\r\n return this._items\r\n .filter(item => this._model.includes(item.key))\r\n .map(item => item.value)\r\n .join(', ');\r\n }\r\n\r\n get isSelectedAll(): boolean {\r\n return this._items.every(item => this._model.includes(item.key));\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n onGlobalClick(event: MouseEvent) {\r\n if (!this.hostElement.nativeElement.contains(event.target))\r\n this.closeDropdown();\r\n }\r\n\r\n onClickGroup() {\r\n this.closeDropdown();\r\n if (this.dropGroup.nativeElement.getBoundingClientRect().bottom + this.dropHeightPx > window.innerHeight) {\r\n this.dropup.nativeElement.show();\r\n } else {\r\n this.dropdown.nativeElement.show();\r\n }\r\n }\r\n\r\n onClick(item: Item) {\r\n this._model = this._model.filter(key => this._items.map(item => item.key).includes(key))\r\n\r\n if (this._model.includes(item.key)) {\r\n if (this.required === true && this._model.length === 1)\r\n return;\r\n\r\n this.model = this._model.filter(key => key !== item.key);\r\n return;\r\n }\r\n\r\n if (!this.isMultiple && this._model.length === 1) {\r\n this.model = [item.key];\r\n return;\r\n }\r\n\r\n this.model = [...this._model, item.key];\r\n }\r\n\r\n onClickSelectAll() {\r\n this.model = this.isSelectedAll\r\n ? []\r\n : this._items.map(item => item.key);\r\n }\r\n\r\n closeDropdown() {\r\n this.searchTerm = '';\r\n this.dropdown.nativeElement.close();\r\n this.dropup.nativeElement.close();\r\n }\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"select_{{id}}\"\r\n [class.required]=\"required\"\r\n >\r\n <ng-content></ng-content>\r\n </label>\r\n <div>\r\n <ng-content select=\"[rightAligned]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div class=\"position-relative\">\r\n <dialog #dropup>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n </dialog>\r\n</div>\r\n\r\n<div\r\n #dropGroup\r\n class=\"d-flex align-items-stretch\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"select_{{id}}\"\r\n>\r\n <button\r\n class=\"flex-1 br-start text-start\"\r\n type=\"button\"\r\n [class.active]=\"_model.length > 0\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n {{activeItemValues}}\r\n </button>\r\n <button\r\n class=\"d-flex br-end d-flex align-items-center justify-content-center\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <icon\r\n size=\"1rem\"\r\n type=\"chevron\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"['current']\"\r\n [class.up]=\"dropup.open\"\r\n [class.down]=\"dropdown.open\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<dialog #dropdown>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n</dialog>\r\n\r\n<ng-template #dropContent>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"d-flex gap-2 align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"searchTerm\"\r\n class=\"flex-1 br-start br-end\"\r\n />\r\n <button\r\n *ngIf=\"_isMultiple\"\r\n type=\"button\"\r\n class=\"br-start br-end\"\r\n (click)=\"onClickSelectAll()\"\r\n >\r\n {{isSelectedAll ? 'Deselect' : 'Select'}} All\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column\">\r\n <button\r\n *ngFor=\"let item of filteredItems\"\r\n class=\"d-flex flex-1 align-items-center text-start gap-2\"\r\n [disabled]=\"isDisabled\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n (click)=\"onClick(item)\"\r\n >\r\n <div\r\n class=\"jo-button {{isMultiple ? 'br-20' : 'br-50'}}\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [class.disabled]=\"isDisabled\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n >\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n size=\"1rem\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n {{item.value}}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IconModule } from '@joster-dev/icon';\r\n\r\nimport {\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n SelectComponent,\r\n} from './components';\r\nimport {\r\n BorderRadiusDirective,\r\n ControlDirective,\r\n ItemDirective,\r\n} from './directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n ControlDirective,\r\n ItemDirective,\r\n SelectComponent,\r\n BorderRadiusDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IconModule,\r\n RouterModule,\r\n ],\r\n exports: [\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n SelectComponent,\r\n ]\r\n})\r\nexport class ChaosControlModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChaosControlService {\r\n\r\n constructor() { }\r\n}\r\n","// Public API Surface of chaos-control\r\n\r\nexport * from './lib/chaos-control.module';\r\nexport * from './lib/components';\r\nexport * from './lib/models';\r\nexport * from './lib/chaos-control.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
@@ -6,18 +6,23 @@ import * as i0 from "@angular/core";
6
6
  export declare class SelectComponent extends ItemDirective implements ControlValueAccessor {
7
7
  ngControl: NgControl;
8
8
  private hostElement;
9
- dropdownMaxHeight: string;
9
+ dropGroup: ElementRef<HTMLDivElement>;
10
+ dropup: ElementRef<HTMLDialogElement>;
11
+ dropdown: ElementRef<HTMLDialogElement>;
12
+ dropHeightPx: number;
13
+ get searchTerm(): string;
10
14
  set searchTerm(value: string);
11
15
  _searchTerm: string;
12
- get showDropdown(): boolean;
13
- set showDropdown(value: boolean);
14
- _showDropdown: boolean;
15
16
  isDropdownCloseToBottom: boolean;
17
+ id: string;
16
18
  constructor(ngControl: NgControl, hostElement: ElementRef);
19
+ get activeItemValues(): string;
20
+ get isSelectedAll(): boolean;
17
21
  onGlobalClick(event: MouseEvent): void;
18
- onClickSearch(): void;
19
- onFocusSearch(): void;
22
+ onClickGroup(): void;
20
23
  onClick(item: Item): void;
24
+ onClickSelectAll(): void;
25
+ closeDropdown(): void;
21
26
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, [{ self: true; }, null]>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "jo-select", never, { "dropdownMaxHeight": { "alias": "dropdownMaxHeight"; "required": false; }; }, {}, never, ["*"], false, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "jo-select", never, { "dropHeightPx": { "alias": "dropHeightPx"; "required": false; }; }, {}, never, ["*", "[rightAligned]"], false, never>;
23
28
  }
@@ -15,6 +15,7 @@ export declare class ItemDirective extends ControlDirective implements ControlVa
15
15
  [key: string]: unknown;
16
16
  }[]);
17
17
  _items: Item[];
18
+ filteredItems: Item[];
18
19
  get limit(): number;
19
20
  set limit(value: number);
20
21
  _limit: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joster-dev/chaos-control",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -35,7 +35,8 @@
35
35
  "peerDependencies": {
36
36
  "@angular/common": "^18.0.0",
37
37
  "@angular/core": "^18.0.0",
38
- "@joster-dev/icon": "^0.3.1"
38
+ "@joster-dev/icon": "^0.1.0",
39
+ "@joster-dev/style": "^0.1.1"
39
40
  },
40
41
  "dependencies": {
41
42
  "tslib": "^2.3.0"
@@ -1,8 +1,10 @@
1
- @import "./variables.scss";
1
+ @use "sass:map";
2
+ @use "@joster-dev/style/scss/all.scss";
3
+ @use "@joster-dev/style/scss/variables.scss" as variables;
2
4
 
3
5
  label {
4
6
  display: block;
5
- padding-bottom: $md;
7
+ padding-bottom: map.get(variables.$sizes, "md");
6
8
  font-weight: bold;
7
9
 
8
10
  &:empty {
@@ -20,64 +22,7 @@ ul {
20
22
  margin: 0;
21
23
  padding: 0;
22
24
 
23
- >li {
24
- padding-top: $sm;
25
- }
26
- }
27
-
28
- a:not(.jo-ignore),
29
- button:not(.jo-ignore),
30
- .button,
31
- input,
32
- textarea {
33
- color: inherit;
34
- background: transparent;
35
- border-width: 0.15em;
36
- border-style: outset;
37
- border-color: currentColor;
38
- padding: $md;
39
- margin: 0;
40
- font-size: 1em;
41
- // transition: all 700ms ease;
42
- line-height: 1em;
43
-
44
- &:active,
45
- &.active {
46
- border-style: inset;
47
- }
48
-
49
- &:disabled,
50
- &.disabled {
51
- cursor: not-allowed;
52
- border-style: solid;
53
- box-shadow: none;
54
- opacity: 0.5;
55
- }
56
-
57
- &.invalid {
58
- // animation: 3s ease 0s infinite invalid-border;
59
- }
60
-
61
- &:focus {
62
- // outline: 0.15em solid transparent;
63
- // box-shadow: 0 0 0.1em 0 currentColor;
64
- }
65
- }
66
-
67
- a,
68
- button,
69
- .button {
70
- cursor: pointer;
71
- }
72
-
73
- @keyframes invalid-border {
74
-
75
- 0%,
76
- 100% {
77
- border-style: inset;
78
- }
79
-
80
- 50% {
81
- border-style: outset;
82
- }
25
+ // >li {
26
+ // padding-top: map.get($sizes, "sm");
27
+ // }
83
28
  }
@@ -1,87 +0,0 @@
1
- @import "./variables.scss";
2
-
3
- .d-flex {
4
- display: flex;
5
- }
6
-
7
- .align-items-start {
8
- align-items: flex-start;
9
- }
10
-
11
- .align-items-center {
12
- align-items: center;
13
- }
14
-
15
- .align-items-stretch {
16
- align-items: stretch;
17
- }
18
-
19
- .justify-content-between {
20
- justify-content: space-between;
21
- }
22
-
23
- .flex-wrap {
24
- flex-wrap: wrap;
25
- }
26
-
27
- .flex-column {
28
- flex-direction: column;
29
- }
30
-
31
- .flex-1 {
32
- flex: 1;
33
- }
34
-
35
- .flex-2 {
36
- flex: 2;
37
- }
38
-
39
- .flex-3 {
40
- flex: 3;
41
- }
42
-
43
- .align-self-center {
44
- align-self: center;
45
- }
46
-
47
- .margin-right-1 {
48
- margin-right: $md;
49
- }
50
-
51
- .margin-right-2 {
52
- margin-right: $lg;
53
- }
54
-
55
- .margin-left-1 {
56
- margin-left: $md;
57
- }
58
-
59
- .margin-left-2 {
60
- margin-left: $lg;
61
- }
62
-
63
- .border-radius-right {
64
- border-top-right-radius: $md;
65
- border-bottom-right-radius: $md;
66
- }
67
-
68
- .border-radius-left {
69
- border-top-left-radius: $md;
70
- border-bottom-left-radius: $md;
71
- }
72
-
73
- .white-space-nowrap {
74
- white-space: nowrap;
75
- }
76
-
77
- .text-right {
78
- text-align: right;
79
- }
80
-
81
- .text-left {
82
- text-align: left;
83
- }
84
-
85
- .text-center {
86
- text-align: center;
87
- }
@@ -1,3 +0,0 @@
1
- $sm: 0.25em;
2
- $md: 0.5em;
3
- $lg: 1em;