Size: a a a

2021 March 02

КС

Кирилл Спасибович... in Svelte [svelt]
<svelte:options logicless />

<script>
 export let label = '';
</script>

<label class="input">
 <span>{label}</span><input :root />
</label>

<style>
 .input {
   display: block;
 }
</style>
источник

КС

Кирилл Спасибович... in Svelte [svelt]
шо думаете ?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
можно в принципе лабель на слот заменить
источник

КС

Кирилл Спасибович... in Svelte [svelt]
чтобы никаких пропсов вообще не было
источник

КС

Кирилл Спасибович... in Svelte [svelt]
чтобы это был как какой-то шаблончик просто
источник

КС

Кирилл Спасибович... in Svelte [svelt]
<svelte:options logicless />

<label class="input">
 <span><slot /></span><input :root />
</label>

<style>
 .input {
   display: block;
 }
</style>
источник

КС

Кирилл Спасибович... in Svelte [svelt]
типа вот так
источник

DK

Dan Kozlov in Svelte [svelt]
Кирилл Спасибович
<svelte:options logicless />

<script>
 export let label = '';
</script>

<label class="input">
 <span>{label}</span><input :root />
</label>

<style>
 .input {
   display: block;
 }
</style>
А что такое :root?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
<LabeledInput class="something" type="number" bind:value={somevar}>
 Label here
</LabeledInput>
ну это то куда полетят все эти классы тайпы и так далее
источник

КС

Кирилл Спасибович... in Svelte [svelt]
типа рестпропс
источник

КС

Кирилл Спасибович... in Svelte [svelt]
но по сути это даже не компонент, а просто какой-то макрос
источник

КС

Кирилл Спасибович... in Svelte [svelt]
даже вот как-то так
источник

DK

Dan Kozlov in Svelte [svelt]
Кирилл Спасибович
чтобы это был как какой-то шаблончик просто
Рфц хз, я видел ишью на тему снижения оверхеда компонента, если у него нет тега скрипт — его ж можно по уму просто через innerHtml просто вставлять и все.
Но это все итерационные улучшения, которые почему-то редко получают любовь от мейнтейнеров.

С пропсами много не сэкономишь, нужна же реактивность для них все равно.
источник

AS

Alexey Schebelev in Svelte [svelt]
Ну по хорошему если нет скрипта блока, то компилер сам должен делать минимальный бойлерплейт.
источник

AS

Alexey Schebelev in Svelte [svelt]
:root - я уже где-то предлагал идею anchors которая бы решила много проблем, как прокидывания классов, стилей и экшенов в компонент
источник

AS

Alexey Schebelev in Svelte [svelt]
Переслано от Alexey Schebelev
Моё предложение по иному принципу по добавлению классов из парента. Кроме классов в компонент наверное можно style тоже передать. А еще неплохо бы и экшены тоже. Например, сейчас ни в Малине, ни в Свелт никак не навесить экшн на элемент внутри компонента. Например захочется на компонент кастомного инпута из какой-либо UI библиотеки навесить экшн цепляющий maskinput, и никак.

Все это объединяет, то что нужно знать на какую DOM-ноду навешивать класс, стиль или экшн. Поэтому предлагаю ввести так называемый Anchor(якорь), с помощью которого в компоненте можно указать на какую ноду навешивать поступающие в компонент классы, стили и экшены. Кроме того можно сделать якоря в компоненте с разными именами, тогда отдельно можно задать стили как для враппера, так и для поля ввода(например). Как и прочие директивы на элементах, якорь будет иметь свой значок - пусть "^".

// Card.xht
<div ^root>
  <div ^header>{title}</div>
  <slot/>
</div>

// App.xht
<Card title="hello" style="margin: 20px" class:header="red" />


Якорь ^root значит - что туда будут прицепляться переданные классы, стили и экшены, по-дефолту.
источник

AS

Alexey Schebelev in Svelte [svelt]
в малине писал
источник

КС

Кирилл Спасибович... in Svelte [svelt]
@dkzlv а как ты борол вот такое в тсе:

<script lang="ts">
 export let value: number | null = null;
</script>

<input type="number" bind:value />

Type 'number | null' is not assignable to type 'string | number | string[] | undefined'.
~                             Type 'null' is not assignable to type 'string | number | string[] | undefined'.


использовал number | undefined тип или как ?
источник

DK

Dan Kozlov in Svelte [svelt]
Кирилл Спасибович
@dkzlv а как ты борол вот такое в тсе:

<script lang="ts">
 export let value: number | null = null;
</script>

<input type="number" bind:value />

Type 'number | null' is not assignable to type 'string | number | string[] | undefined'.
~                             Type 'null' is not assignable to type 'string | number | string[] | undefined'.


использовал number | undefined тип или как ?
Да, использую undefined, для меня он мало отличим в таких кейсах от null :)
источник

КС

Кирилл Спасибович... in Svelte [svelt]
причем в самом браузере там null если пустое поле
источник