Skip to content

Commit

Permalink
refactor(variant.property-set()): handle multiple properties.
Browse files Browse the repository at this point in the history
  • Loading branch information
sciborrudnicki committed Jan 2, 2024
1 parent 305e6c1 commit 8081d34
Showing 1 changed file with 36 additions and 18 deletions.
54 changes: 36 additions & 18 deletions variant/property/_property.set.function.scss
Original file line number Diff line number Diff line change
@@ -1,29 +1,47 @@
// Sass.
@use 'sass:list';

// Modules.
@use '../../map';

// Functions.
@use '../../property/property.name.function' as *;
@use '../../list/list.append.function' as list-append;
@use '../../property/property.name.function' as property-name;

// Status: TODO:
// The `property.set()` function.
// @param `$property`
// @arbitrary `$properties...`
// @returns
@function set($property) {
@return map.set(map.deep-merge((
pre-base: null,
base: null,
middle: null,
attribute: null,
prop-attribute: null,
value: null,
@function set($property, $properties...) {
$properties: list-append.append([], $property, comma, $properties...);
$i: 1;
@each $property in $properties {
$properties: list.set-nth($properties, $i, map.set(
map.deep-merge((
base: null,
middle: null,
attribute: null,
prop-attribute: null,

// -
name: null,
), $property), name, name(
map.get-any($property, pre-base, null),
map.get-any($property, base, null),
map.get-any($property, middle, null),
map.get-any($property, attribute, null),
map.get-any($property, prop-attribute, null),
));
// Set name based on properties above.
name: null,
), $property),
name,
property-name.name(
map.get-any($property, base, null),
map.get-any($property, middle, null),
map.get-any($property, attribute, null),
map.get-any($property, prop-attribute, null)
)
));
$i: $i + 1;
}
@return if(list.length($properties) == 1, list.nth($properties, 1), $properties);
}

// Argument structure
// $property: (base: null, middle: null, attribute: null, prop-attribute: null)

// Examples.
// @debug set((base: border, middle: top, attribute: left, prop-attribute: radius)); // (base: border, middle: top, attribute: left, prop-attribute: radius, name: border-top-left-radius)

0 comments on commit 8081d34

Please sign in to comment.